Video Miniport Driver Initialization (Windows 2000 Model)
Video miniport driver initialization occurs after the NT kernel, HAL, and core drivers, such as the PCI bus driver, are loaded and initialized. The basic system initialization sequence occurs as follows:
The NT kernel and HAL are loaded and initialized.
Core drivers such as the PCI bus driver are loaded and initialized.
The PCI bus driver obtains PCI resource information and the device ID and vendor ID from each of its children's PCI configuration spaces and reports this information back to the system.
If the PnP manager recognizes the device and vendor IDs, the I/O manager loads the corresponding video miniport driver and the video port driver from a known location. If the PnP manager does not recognize the IDs, it prompts the user for the location of the miniport driver and loads it from this location.
The I/O manager calls the miniport driver's DriverEntry routine with two system-supplied input pointers. DriverEntry allocates and initializes a VIDEO_HW_INITIALIZATION_DATA structure with driver-specific and adapter-specific values, including pointers to the miniport driver's other entry points. DriverEntry must also claim any legacy resources, which are those resources not listed in the device's PCI configuration space but that are decoded by the device. See Claiming Legacy Resources for details.
The miniport driver's DriverEntry function calls VideoPortInitialize. VideoPortInitialize performs those aspects of miniport driver initialization that are common to all miniport drivers. For example, for non-PnP drivers, VideoPortInitialize verifies portions of the miniport driver-initialized VIDEO_HW_INITIALIZATION_DATA structure, initializes some of the public members of the system-created device object, allocates memory for the device extension of the device object, and collects and stores pertinent information in the device extension. See Video Miniport Driver's Device Extension (Windows 2000 Model) for more details about device extensions. For PnP drivers, the device object-related actions occur at a later time.
When VideoPortInitialize returns, DriverEntry propagates the return value of VideoPortInitialize back to the caller. Miniport driver writers should make no assumptions about the value returned by VideoPortInitialize.
At this point, the system has loaded and initialized the video miniport driver. The next step is for the PnP manager to start the device. See Starting the Device of the Video Miniport Driver for details.