ULONG NTAPI DriverEntry(IN PVOID Context1, IN PVOID Context2) { VIDEO_HW_INITIALIZATION_DATA InitData; /* Zero initialization structure and array of extensions, one per screen */ DPRINT1("VMX-SVGAII Loading...\n"); VideoPortZeroMemory(VmxDeviceExtensionArray, sizeof(VmxDeviceExtensionArray)); VideoPortZeroMemory(&InitData, sizeof(InitData)); /* Setup the initialization structure with VideoPort */ InitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); InitData.HwFindAdapter = VmxFindAdapter; InitData.HwInitialize = VmxInitialize; InitData.HwInterrupt = VmxInterrupt; InitData.HwStartIO = VmxStartIO; InitData.HwResetHw = VmxResetHw; InitData.HwGetPowerState = VmxGetPowerState; InitData.HwSetPowerState = VmxSetPowerState; InitData.HwGetVideoChildDescriptor = VmxGetVideoChildDescriptor; InitData.AdapterInterfaceType = PCIBus; InitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); InitData.HwDeviceExtensionSize = sizeof(HW_DEVICE_EXTENSION); return VideoPortInitialize(Context1, Context2, &InitData, NULL); }
ULONG NTAPI DriverEntry(IN PVOID Context1, IN PVOID Context2) { VIDEO_HW_INITIALIZATION_DATA InitData; VideoPortZeroMemory(&InitData, sizeof(InitData)); InitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); InitData.HwFindAdapter = VBEFindAdapter; InitData.HwInitialize = VBEInitialize; InitData.HwStartIO = VBEStartIO; InitData.HwResetHw = VBEResetHw; InitData.HwGetPowerState = VBEGetPowerState; InitData.HwSetPowerState = VBESetPowerState; InitData.HwGetVideoChildDescriptor = VBEGetVideoChildDescriptor; InitData.HwDeviceExtensionSize = sizeof(VBE_DEVICE_EXTENSION); return VideoPortInitialize(Context1, Context2, &InitData, NULL); }
ULONG NTAPI DriverEntry(IN PVOID Context1, IN PVOID Context2) { VIDEO_HW_INITIALIZATION_DATA InitData; VideoPortZeroMemory(&InitData, sizeof(InitData)); InitData.AdapterInterfaceType = PCIBus; InitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); InitData.HwFindAdapter = XboxVmpFindAdapter; InitData.HwInitialize = XboxVmpInitialize; InitData.HwStartIO = XboxVmpStartIO; InitData.HwResetHw = XboxVmpResetHw; InitData.HwGetPowerState = XboxVmpGetPowerState; InitData.HwSetPowerState = XboxVmpSetPowerState; InitData.HwDeviceExtensionSize = sizeof(XBOXVMP_DEVICE_EXTENSION); return VideoPortInitialize(Context1, Context2, &InitData, NULL); }
ULONG NTAPI DriverEntry(IN PVOID Context1, IN PVOID Context2) { VIDEO_HW_INITIALIZATION_DATA InitData; VideoPortZeroMemory(&InitData, sizeof InitData); InitData.HwInitDataSize = sizeof(InitData); /* FIXME: Fill in InitData members */ InitData.StartingDeviceNumber = 0; /* Export driver entry points... */ InitData.HwFindAdapter = VGAFindAdapter; InitData.HwInitialize = VGAInitialize; InitData.HwStartIO = VGAStartIO; /* InitData.HwInterrupt = VGAInterrupt; */ InitData.HwResetHw = VGAResetHw; /* InitData.HwTimer = VGATimer; */ return VideoPortInitialize(Context1, Context2, &InitData, NULL); }
/* Video Miniport Driver entry point */ ULONG DriverEntry(IN PVOID Context1, IN PVOID Context2) { PAGED_CODE(); int irc = RTR0Init(0); if (RT_FAILURE(irc)) { LogRel(("VBoxMP::failed to init IPRT (rc=%#x)", irc)); return ERROR_INVALID_FUNCTION; } LOGF_ENTER(); LOGREL(("VBox XPDM Driver for Windows version %d.%d.%dr%d, %d bit; Built %s %s", VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR, VBOX_VERSION_BUILD, VBOX_SVN_REV, (sizeof (void*) << 3), __DATE__, __TIME__)); VIDEO_HW_INITIALIZATION_DATA vhwData; /*Zero the structure*/ VideoPortZeroMemory(&vhwData, sizeof(vhwData)); /*Required driver callbacks*/ vhwData.HwFindAdapter = VBoxDrvFindAdapter; vhwData.HwInitialize = VBoxDrvInitialize; vhwData.HwStartIO = VBoxDrvStartIO; vhwData.HwSetPowerState = VBoxDrvSetPowerState; vhwData.HwGetPowerState = VBoxDrvGetPowerState; vhwData.HwGetVideoChildDescriptor = VBoxDrvGetVideoChildDescriptor; /*Optional callbacks*/ vhwData.HwResetHw = VBoxDrvResetHW; #ifdef VBOX_WITH_VIDEOHWACCEL vhwData.HwInterrupt = VBoxDrvInterrupt; #endif /*Our private storage space*/ vhwData.HwDeviceExtensionSize = sizeof(VBOXMP_DEVEXT); /*Claim legacy VGA resource ranges*/ vhwData.HwLegacyResourceList = g_aVBoxLegacyVGAResources; vhwData.HwLegacyResourceCount = RT_ELEMENTS(g_aVBoxLegacyVGAResources); /*Size of this structure changes between windows/ddk versions, *so we query current version and report the expected size *to allow our driver to be loaded. */ switch (VBoxQueryWinVersion(NULL)) { case WINVERSION_NT4: LOG(("WINVERSION_NT4")); vhwData.HwInitDataSize = SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA; break; case WINVERSION_2K: LOG(("WINVERSION_2K")); vhwData.HwInitDataSize = SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA; break; default: vhwData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); break; } /*Even though msdn claims that this field is ignored and should remain zero-initialized, windows NT4 SP0 dies without the following line. */ vhwData.AdapterInterfaceType = PCIBus; /*Allocate system resources*/ ULONG rc = VideoPortInitialize(Context1, Context2, &vhwData, NULL); if (rc != NO_ERROR) LOG(("VideoPortInitialize failed with %#x", rc)); LOGF_LEAVE(); return rc; }
ULONG DriverEntry ( PVOID Context1, PVOID Context2 ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. Arguments: Context1 - First context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Context2 - Second context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Return Value: Status from VideoPortInitialize() --*/ { VIDEO_HW_INITIALIZATION_DATA hwInitData; // // Zero out structure. // VideoPortZeroMemory(&hwInitData, sizeof(VIDEO_HW_INITIALIZATION_DATA)); // // Specify sizes of structure and extension. // hwInitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); // // Set entry points. // hwInitData.HwFindAdapter = DGXFindAdapter; hwInitData.HwInitialize = DGXInitialize; hwInitData.HwInterrupt = NULL; hwInitData.HwStartIO = DGXStartIO; // // Determine the size we require for the device extension. // hwInitData.HwDeviceExtensionSize = sizeof(HW_DEVICE_EXTENSION); // // Always start with parameters for device0 in this case. // // hwInitData.StartingDeviceNumber = 0; // // This device only supports the internal bus type. So return the status // value directly to the operating system. // hwInitData.AdapterInterfaceType = Eisa; return VideoPortInitialize(Context1, Context2, &hwInitData, NULL); } // end DriverEntry()
ULONG DriverEntry ( PVOID Context1, PVOID Context2 ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. Arguments: Context1 - First context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Context2 - Second context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Return Value: Status from VideoPortInitialize() --*/ { VIDEO_HW_INITIALIZATION_DATA hwInitData; ULONG initializationStatus; ULONG status; // // Zero out structure. // VideoPortZeroMemory(&hwInitData, sizeof(VIDEO_HW_INITIALIZATION_DATA)); // // Specify sizes of structure and extension. // hwInitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); // // Set entry points. // hwInitData.HwFindAdapter = A8514FindAdapter; hwInitData.HwInitialize = A8514Initialize; hwInitData.HwInterrupt = NULL; hwInitData.HwStartIO = A8514StartIO; // // Determine the size we require for the device extension. // hwInitData.HwDeviceExtensionSize = sizeof(HW_DEVICE_EXTENSION); // // This device only supports many bus types. // hwInitData.AdapterInterfaceType = Isa; initializationStatus = VideoPortInitialize(Context1, Context2, &hwInitData, NULL); hwInitData.AdapterInterfaceType = Eisa; status = VideoPortInitialize(Context1, Context2, &hwInitData, NULL); if (initializationStatus > status) { initializationStatus = status; } hwInitData.AdapterInterfaceType = MicroChannel; status = VideoPortInitialize(Context1, Context2, &hwInitData, NULL); if (initializationStatus > status) { initializationStatus = status; } return initializationStatus; } // end DriverEntry()
/* Standard NT driver initialization entry point. */ ULONG DriverEntry( PVOID Context1, PVOID Context2 ) { VIDEO_HW_INITIALIZATION_DATA hwInitData; ULONG status; VideoDebugPrint( (1, "videomp: DriverEntry\n") ); /* Prepare the initialization structure. */ VideoPortZeroMemory( &hwInitData, sizeof( VIDEO_HW_INITIALIZATION_DATA ) ); hwInitData.HwInitDataSize = sizeof( VIDEO_HW_INITIALIZATION_DATA ); /* Set up driver callbacks. */ hwInitData.HwFindAdapter = HwVidFindAdapter; hwInitData.HwInitialize = HwVidInitialize; hwInitData.HwStartIO = HwVidStartIO; /* There's no interrupt or timer callback. */ hwInitData.HwInterrupt = NULL; hwInitData.HwTimer = NULL; hwInitData.HwResetHw = HwVidResetHw; /* Power and child device management callbacks were added in NT 5.0. */ hwInitData.HwGetPowerState = HwGetPowerState; hwInitData.HwSetPowerState = HwSetPowerState; hwInitData.HwGetVideoChildDescriptor = HwGetChildDesc; /* Report legacy resources. */ hwInitData.HwLegacyResourceList = LegacyRanges; hwInitData.HwLegacyResourceCount = ulNumLegacyRanges; /* Report the device extension size. */ hwInitData.HwDeviceExtensionSize = sizeof( HW_DEV_EXT ); /* Refer to the CurrentControlSet\Services\xxx\Device0 registry key. */ hwInitData.StartingDeviceNumber = 0; /* Later NT versions support PCI; recent versions ignore this entirely */ hwInitData.AdapterInterfaceType = PCIBus; /* The PsGetVersion function was not available in NT 3.x. We therefore * implement a poor man's version detection by successively reducing the * HwInitDataSize until the video miniport (we hope) accepts it. */ do { /* First try with NT 5.1 (Windows XP) structure size. */ VideoDebugPrint( (1, "videomp: Trying DDI 5.1 HwInitDataSize\n") ); hwInitData.HwInitDataSize = SIZE_OF_WXP_VIDEO_HW_INITIALIZATION_DATA; PortVersion = VP_VER_XP; status = VideoPortInitialize( Context1, Context2, &hwInitData, NULL ); if( status != STATUS_REVISION_MISMATCH ) { /* If status is anything other than a version mismatch, don't * try calling VideoPortInitialize again. The call may have * succeeded, or it failed for some reason whe can't easily fix. */ break; } /* Try the NT 5.0 (Windows 2000) structure size. */ VideoDebugPrint( (1, "videomp: Trying DDI 5.0 HwInitDataSize\n") ); hwInitData.HwInitDataSize = SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA; PortVersion = VP_VER_W2K; status = VideoPortInitialize( Context1, Context2, &hwInitData, NULL ); if( status != STATUS_REVISION_MISMATCH ) { break; } /* Try the NT 4.0 (and also NT 3.51) structure size. */ VideoDebugPrint( (1, "videomp: Trying DDI 4.0 HwInitDataSize\n") ); hwInitData.HwInitDataSize = SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA; PortVersion = VP_VER_NT4; status = VideoPortInitialize( Context1, Context2, &hwInitData, NULL ); if( status != STATUS_REVISION_MISMATCH ) { break; } /* Try the original NT 3.1/3.5 HwInitDataSize. No PCI support. */ VideoDebugPrint( (1, "videomp: Trying DDI 3.1 HwInitDataSize\n") ); hwInitData.HwInitDataSize = offsetof( VIDEO_HW_INITIALIZATION_DATA, HwResetHw ); hwInitData.AdapterInterfaceType = Isa; PortVersion = VP_VER_NT31; status = VideoPortInitialize( Context1, Context2, &hwInitData, NULL ); } while( 0 ); VideoDebugPrint( (1, "videomp: VideoPortInitialize rc=%08x\n", status ) ); return( status ); }
ULONG DriverEntry ( PVOID Context1, PVOID Context2 ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. Arguments: Context1 - First context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Context2 - Second context value passed by the operating system. This is the value with which the miniport driver calls VideoPortInitialize(). Return Value: Status from VideoPortInitialize() --*/ { VIDEO_HW_INITIALIZATION_DATA hwInitData; ULONG status; ULONG initializationStatus; // // Zero out structure. // VideoPortZeroMemory(&hwInitData, sizeof(VIDEO_HW_INITIALIZATION_DATA)); // // Specify sizes of structure and extension. // hwInitData.HwInitDataSize = sizeof(VIDEO_HW_INITIALIZATION_DATA); // // Set entry points. // hwInitData.HwFindAdapter = SimFindAdapter; hwInitData.HwInitialize = SimInitialize; hwInitData.HwInterrupt = NULL; hwInitData.HwStartIO = SimStartIO; // // Determine the size we require for the device extension. // hwInitData.HwDeviceExtensionSize = sizeof(HW_DEVICE_EXTENSION); // // Always start with parameters for device0 in this case. // // hwInitData.StartingDeviceNumber = 0; // // Once all the relevant information has been stored, call the video // port driver to do the initialization. // For this device we will repeat this call three times, for ISA, EISA // and MCA. // We will return the minimum of all return values. // hwInitData.AdapterInterfaceType = Isa; initializationStatus = VideoPortInitialize(Context1, Context2, &hwInitData, &DeviceCount); hwInitData.AdapterInterfaceType = Eisa; status = VideoPortInitialize(Context1, Context2, &hwInitData, &DeviceCount); if (initializationStatus > status) { initializationStatus = status; } hwInitData.AdapterInterfaceType = MicroChannel; status = VideoPortInitialize(Context1, Context2, &hwInitData, &DeviceCount); if (initializationStatus > status) { initializationStatus = status; } hwInitData.AdapterInterfaceType = Internal; status = VideoPortInitialize(Context1, Context2, &hwInitData, &DeviceCount); if (initializationStatus > status) { initializationStatus = status; } hwInitData.AdapterInterfaceType = PCIBus; status = VideoPortInitialize(Context1, Context2, &hwInitData, &DeviceCount); if (initializationStatus > status) { initializationStatus = status; } return initializationStatus; } // end DriverEntry()