Processing Video Requests (Windows 2000 Model)

All I/O requests that originate in a display driver's call to EngDeviceIoControl are mapped from IRP codes (see IRP Major Function Codes) to VRPs by the video port driver. The video port driver then calls the corresponding miniport driver's HwVidStartIO function with a pointer to each VIDEO_REQUEST_PACKET structure that it sets up. All VRPs sent to HwVidStartIO have the IoControlCode member set to an IOCTL_VIDEO_XXX.

The video port driver also manages the synchronization of incoming requests for all video miniport drivers by sending each miniport driver's HwVidStartIO routine only one VRP for processing at a time. HwVidStartIO owns each input VRP until the miniport driver completes the requested operation and returns control. Until a miniport driver completes the current VRP, the video port driver holds on to any outstanding IRP codes that the I/O manager sends in response to subsequent calls to EngDeviceIoControl by the corresponding display driver.

On receipt of a video request, HwVidStartIO must examine the VRP, process the video request on the adapter, set the appropriate status and other information in the VRP, and return TRUE.