Geoff Chappell, Software Analyst
The SYSTEM_POWER_INFORMATION structure may be what a successful call to ZwQuerySystemInformation or NtQuerySystemInformation would produce in its output buffer when given the information class SystemPowerInformation (0x2A) in versions 3.51 to 5.0. Earlier versions reject this information class as invalid and so do these. Yet Microsoft is known to have defined the information class as SystemPowerInformation in versions 3.51 and 4.0 before version 5.1 redefined it as SystemProcessorIdleInformation.
This SYSTEM_POWER_INFORMATION structure in this form for this presumed purpose 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 name was soon reused, however, for a documented structure that user mode software can get filled in by the CallNtPowerInformation function. Reusing the name may have caused some confusion at Microsoft for although a C-language definition was published almost immediately in the Device Driver Kit (DDK) for Windows XP, none was made available for user-mode programming. To this day, 26th October, 2019, Microsoft’s page on SYSTEM_POWER_INFORMATION still notes that “this structure definition was accidentally omitted from WinNT.h” which “error will be corrected in the future.”
The SYSTEM_POWER_INFORMATION is 0x18 bytes.