Geoff Chappell, Software Analyst
The SYSTEM_DOCK_INFORMATION structure may be what a successful call to ZwQuerySystemInformation or NtQuerySystemInformation would produce in its output buffer when given the information class SystemDockInformation (0x29) in versions 3.51 and 4.0. Earlier and later versions reject this information class as invalid. In all builds yet inspected of these versions, it is instead rejected as not implemented. Presumably, it was some sort of placeholder, at best an experiment that never got far. Version 5.0 reworked Plug and Play substantially. Version 5.1 repurposes the information class’s numerical value as SystemVerifierRemoveDriverInformation and only then to set system information.
The SYSTEM_DOCK_INFORMATION structure is not documented. It is known only from type information in early import libraries: GDISRVL.LIB from the Device Driver Kit (DDK) for Windows NT 3.51 and SHELL32.LIB from the DDK for Windows NT 4.0.
The SYSTEM_DOCK_INFORMATION is 0x14 bytes in version 3.51 and is evidently intended as a fixed-size header for variable-size information. By contrast, the structure in version 4.0 looks to be the whole of the information and is only 0x10 bytes.
Offset | Definition | Versions |
---|---|---|
0x00 |
INT DockState; |
3.51 to 4.0 |
0x04 (3.51) |
ULONG DockIdLength; |
3.51 only |
0x08 (3.51) |
ULONG SerialNumberOffset; |
3.51 only |
0x0C (3.51) |
ULONG SerialNumberLength; |
3.51 only |
0x10 (3.51) |
USHORT DockId [ANYSIZE_ARRAY]; |
3.51 only |
0x04 |
INT DeviceBusType; |
4.0 only |
0x08 |
ULONG DeviceBusNumber; |
4.0 only |
0x0C |
ULONG SlotNumber; |
4.0 only |