Techwiki:Win32k/display driver loading

From ReactOS Wiki
Jump to: navigation, search
  • Installed devices: "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO". values are:
    • "MaxObjectNumber": Value of type REG_DWORD, containing the max device number <maxdev>.
    • "\Device\Video0" .. "\Device\Video<maxdev>": Values of type REG_SZ, each containing the registry key for the device.
    • "\Device\Disc": Disconnected Graphics Device (for Terminal Services).
    • "VgaCompatible": value of type REG_SZ, containing the device name of the vga compatible device.
  • Legacy (2k) Device configuration key: "\Registry\Machine\System\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\<ServiceName>\Device0". This key does not exist on Windows 2003. Probably also not on XP.
  • New (XP) Device configuration key: "\Registry\Machine\System\CurrentControlSet\Control\Video\<VideoId>\0000". Where <VideoId> is a local UUID, created by videoprt the first time the device is started. The VideoId string is stored in the registry under the device's hardware key (HKLM\System\CurrentControlSet\Enum\...)
  • New (XP) Current settings key: "\\Registry\\Machine\\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO\{19D0ECD0-F5D9-4A4B-8005-36253C8D799D}\0000"
    • "Device Description", type is REG_SZ, human readable name ("NVIDIA GeForce 6150")
    • "InstalledDisplayDrivers": REG_MULTI_SZ, all display drivers used for this device.
    • "VgaCompatible": REG_DWORD, 0 or 1
    • "DefaultSettings.BitsPerPel", "DefaultSettings.XResolution", "DefaultSettings.YResolution", ...
  • "\Registry\Machine\System\CurrentControlSet\Control\Video\{19D0ECD0-F5D9-4A4B-8005-36253C8D799D}\Video"
    • Contains REG_SZ "Service" -> name of the display driver service
  • "\REGISTRY\Machine\System\CurrentControlSet\Services\TSDDD\Device0" (for "\Device\Disc")

  • The driver registry path passed to the driver entry (videoprt): "\\Registry\\Machine\\System\\ControlSet001\\Services\\<ServiceName>"
  • The device profile registry key can be generated from the service name: "\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current\\System\\CurrentControlSet\\Services\<ServiceName>\\Device0"
  • The device registry key can be queried with IoOpenDeviceRegistryKey, passing the device object: "\\Registry\\Machine\\System\ControlSet001\\Enum\\PCI\\VEN_10DE&DEV_10C3&SUBSYS_00000000&REV_A2\\4&1b94b7da&0&0020\\Device Parameters"
    • Key value "VideoId", type REG_SZ, contains the GUID string of the video device: "{19D0ECD0-F5D9-4A4B-8005-36253C8D799D}". Thiskey is created by videoprt by generating a new local UUID, when the value is not present yet.
    • The parent key contains a REG_SZ value named "ClassGUID", that contains the class GUID
  • The class registry key: "\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Class\\<class GUID>\\<dev number>"

Some references