[patch] - add several structs to ntddk.h

Ron Gage ron at rongage.org
Thu Feb 14 10:55:03 CST 2002


Hi folks...

I just sent the following patch to wine-patches.  I thought it would be a good
idea to let you folks beat it up before someone actually commit's it to CVS...

The patch adds several struct definations to include/ntddk.h to assist getting
the NtQuerySystemInformation routine working.  It also adds several enumerations
for the System Information Class.  

By far, these are not complete, and I can only hope that they are accurate.

One thing you may notice is that HANDLEINFO and THREADINFO have been defined.  I
believe there is already a less complete defination of the THREADINFO struct
(called THREAD_INFO) in the code already.  This has been left untouched so that
this patch minimizes the potential side effects.

These are untested in that I have not tried to recompile with these changes in
place.  My only concern: do FILETIME and LARGE_INTEGER data types exist?

Google is your friend - use it wisely!

-- 
Ron Gage - Owner, Linux Network Services - Saginaw, Michigan - 989-274-8088
Your one-stop source for Reliable, Secure and Affordable Networking Solutions



--- ntddk.h~	Wed Dec 19 14:16:29 2001
+++ ntddk.h	Thu Feb 14 07:32:31 2002
@@ -147,6 +147,21 @@
 	MaxThreadInfoClass
 } THREADINFOCLASS;
 
+typedef struct {
+/* This is used by NtQuerySystemInformation */
+
FILETIME ftCreationTime;
+
DWORD dwUnknown1;
+
DWORD dwStartAddress;
+
DWORD dwOwningPID;
+
DWORD dwThreadID;
+
DWORD dwCurrentPriority;
+
DWORD dwBasePriority;
+
DWORD dwContextSwitches;
+
DWORD dwThreadState;
+
DWORD dwWaitReason;
+
DWORD dwUnknown2[5];
+} THREADINFO, *PTHREADINFO;
+
 /*	file information */
 
 typedef enum _FILE_INFORMATION_CLASS {
@@ -220,12 +235,124 @@
 /*	system information */
 
 typedef enum SYSTEM_INFORMATION_CLASS
-{
Unknown1 = 1,
-
Unknown2,
-
Unknown3,
+{
SystemBasicInformation = 0,
+
Unknown1,
+
SystemPerformanceInformation,
+
SystemTimeInformation,
 	Unknown4,
-
SystemPerformanceInformation
+
SystemProcessInformation,
+
Unknown6,
+
Unknown7,
+
Unknown8,
+
Unknown9,
+
Unknown10,
+
SystemDriverInformation,
+
Unknown12,
+
Unknown13,
+
Unknown14,
+
Unknown15,
+
SystemHandleList,
+
Unknown17,
+
Unknown18,
+
Unknown19,
+
Unknown20,
+
SystemCacheInformation
+

 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
+
+typedef struct {
+/* System Information Class 0x00 */
+
DWORD dwUnknown1;
+
ULONG uKeMaximumIncrement;
+
ULONG uPageSize;
+
ULONG uMmNumberOfPhysicalPages;
+
ULONG uMmLowestPhysicalPage;
+
ULONG uMmHighestPhysicalPage;
+
ULONG uAllocationGranularity;
+
PVOID pLowestUserAddress;
+
PVOID pMmHighestUserAddress;
+
ULONG uKeActiveProcessors;
+
BYTE bKeNumberProcessors;
+
BYTE bUnknown2;
+
WORD wUnknown3;
+} SYSTEM_BASIC_INFORMATION;
+
+typedef struct {
+/* System Information Class 0x02 */
+
LARGE_INTEGER liIdleTime;
+
DWORD dwSpare[76];
+} SYSTEM_PERFORMANCE_INFORMATION;
+
+typedef struct {
+/* System Information Class 0x03 */
+
LARGE_INTEGER liKeBootTime;
+
LARGE_INTEGER liKeSystemTime;
+
LARGE_INTEGER liExpTimeZoneBias;
+
ULONG uCurrentTimeZoneId;
+
DWORD dwReserved;
+} SYSTEM_TIME_INFORMATION;
+
+typedef struct {
+/* System Information Class 0x05 */
+
DWORD dwOffset;
+
DWORD dwThreadCount;
+
DWORD dwUnknown1[6];
+
FILETIME ftCreationTime;
+
DWORD dwUnknown2[5];
+
WCHAR* pszProcessName;
+
DWORD dwBasePriority;
+
DWORD dwProcessID;
+
DWORD dwParentProcessID;
+
DWORD dwHandleCount;
+
DWORD dwUnknown3;
+
DWORD dwUnknown4;
+
DWORD dwVirtualBytesPeak;
+
DWORD dwVirtualBytes;
+
DWORD dwPageFaults;
+
DWORD dwWorkingSetPeak;
+
DWORD dwWorkingSet;
+
DWORD dwUnknown5;
+
DWORD dwPagedPool;
+
DWORD dwUnknown6;
+
DWORD dwNonPagedPool;
+
DWORD dwPageFileBytesPeak;
+
DWORD dwPrivateBytes;
+
DWORD dwPageFileBytes;
+
DWORD dwUnknown7[4];
+
THREADINFO ti[0];
+} SYSTEM_PROCESS_INFORMATION;
+
+typedef struct {
+/* System Information Class 0x0b */
+
PVOID pvAddress;
+
DWORD dwUnknown1;
+
DWORD dwUnknown2;
+
DWORD dwEntryIndex
+
DWORD dwUnknown3;
+
char szName[MAX_PATH + 1];
+} SYSTEM_DRIVER_INFORMATION;
+
+typedef struct {
+/* System Information Class 0x10 */
+
USHORT dwPID;
+
USHORT dwCreatorBackTraceIndex;
+
BYTE bObjectType;
+
BYTE bHandleAttributes;
+
USHORT usHandleOffset;
+
DWORD dwKeObject;
+
ULONG ulGrantedAccess;
+} HANDLEINFO, *PHANDLEINFO;
+

+
+typedef struct { 
+/* System Information Class 0x15 */
+
ULONG CurrentSize;
+
ULONG PeakSize;
+
ULONG PageFaultCount;
+
ULONG MinimumWorkingSet;
+
ULONG MaximumWorkingSet;
+
ULONG unused[4];
+} SYSTEM_CACHE_INFORMATION;
 
 /* reading coffee grounds... */
 typedef struct _THREAD_INFO




-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/





More information about the wine-devel mailing list