SYSTEM_DOCK_INFORMATION

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.

Documentation Status

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.

Layout

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