-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/extypes.h
- * PURPOSE: Definitions for exported Executive Functions not defined in DDK/IFS
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ extypes.h
+
+Abstract:
+
+ Type definitions for the Executive.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _EXTYPES_H
#define _EXTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
+#include <umtypes.h>
#include <cfg.h>
-/* FIXME: this needs be implemented in the w32api ddk */
#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
#include <ntimage.h>
#endif
-#include "cmtypes.h"
-#include "ketypes.h"
-#include "pstypes.h"
-#include "potypes.h"
+#include <cmtypes.h>
+#include <ketypes.h>
+#include <potypes.h>
+#include <lpctypes.h>
+
+//
+// Atom and Language IDs
+//
+typedef USHORT LANGID, *PLANGID;
+typedef USHORT RTL_ATOM, *PRTL_ATOM;
-/* EXPORTED DATA *************************************************************/
#ifndef NTOS_MODE_USER
+
+//
+// Kernel Exported Object Types
+//
extern POBJECT_TYPE NTSYSAPI ExIoCompletionType;
extern POBJECT_TYPE NTSYSAPI ExMutantObjectType;
extern POBJECT_TYPE NTSYSAPI ExTimerType;
-#endif
-/* CONSTANTS *****************************************************************/
-#ifndef NTOS_MODE_USER
-#define INVALID_HANDLE_VALUE (HANDLE)-1
+//
+// Exported NT Build Number
+//
+extern ULONG NTSYSAPI NtBuildNumber;
+
+//
+// Invalid Handle Value Constant
+//
+#define INVALID_HANDLE_VALUE (HANDLE)-1
+
#endif
-/* Increments */
-#define MUTANT_INCREMENT 1
-
-/* Executive Object Access Rights */
-#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
-#define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
-#define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
-#define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
-#define EVENT_READ_ACCESS 1
-#define EVENT_WRITE_ACCESS 2
-#define PORT_ALL_ACCESS 0x1
-#define EVENT_PAIR_ALL_ACCESS 0x1F0000L
+//
+// Increments
+//
+#define MUTANT_INCREMENT 1
+
+//
+// Callback Object Access Mask
+//
+#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
+#define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
+#define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
+#define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
+
+//
+// Event Object Access Masks
+//
#ifdef NTOS_MODE_USER
-#define EVENT_QUERY_STATE 0x0001
-#define SEMAPHORE_QUERY_STATE 0x0001
-#endif
+#define EVENT_QUERY_STATE 0x0001
-#define MAXIMUM_HARDERROR_PARAMETERS 4
+//
+// Semaphore Object Acess Masks
+//
+#define SEMAPHORE_QUERY_STATE 0x0001
+#endif
-/* ENUMERATIONS **************************************************************/
+//
+// Event Pair Access Masks
+//
+#define EVENT_PAIR_ALL_ACCESS 0x1F0000L
+
+//
+// Profile Object Access Masks
+//
+#define PROFILE_CONTROL 0x0001
+#define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
+
+//
+// Maximum Parameters for NtRaiseHardError
+//
+#define MAXIMUM_HARDERROR_PARAMETERS 4
+
+//
+// Pushlock Wait Block Flags
+//
+#define EX_PUSH_LOCK_FLAGS_EXCLUSIVE 1
+#define EX_PUSH_LOCK_FLAGS_WAIT 2
+
+//
+// Shutdown types for NtShutdownSystem
+//
typedef enum _SHUTDOWN_ACTION
{
ShutdownNoReboot,
ShutdownPowerOff
} SHUTDOWN_ACTION;
+//
+// Responses for NtRaiseHardError
+//
typedef enum _HARDERROR_RESPONSE_OPTION
{
OptionAbortRetryIgnore,
ResponseYes
} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
+//
+// System Information Classes for NtQuerySystemInformation
+//
typedef enum _SYSTEM_INFORMATION_CLASS
{
SystemBasicInformation,
SystemProcessorInformation,
SystemPerformanceInformation,
SystemTimeOfDayInformation,
- SystemPathInformation, /* OBSOLETE: USE KUSER_SHARED_DATA */
+ SystemPathInformation, /// Obsolete: Use KUSER_SHARED_DATA
SystemProcessInformation,
SystemCallCountInformation,
SystemDeviceInformation,
SystemPrioritySeperation,
SystemPlugPlayBusInformation,
SystemDockInformation,
- _SystemPowerInformation, /* FIXME */
+ SystemPowerInformationNative,
SystemProcessorSpeedInformation,
SystemCurrentTimeZoneInformation,
SystemLookasideInformation,
SystemInformationClassMax
} SYSTEM_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryMutant
+//
typedef enum _MUTANT_INFORMATION_CLASS
{
MutantBasicInformation
} MUTANT_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryAtom
+//
typedef enum _ATOM_INFORMATION_CLASS
{
AtomBasicInformation,
AtomTableInformation,
} ATOM_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryTimer
+//
typedef enum _TIMER_INFORMATION_CLASS
{
TimerBasicInformation
} TIMER_INFORMATION_CLASS;
+//
+// System Information Classes for NtQuerySemaphore
+//
typedef enum _SEMAPHORE_INFORMATION_CLASS
{
SemaphoreBasicInformation
} SEMAPHORE_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryEvent
+//
typedef enum _EVENT_INFORMATION_CLASS
{
EventBasicInformation
} EVENT_INFORMATION_CLASS;
-/* TYPES *********************************************************************/
-
-typedef USHORT LANGID, *PLANGID;
-typedef USHORT RTL_ATOM, *PRTL_ATOM;
-
#ifndef NTOS_MODE_USER
+
+//
+// Executive Work Queue Structures
+//
typedef struct _EX_QUEUE_WORKER_INFO
{
ULONG QueueDisabled:1;
EX_QUEUE_WORKER_INFO Info;
} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
+//
+// Executive Fast Reference Structure
+//
typedef struct _EX_FAST_REF
{
union
};
} EX_FAST_REF, *PEX_FAST_REF;
-typedef struct _HANDLE_TABLE_ENTRY_INFO
+//
+// Executive Cache-Aware Rundown Reference Descriptor
+//
+typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
{
- ULONG AuditMask;
-} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
+ union
+ {
+ ULONG_PTR Count;
+ PVOID Ptr;
+ };
+ PVOID PoolToFree;
+} EX_RUNDOWN_REF_CACHE_AWARE, *PEX_RUNDOWN_REF_CACHE_AWARE;
-typedef struct _RUNDOWN_DESCRIPTOR
+//
+// Executive Rundown Wait Block
+//
+typedef struct _EX_RUNDOWN_WAIT_BLOCK
{
- ULONG_PTR References;
+ ULONG_PTR Count;
KEVENT RundownEvent;
-} RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
+} EX_RUNDOWN_WAIT_BLOCK, *PEX_RUNDOWN_WAIT_BLOCK;
+//
+// Executive Pushlock Wait Block
+//
+#ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
+__declspec(align(16))
+#endif
+typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
+{
+ union
+ {
+ KGATE WakeGate;
+ KEVENT WakeEvent;
+ };
+ struct _EX_PUSH_LOCK_WAIT_BLOCK *Next;
+ struct _EX_PUSH_LOCK_WAIT_BLOCK *Last;
+ struct _EX_PUSH_LOCK_WAIT_BLOCK *Previous;
+ LONG ShareCount;
+ LONG Flags;
+#if DBG
+ BOOL Signaled;
+ EX_PUSH_LOCK NewValue;
+ EX_PUSH_LOCK OldValue;
+ PEX_PUSH_LOCK PushLock;
+#endif
+} EX_PUSH_LOCK_WAIT_BLOCK, *PEX_PUSH_LOCK_WAIT_BLOCK;
+
+//
+// Callback Object
+//
typedef struct _CALLBACK_OBJECT
{
ULONG Name;
ULONG AllowMultipleCallbacks;
} CALLBACK_OBJECT , *PCALLBACK_OBJECT;
+//
+// Profile OBject
+//
+typedef struct _EPROFILE
+{
+ PEPROCESS Process;
+ PVOID ImageBase;
+ SIZE_T ImageSize;
+ PVOID Buffer;
+ ULONG BufferSize;
+ ULONG BucketSize;
+ PKPROFILE KeProfile;
+ PVOID LockedBuffer;
+ PMDL Mdl;
+ ULONG Segment;
+ KPROFILE_SOURCE ProfileSource;
+ KAFFINITY Affinity;
+} EPROFILE, *PEPROFILE;
+
+//
+// Handle Table Structures
+//
+typedef struct _HANDLE_TABLE_ENTRY_INFO
+{
+ ULONG AuditMask;
+} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
+
typedef struct _HANDLE_TABLE_ENTRY
{
union
#endif
+//
+// Hard Error LPC Message
+//
+typedef struct _HARDERROR_MSG
+{
+ PORT_MESSAGE h;
+ NTSTATUS Status;
+ LARGE_INTEGER ErrorTime;
+ ULONG ValidResponseOptions;
+ ULONG Response;
+ ULONG NumberOfParameters;
+ ULONG UnicodeStringParameterMask;
+ ULONG Parameters[MAXIMUM_HARDERROR_PARAMETERS];
+} HARDERROR_MSG, *PHARDERROR_MSG;
+
+//
+// Information Structures for NtQueryMutant
+//
typedef struct _MUTANT_BASIC_INFORMATION
{
LONG CurrentCount;
BOOLEAN AbandonedState;
} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+//
+// Information Structures for NtQueryAtom
+//
typedef struct _ATOM_BASIC_INFORMATION
{
USHORT UsageCount;
USHORT Atoms[1];
} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION;
+//
+// Information Structures for NtQueryTimer
+//
typedef struct _TIMER_BASIC_INFORMATION
{
LARGE_INTEGER TimeRemaining;
BOOLEAN SignalState;
} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+//
+// Information Structures for NtQuerySemaphore
+//
typedef struct _SEMAPHORE_BASIC_INFORMATION
{
LONG CurrentCount;
LONG MaximumCount;
} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
+//
+// Information Structures for NtQueryEvent
+//
typedef struct _EVENT_BASIC_INFORMATION
{
EVENT_TYPE EventType;
LONG EventState;
} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
-/* Class 0 */
+//
+// Information Structures for NtQuerySystemInformation
+//
typedef struct _SYSTEM_BASIC_INFORMATION
{
ULONG Reserved;
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
-/* Class 1 */
+// Class 1
typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
USHORT ProcessorArchitecture;
ULONG ProcessorFeatureBits;
} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
-/* Class 2 */
+// Class 2
typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleProcessTime;
ULONG SystemCalls;
} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
-/* Class 3 */
+// Class 3
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
{
LARGE_INTEGER BootTime;
ULONG Reserved;
} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
-/* Class 4 */
-/* This class is obsoleted, please use KUSER_SHARED_DATA instead */
+// Class 4
+// This class is obsolete, please use KUSER_SHARED_DATA instead
-/* Class 5 */
+// Class 5
typedef struct _SYSTEM_THREAD_INFORMATION
{
LARGE_INTEGER KernelTime;
ULONG SessionId;
ULONG PageDirectoryFrame;
- /*
- * This part corresponds to VM_COUNTERS_EX.
- * NOTE: *NOT* THE SAME AS VM_COUNTERS!
- */
+ //
+ // This part corresponds to VM_COUNTERS_EX.
+ // NOTE: *NOT* THE SAME AS VM_COUNTERS!
+ //
ULONG PeakVirtualSize;
ULONG VirtualSize;
ULONG PageFaultCount;
ULONG PeakPagefileUsage;
ULONG PrivateUsage;
- /* This part corresponds to IO_COUNTERS */
+ //
+ // This part corresponds to IO_COUNTERS
+ //
LARGE_INTEGER ReadOperationCount;
LARGE_INTEGER WriteOperationCount;
LARGE_INTEGER OtherOperationCount;
LARGE_INTEGER WriteTransferCount;
LARGE_INTEGER OtherTransferCount;
- /* Finally, the array of Threads */
SYSTEM_THREAD_INFORMATION TH[1];
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
-/* Class 6 */
+// Class 6
typedef struct _SYSTEM_CALL_COUNT_INFORMATION
{
ULONG Length;
ULONG NumberOfTables;
} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION;
-/* Class 7 */
+// Class 7
typedef struct _SYSTEM_DEVICE_INFORMATION
{
ULONG NumberOfDisks;
ULONG NumberOfParallelPorts;
} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
-/* Class 8 */
+// Class 8
typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleTime;
ULONG InterruptCount;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
-/* Class 9 */
+// Class 9
typedef struct _SYSTEM_FLAGS_INFORMATION
{
ULONG Flags;
} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION;
-/* Class 10 */
+// Class 10
typedef struct _SYSTEM_CALL_TIME_INFORMATION
{
ULONG Length;
LARGE_INTEGER TimeOfCalls[1];
} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
-/* Class 11 */
+// Class 11
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
ULONG Unknown1;
SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
-/* Class 12 */
+// Class 12
typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
{
ULONG ResourceAddress;
SYSTEM_RESOURCE_LOCK_ENTRY Lock[1];
} SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
-/* Class 13 */
+// FIXME: Class 13
typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
{
ULONG Dummy;
- /* FIXME */
} SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY;
typedef struct _SYSTEM_BACKTRACE_INFORMATION
{
- /* FIXME */
ULONG Unknown[4];
ULONG Count;
SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace[1];
} SYSTEM_BACKTRACE_INFORMATION, *PSYSTEM_BACKTRACE_INFORMATION;
-/* Class 14 - 15 */
+// Class 14 - 15
typedef struct _SYSTEM_POOL_ENTRY
{
BOOLEAN Allocated;
SYSTEM_POOL_ENTRY Entries[1];
} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
-/* Class 16 */
+// Class 16
typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
{
USHORT UniqueProcessId;
SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
-/* Class 17 */
+// Class 17
typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
{
ULONG NextEntryOffset;
OBJECT_NAME_INFORMATION NameInfo;
} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
-/* Class 18 */
+// Class 18
typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NextEntryOffset;
UNICODE_STRING PageFileName;
} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
-/* Class 19 */
+// Class 19
typedef struct _SYSTEM_VDM_INSTEMUL_INFO
{
ULONG SegmentNotPresent;
ULONG BopCount;
} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO;
-/* Class 20 */
+// FIXME: Class 20
typedef struct _SYSTEM_VDM_BOP_INFO
{
- /* FIXME */
PVOID Dummy;
} SYSTEM_VDM_BOP_INFO, *PSYSTEM_VDM_BOP_INFO;
-/* Class 21 */
+// Class 21
typedef struct _SYSTEM_CACHE_INFORMATION
{
ULONG CurrentSize;
ULONG Unused[2];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
-/* Class 22 */
+// Class 22
typedef struct _SYSTEM_POOLTAG
{
union
SYSTEM_POOLTAG TagInfo[1];
} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
-/* Class 23 */
+// Class 23
typedef struct _SYSTEM_INTERRUPT_INFORMATION
{
ULONG ContextSwitches;
ULONG ApcBypassCount;
} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
-/* Class 24 */
+// Class 24
typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
{
ULONG Spare;
ULONG IdealDpcRate;
} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION;
-/* Class 25 */
+// Class 25
typedef struct _SYSTEM_MEMORY_INFO
{
PUCHAR StringOffset;
SYSTEM_MEMORY_INFO Memory[1];
} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
-/* Class 26 */
+// Class 26
typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
{
UNICODE_STRING DriverName;
PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
-/* Class 27 */
-/* Not an actuall class, simply a PVOID to the ImageAddress */
+// Class 27
+// Not an actually class, simply a PVOID to the ImageAddress
-/* Class 28 */
+// Class 28
typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
{
ULONG TimeAdjustment;
BOOLEAN Enable;
} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION;
-/* Class 29 - Same as 25 */
+// Class 29 - Same as 25
-/* Class 30 - 31 */
-/* FIXME */
+// FIXME: Class 30 - 31
-/* Class 32 */
+// Class 32
typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
{
HANDLE CrashDumpSection;
} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
-/* Class 33 */
+// Class 33
typedef struct _SYSTEM_EXCEPTION_INFORMATION
{
ULONG AlignmentFixupCount;
ULONG ByteWordEmulationCount;
} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
-/* Class 34 */
+// Class 34
typedef struct _SYSTEM_CRASH_STATE_INFORMATION
{
ULONG ValidCrashDump;
} SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION;
-/* Class 35 */
+// Class 35
typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
{
BOOLEAN KernelDebuggerEnabled;
BOOLEAN KernelDebuggerNotPresent;
} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
-/* Class 36 */
+// Class 36
typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
ULONG ContextSwitches;
ULONG SwitchToIdle;
} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
-/* Class 37 */
+// Class 37
typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
ULONG RegistryQuotaAllowed;
ULONG PagedPoolSize;
} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
-/* Class 38 */
-/* Not a structure, simply send the UNICODE_STRING */
+// Class 38
+// Not a structure, simply send the UNICODE_STRING
-/* Class 39 */
-/* Not a structure, simply send a ULONG containing the new separation */
+// Class 39
+// Not a structure, simply send a ULONG containing the new separation
-/* Class 40 */
+// Class 40
typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
{
ULONG BusCount;
PLUGPLAY_BUS_INSTANCE BusInstance[1];
} SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION;
-/* Class 41 */
+// Class 41
typedef struct _SYSTEM_DOCK_INFORMATION
{
SYSTEM_DOCK_STATE DockState;
ULONG SlotNumber;
} SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
-/* Class 42 */
-/* FIXME: Conflict with WINNT.H */
-typedef struct __SYSTEM_POWER_INFORMATION
+// Class 42
+typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
{
BOOLEAN SystemSuspendSupported;
BOOLEAN SystemHibernateSupported;
BOOLEAN SystemAcOrDc;
BOOLEAN PowerDownDisabled;
LARGE_INTEGER SpindownDrives;
-} _SYSTEM_POWER_INFORMATION, *P_SYSTEM_POWER_INFORMATION;
+} SYSTEM_POWER_INFORMATION_NATIVE, *PSYSTEM_POWER_INFORMATION_NATIVE;
-/* Class 43 */
+// Class 43
typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
{
PNP_VETO_TYPE VetoType;
UNICODE_STRING VetoDriver;
- /* Buffer Follows */
+ // CHAR Buffer[0];
} SYSTEM_LEGACY_DRIVER_INFORMATION, *PSYSTEM_LEGACY_DRIVER_INFORMATION;
-/* Class 44 */
+// Class 44
typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION;
-/* Class 45 */
+// Class 45
typedef struct _SYSTEM_LOOKASIDE_INFORMATION
{
USHORT CurrentDepth;
ULONG Size;
} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
-/* Class 46 */
-/* Not a structure. Only a HANDLE for the SlipEvent; */
+// Class 46
+// Not a structure. Only a HANDLE for the SlipEvent;
-/* Class 47 */
-/* Not a structure. Only a ULONG for the SessionId; */
+// Class 47
+// Not a structure. Only a ULONG for the SessionId;
-/* Class 48 */
-/* Not a structure. Only a ULONG for the SessionId; */
+// Class 48
+// Not a structure. Only a ULONG for the SessionId;
-/* Class 49 */
-/* FIXME */
+// FIXME: Class 49
-/* Class 50 */
-/* Not a structure. Only a ULONG_PTR for the SystemRangeStart */
+// Class 50
+// Not a structure. Only a ULONG_PTR for the SystemRangeStart
-/* Class 51 */
-/* FIXME. Based on MM_DRIVER_VERIFIER_DATA */
+// FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
-/* Class 52 */
-/* FIXME */
+// FIXME: Class 52
-/* Class 53 */
+// Class 53
typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
{
- ULONG SessionId;
- ULONG BufferSize;
- PVOID Buffer; /* same format as in SystemProcessInformation */
-} SYSTEM_SESSION_PROCESSES_INFORMATION, * PSYSTEM_SESSION_PROCESSES_INFORMATION;
+ ULONG SessionId;
+ ULONG BufferSize;
+ PVOID Buffer; // Same format as in SystemProcessInformation
+} SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION;
#endif
-