Call With
EAX = VDD_REGISTER_DISPLAY_DRIVER_INFO equate (83H)
EBX = Magic Number
All other registers can contain private communication information which will be passed directly to the mini-VDD function REGISTER_DISPLAY_DRIVER.
Return Values
Whatever the mini-VDD and the display driver have arranged between themselves.
Remarks
This routine sets up the close communication between the display driver and the mini-VDD. This function is sometimes called before and after the display driver sets the hardware into the Windows hi-res state. You could setup sub-functions of this call in the ECX register and call each of the sub-functions any time during display driver initialization depending on the needs of the display subsystem.
One possible use for this function would be for the display driver to pass a Selector:Offset of one or more flags to the mini-VDD. Suppose that the display hardware cannot change its hardware state in the middle of a memory to screen bitblt and that the VDD has to wait until this operation is finished before making a hardware state change such as running a windowed 4 Plane VGA application. The display driver could pass the address of an "InSrcBLT" flag to the mini-VDD in the ES:DI registers. The mini-VDD would then convert this Selector:Offset address to a linear address by means of the VMM function Map_Flat. Then the mini-VDD would pass this linear address to the Main VDD function VDD_Set_Sleep_Flag_Addr.
Another possible use for this function would be for the display driver to pass the address of a non-VFLATD screen selector to the mini-VDD. The mini-VDD could use this selector to access Memory Mapped Registers or the video RAM as a flat linear frame buffer. In order for windowed VGA virtualization to correctly take place, the Main VDD has to know about all ways that the display driver will access the video hardware (for example, via a hardware BLTer using I/O ports, via a hardware BLTer using memory mapped registers, via a flat linear selector that the display has allocated independently from VFLATD, or via a VFLATD selector). Thus, the display driver could pass down the selector of its memory mapped or flat linear selector to the mini-VDD via this function. The mini-VDD would then call the Main VDD function VDD_Register_Extra_Screen_Selector in order to register this selector.
Yet another possible use for this function would be to allow the mini-VDD to partially or fully place the video hardware into hi-res mode. It may be desirable to do this if port trapping by the VMM is of concern as it is in time-critical programming of the video hardware.
This function calls the mini-VDD function REGISTER_DISPLAY_DRIVER.
See also VDD_Set_Sleep_Flag_Addr, REGISTER_DISPLAY_DRIVER, VDD_Register_Extra_Screen_Selector