Mismatch in winternl.h for SYSTEM_*_INFORMATION structs

Paul Vriens Paul.Vriens at xs4all.nl
Mon Apr 11 02:57:53 CDT 2005


Hi,

I'm busy fixing up NtQuerySystemInformation as this is needed for my
'Get Processor Explorer running' project.

I've found that (at least) 2 structs are wrongly sized:

/* System Information Class 0x03 */
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
#ifdef __WINESRC__
    LARGE_INTEGER liKeBootTime;
    LARGE_INTEGER liKeSystemTime;
    LARGE_INTEGER liExpTimeZoneBias;
    ULONG uCurrentTimeZoneId;
    DWORD dwReserved;
#else
    BYTE Reserved1[48];
#endif
} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */

In the __WINESRC__ case it's 32 bytes and 48 otherwise.

The same is true for the _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
struct, where in the __WINESRC__ case it's 48 bytes and 44 bytes
otherwise.

So my questions are:

1. Is there a reason for this, or is it a bug.
2. Why do we have separate structs for the WINE and the NOT-WINE case.
Is this because most of it is undocumented?

Cheers,

Paul Vriens.




More information about the wine-devel mailing list