-#ifndef __INCLUDE_DDK_ZWTYPES_H
-#define __INCLUDE_DDK_ZWTYPES_H
+#ifndef __INCLUDE_NTOS_ZWTYPES_H
+#define __INCLUDE_NTOS_ZWTYPES_H
#ifndef __USE_W32API
-typedef enum _THREAD_STATE {
- StateInitialized,
- StateReady,
- StateRunning,
- StateStandby,
- StateTerminated,
- StateWait,
- StateTransition,
- StateUnknown
-} THREAD_STATE;
+typedef unsigned short LANGID;
+typedef LANGID *PLANGID;
+
+typedef struct _LDT_ENTRY {
+ WORD LimitLow;
+ WORD BaseLow;
+ union {
+ struct {
+ BYTE BaseMid;
+ BYTE Flags1;
+ BYTE Flags2;
+ BYTE BaseHi;
+ } Bytes;
+ struct {
+ DWORD BaseMid : 8;
+ DWORD Type : 5;
+ DWORD Dpl : 2;
+ DWORD Pres : 1;
+ DWORD LimitHi : 4;
+ DWORD Sys : 1;
+ DWORD Reserved_0 : 1;
+ DWORD Default_Big : 1;
+ DWORD Granularity : 1;
+ DWORD BaseHi : 8;
+ } Bits;
+ } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
typedef enum _DEBUG_CONTROL_CODE
{
DebugGetTraceInformation = 1,
DebugSetInternalBreakpoint,
- DebugSetSpecialCalls,
+ DebugSetSpecialCall,
DebugClearSpecialCalls,
DebugQuerySpecialCalls,
DebugDbgBreakPoint,
ProfileTime
} KPROFILE_SOURCE;
+
// file disposition values
#define FILE_SUPERSEDE 0x0000
} SYSTEM_INFORMATION_CLASS;
// SystemBasicInformation (0)
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
typedef
struct _SYSTEM_BASIC_INFORMATION
{
- ULONG Reserved;
- ULONG TimerResolution;
- ULONG PageSize;
+ ULONG Unknown;
+ ULONG MaximumIncrement;
+ ULONG PhysicalPageSize;
ULONG NumberOfPhysicalPages;
- ULONG LowestPhysicalPageNumber;
- ULONG HighestPhysicalPageNumber;
+ ULONG LowestPhysicalPage;
+ ULONG HighestPhysicalPage;
ULONG AllocationGranularity;
- ULONG MinimumUserModeAddress;
- ULONG MaximumUserModeAddress;
- KAFFINITY ActiveProcessorsAffinityMask;
- CCHAR NumberOfProcessors;
+ ULONG LowestUserAddress;
+ ULONG HighestUserAddress;
+ KAFFINITY ActiveProcessors;
+ CCHAR NumberProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
// SystemProcessorInformation (1)
-typedef
-struct _SYSTEM_PROCESSOR_INFORMATION
-{
- USHORT ProcessorArchitecture;
- USHORT ProcessorLevel;
- USHORT ProcessorRevision;
- USHORT Reserved;
- ULONG ProcessorFeatureBits;
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
+typedef struct _SYSTEM_PROCESSOR_INFORMATION {
+ USHORT ProcessorArchitecture;
+ USHORT ProcessorLevel;
+ USHORT ProcessorRevision;
+ USHORT Unknown;
+ ULONG FeatureBits;
} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
// SystemPerformanceInfo (2)
-typedef
-struct _SYSTEM_PERFORMANCE_INFORMATION
-{
- LARGE_INTEGER IdleProcessorTime;
- LARGE_INTEGER IoReadTransferCount;
- LARGE_INTEGER IoWriteTransferCount;
- LARGE_INTEGER IoOtherTransferCount;
- ULONG IoReadOperationCount;
- ULONG IoWriteOperationCount;
- ULONG IoOtherOperationCount;
- ULONG AvailablePages;
- ULONG CommitedPages;
- ULONG CommitLimit;
- ULONG PeakCommitment;
- ULONG PageFaultCount;
- ULONG CopyOnWriteCount;
- ULONG TransitionCount;
- ULONG CacheTransitionCount;
- ULONG DemandZeroCount;
- ULONG PageReadCount;
- ULONG PageReadIoCount;
- ULONG CacheReadCount;
- ULONG CacheIoCount;
- ULONG DirtyPagesWriteCount;
- ULONG DirtyWriteIoCount;
- ULONG MappedPagesWriteCount;
- ULONG MappedWriteIoCount;
- ULONG PagedPoolPages;
- ULONG NonPagedPoolPages;
- ULONG Unknown6;
- ULONG Unknown7;
- ULONG Unknown8;
- ULONG Unknown9;
- ULONG MmTotalSystemFreePtes;
- ULONG MmSystemCodepage;
- ULONG MmTotalSystemDriverPages;
- ULONG MmTotalSystemCodePages;
- ULONG Unknown10;
- ULONG Unknown11;
- ULONG Unknown12;
- ULONG MmSystemCachePage;
- ULONG MmPagedPoolPage;
- ULONG MmSystemDriverPage;
- ULONG CcFastReadNoWait;
- ULONG CcFastReadWait;
- ULONG CcFastReadResourceMiss;
- ULONG CcFastReadNotPossible;
- ULONG CcFastMdlReadNoWait;
- ULONG CcFastMdlReadWait;
- ULONG CcFastMdlReadResourceMiss;
- ULONG CcFastMdlReadNotPossible;
- ULONG CcMapDataNoWait;
- ULONG CcMapDataWait;
- ULONG CcMapDataNoWaitMiss;
- ULONG CcMapDataWaitMiss;
- ULONG CcPinMappedDataCount;
- ULONG CcPinReadNoWait;
- ULONG CcPinReadWait;
- ULONG CcPinReadNoWaitMiss;
- ULONG CcPinReadWaitMiss;
- ULONG CcCopyReadNoWait;
- ULONG CcCopyReadWait;
- ULONG CcCopyReadNoWaitMiss;
- ULONG CcCopyReadWaitMiss;
- ULONG CcMdlReadNoWait;
- ULONG CcMdlReadWait;
- ULONG CcMdlReadNoWaitMiss;
- ULONG CcMdlReadWaitMiss;
- ULONG CcReadaheadIos;
- ULONG CcLazyWriteIos;
- ULONG CcLazyWritePages;
- ULONG CcDataFlushes;
- ULONG CcDataPages;
- ULONG ContextSwitches;
- ULONG Unknown13;
- ULONG Unknown14;
- ULONG SystemCalls;
-
-} SYSTEM_PERFORMANCE_INFO, *PSYSTEM_PERFORMANCE_INFO;
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
+ LARGE_INTEGER IdleTime;
+ LARGE_INTEGER ReadTransferCount;
+ LARGE_INTEGER WriteTransferCount;
+ LARGE_INTEGER OtherTransferCount;
+ ULONG ReadOperationCount;
+ ULONG WriteOperationCount;
+ ULONG OtherOperationCount;
+ ULONG AvailablePages;
+ ULONG TotalCommittedPages;
+ ULONG TotalCommitLimit;
+ ULONG PeakCommitment;
+ ULONG PageFaults;
+ ULONG WriteCopyFaults;
+ ULONG TransitionFaults;
+ ULONG CacheTransitionFaults;
+ ULONG DemandZeroFaults;
+ ULONG PagesRead;
+ ULONG PageReadIos;
+ ULONG CacheReads;
+ ULONG CacheIos;
+ ULONG PagefilePagesWritten;
+ ULONG PagefilePageWriteIos;
+ ULONG MappedFilePagesWritten;
+ ULONG MappedFilePageWriteIos;
+ ULONG PagedPoolUsage;
+ ULONG NonPagedPoolUsage;
+ ULONG PagedPoolAllocs;
+ ULONG PagedPoolFrees;
+ ULONG NonPagedPoolAllocs;
+ ULONG NonPagedPoolFrees;
+ ULONG TotalFreeSystemPtes;
+ ULONG SystemCodePage;
+ ULONG TotalSystemDriverPages;
+ ULONG TotalSystemCodePages;
+ ULONG SmallNonPagedLookasideListAllocateHits;
+ ULONG SmallPagedLookasideListAllocateHits;
+ ULONG Reserved3;
+ ULONG MmSystemCachePage;
+ ULONG PagedPoolPage;
+ ULONG SystemDriverPage;
+ ULONG FastReadNoWait;
+ ULONG FastReadWait;
+ ULONG FastReadResourceMiss;
+ ULONG FastReadNotPossible;
+ ULONG FastMdlReadNoWait;
+ ULONG FastMdlReadWait;
+ ULONG FastMdlReadResourceMiss;
+ ULONG FastMdlReadNotPossible;
+ ULONG MapDataNoWait;
+ ULONG MapDataWait;
+ ULONG MapDataNoWaitMiss;
+ ULONG MapDataWaitMiss;
+ ULONG PinMappedDataCount;
+ ULONG PinReadNoWait;
+ ULONG PinReadWait;
+ ULONG PinReadNoWaitMiss;
+ ULONG PinReadWaitMiss;
+ ULONG CopyReadNoWait;
+ ULONG CopyReadWait;
+ ULONG CopyReadNoWaitMiss;
+ ULONG CopyReadWaitMiss;
+ ULONG MdlReadNoWait;
+ ULONG MdlReadWait;
+ ULONG MdlReadNoWaitMiss;
+ ULONG MdlReadWaitMiss;
+ ULONG ReadAheadIos;
+ ULONG LazyWriteIos;
+ ULONG LazyWritePages;
+ ULONG DataFlushes;
+ ULONG DataPages;
+ ULONG ContextSwitches;
+ ULONG FirstLevelTbFills;
+ ULONG SecondLevelTbFills;
+ ULONG SystemCalls;
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
+
+/*#ifndef __USE_W32API*/
+
+// SystemProcessThreadInfo (5)
+typedef struct _SYSTEM_THREAD_INFORMATION
+{
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER CreateTime;
+ ULONG WaitTime;
+ PVOID StartAddress;
+ CLIENT_ID ClientId;
+ KPRIORITY Priority;
+ LONG BasePriority;
+ ULONG ContextSwitches;
+ ULONG ThreadState;
+ ULONG WaitReason;
+} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
+
+typedef struct _SYSTEM_PROCESS_INFORMATION
+{
+ ULONG NextEntryOffset;
+ ULONG NumberOfThreads;
+ LARGE_INTEGER SpareLi1;
+ LARGE_INTEGER SpareLi2;
+ LARGE_INTEGER SpareLi3;
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER KernelTime;
+ UNICODE_STRING ImageName;
+ KPRIORITY BasePriority;
+ HANDLE UniqueProcessId;
+ HANDLE InheritedFromUniqueProcessId;
+ ULONG HandleCount;
+ ULONG SessionId;
+ ULONG PageDirectoryFrame;
+
+ /*
+ * This part corresponds to VM_COUNTERS_EX.
+ * NOTE: *NOT* THE SAME AS VM_COUNTERS!
+ */
+ ULONG PeakVirtualSize;
+ ULONG VirtualSize;
+ ULONG PageFaultCount;
+ ULONG PeakWorkingSetSize;
+ ULONG WorkingSetSize;
+ ULONG QuotaPeakPagedPoolUsage;
+ ULONG QuotaPagedPoolUsage;
+ ULONG QuotaPeakNonPagedPoolUsage;
+ ULONG QuotaNonPagedPoolUsage;
+ ULONG PagefileUsage;
+ ULONG PeakPagefileUsage;
+ ULONG PrivateUsage;
+
+ /* This part corresponds to IO_COUNTERS */
+ LARGE_INTEGER ReadOperationCount;
+ LARGE_INTEGER WriteOperationCount;
+ LARGE_INTEGER OtherOperationCount;
+ LARGE_INTEGER ReadTransferCount;
+ LARGE_INTEGER WriteTransferCount;
+ LARGE_INTEGER OtherTransferCount;
+
+ /* Finally, the array of Threads */
+ SYSTEM_THREAD_INFORMATION TH[1];
+} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
+
+/*#endif */
// SystemModuleInformation (11)
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
// SystemHandleInformation (16)
// (see ontypes.h)
typedef
-struct _SYSTEM_HANDLE_ENTRY
+struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
{
- ULONG OwnerPid;
- BYTE ObjectType;
- BYTE HandleFlags;
+ USHORT UniqueProcessId;
+ USHORT CreatorBackTraceIndex;
+ UCHAR ObjectTypeIndex;
+ UCHAR HandleAttributes;
USHORT HandleValue;
- PVOID ObjectPointer;
- ULONG AccessMask;
+ PVOID Object;
+ ULONG GrantedAccess;
-} SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
+} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
typedef
struct _SYSTEM_HANDLE_INFORMATION
{
- ULONG Count;
- SYSTEM_HANDLE_ENTRY Handle [1];
+ ULONG NumberOfHandles;
+ SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
typedef
struct _SYSTEM_PAGEFILE_INFORMATION
{
- ULONG RelativeOffset;
- ULONG CurrentSizePages;
- ULONG TotalUsedPages;
- ULONG PeakUsedPages;
- UNICODE_STRING PagefileFileName;
-
+ ULONG NextEntryOffset;
+ ULONG TotalSize;
+ ULONG TotalInUse;
+ ULONG PeakUsage;
+ UNICODE_STRING PageFileName;
+
} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
// SystemCacheInformation (21)
ULONG PageFaultCount;
ULONG MinimumWorkingSet;
ULONG MaximumWorkingSet;
- ULONG Unused[4];
+ ULONG TransitionSharedPages;
+ ULONG TransitionSharedPagesPeak;
+ ULONG Unused[2];
} SYSTEM_CACHE_INFORMATION;
+// SystemInterruptInformation (23)
+typedef
+struct _SYSTEM_INTERRUPT_INFORMATION
+{
+ ULONG ContextSwitches;
+ ULONG DpcCount;
+ ULONG DpcRate;
+ ULONG TimeIncrement;
+ ULONG DpcBypassCount;
+ ULONG ApcBypassCount;
+
+} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
+
// SystemDpcInformation (24)
typedef
struct _SYSTEM_DPC_INFORMATION
ULONG TimeAdjustment;
BOOLEAN TimeSynchronization;
-} SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
+} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
// atom information
UNICODE_STRING ModuleName;
} SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE;
+// SystemRegistryQuotaInformation (37)
+typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
+ ULONG RegistryQuotaAllowed;
+ ULONG RegistryQuotaUsed;
+ PVOID Reserved1;
+} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
+
+
// SystemTimeZoneInformation (44)
typedef
struct _SYSTEM_TIME_ZONE_INFORMATION
} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
// Information Class 2
-#define _MEMORY_SECTION_NAME_STATIC(__bufsize__) \
+/*#define _MEMORY_SECTION_NAME_STATIC(__bufsize__) \
{ \
UNICODE_STRING SectionFileName; \
WCHAR NameBuffer[(__bufsize__)]; \
-}
-
-#define MEMORY_SECTION_NAME_STATIC(__bufsize__) \
- struct _MEMORY_SECTION_NAME_STATIC((__bufsize__)
+}*/
-typedef struct _MEMORY_SECTION_NAME_STATIC(ANYSIZE_ARRAY)
- MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
+typedef struct
+{
+ UNICODE_STRING SectionFileName;
+ WCHAR NameBuffer[ANYSIZE_ARRAY];
+} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
// Information class 0
typedef struct _PROCESS_BASIC_INFORMATION
PPEB PebBaseAddress;
KAFFINITY AffinityMask;
KPRIORITY BasePriority;
- ULONG UniqueProcessId;
- ULONG InheritedFromUniqueProcessId;
+ HANDLE UniqueProcessId;
+ HANDLE InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
// Information class 1
{
ULONG PagedPoolLimit;
ULONG NonPagedPoolLimit;
- ULONG MinimumWorkingSetSize;
- ULONG MaximumWorkingSetSize;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
ULONG PagefileLimit;
TIME TimeLimit;
} QUOTA_LIMITS, *PQUOTA_LIMITS;
// Information class 4
typedef struct _KERNEL_USER_TIMES
{
- TIME CreateTime;
- TIME ExitTime;
- TIME KernelTime;
- TIME UserTime;
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER ExitTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
// Information class 9
UCHAR DriveType[32];
} Query;
};
-} PROCESS_DEVICEMAP_INFORMATION, *pPROCESS_DEVICEMAP_INFORMATION;
+} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
// Information class 24
typedef struct _PROCESS_SESSION_INFORMATION
// file information
-typedef struct _FILE_BASIC_INFORMATION
-{
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- ULONG FileAttributes;
-} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
-typedef struct _FILE_STANDARD_INFORMATION
-{
- LARGE_INTEGER AllocationSize;
- LARGE_INTEGER EndOfFile;
- ULONG NumberOfLinks;
- BOOLEAN DeletePending;
- BOOLEAN Directory;
-} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
typedef struct _FILE_POSITION_INFORMATION
{
LARGE_INTEGER EndOfFile;
} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
-typedef struct _FILE_NETWORK_OPEN_INFORMATION
-{
- TIME CreationTime;
- TIME LastAccessTime;
- TIME LastWriteTime;
- TIME ChangeTime;
- LARGE_INTEGER AllocationSize;
- LARGE_INTEGER EndOfFile;
- ULONG FileAttributes;
-} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
-
typedef struct _FILE_FULL_EA_INFORMATION
{
ULONG NextEntryOffset;
UCHAR Flags;
UCHAR EaNameLength;
USHORT EaValueLength;
- CHAR EaName[0];
+ CHAR EaName[1];
} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
typedef struct _FILE_COMPLETION_INFORMATION { // Information Class 30
HANDLE IoCompletionHandle;
- ULONG CompletionKey;
+ PVOID CompletionKey;
} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
typedef struct _FILE_ALL_INFORMATION {
WCHAR VolumeLabel[0];
} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
-// read file scatter / write file scatter
-//FIXME I am a win32 struct aswell
-
-typedef union _FILE_SEGMENT_ELEMENT {
- PVOID Buffer;
- ULONG Alignment;
-}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
typedef struct _FILE_DIRECTORY_INFORMATION {
ULONG NextEntryOffset;
ULONG FileIndex;
- TIME CreationTime;
- TIME LastAccessTime;
- TIME LastWriteTime;
- TIME ChangeTime;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
LARGE_INTEGER EndOfFile;
LARGE_INTEGER AllocationSize;
ULONG FileAttributes;
typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
ULONG NextEntryOffset;
ULONG FileIndex;
- TIME CreationTime;
- TIME LastAccessTime;
- TIME LastWriteTime;
- TIME ChangeTime;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
LARGE_INTEGER EndOfFile;
LARGE_INTEGER AllocationSize;
ULONG FileAttributes;
typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
ULONG NextEntryOffset;
ULONG FileIndex;
- TIME CreationTime;
- TIME LastAccessTime;
- TIME LastWriteTime;
- TIME ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
ULONG FileAttributes;
ULONG FileNameLength;
ULONG EaSize;
*/
typedef struct _FILE_NOTIFY_INFORMATION {
- ULONG Action;
- ULONG FileNameLength;
- WCHAR FileName[0];
-} FILE_NOTIFY_INFORMATION;
+ ULONG NextEntryOffset;
+ ULONG Action;
+ ULONG NameLength;
+ WCHAR Name[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
#define FSCTL_GET_VOLUME_BITMAP 0x9006F
#define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
#define FSCTL_MOVE_FILE 0x90074
-typedef struct _MAPPING_PAIR
-{
- ULONGLONG Vcn;
- ULONGLONG Lcn;
-} MAPPING_PAIR, *PMAPPING_PAIR;
-
-typedef struct _GET_RETRIEVAL_DESCRIPTOR
-{
- ULONG NumberOfPairs;
- ULONGLONG StartVcn;
- MAPPING_PAIR Pair[0]; // variable size
-} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
-
-typedef struct _MOVEFILE_DESCRIPTOR
-{
- HANDLE FileHandle;
- ULONG Reserved;
- LARGE_INTEGER StartVcn;
- LARGE_INTEGER TargetLcn;
- ULONG NumVcns;
- ULONG Reserved1;
-} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR;
+/* Structure copied from ntifs.h (Must be in sync!) */
+#include <pshpack8.h>
+typedef struct _RETRIEVAL_POINTERS_BUFFER {
+ ULONG ExtentCount;
+ LARGE_INTEGER StartingVcn;
+ struct {
+ LARGE_INTEGER NextVcn;
+ LARGE_INTEGER Lcn;
+ } Extents[1];
+} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
+#include <poppack.h>
typedef struct _SECTION_BASIC_INFORMATION
{
} IO_COMPLETION_INFORMATION_CLASS;
typedef struct _IO_COMPLETION_BASIC_INFORMATION {
- LONG SignalState;
+ LONG Depth;
} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
#else /* __USE_W32API */
#endif /* __USE_W32API */
+#ifdef __USE_W32API
+#include <ddk/ntddk.h>
+#endif /* __USE_W32API */
+#ifndef NtCurrentProcess
#define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
+#endif /* NtCurrentProcess */
+#ifndef NtCurrentThread
#define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
-#if 1
-extern ULONG NtBuildNumber;
-#else
+#endif /* NtCurrentThread */
+
+#ifdef __GNUC__
#ifdef __NTOSKRNL__
-extern ULONG NtBuildNumber;
+extern ULONG EXPORTED NtBuildNumber;
#else
-extern ULONG NtBuildNumber;
+extern ULONG IMPORTED NtBuildNumber;
#endif
+#else
+/* Microsoft-style declarations */
+#ifdef __NTOSKRNL__
+extern EXPORTED ULONG NtBuildNumber;
+#else
+extern IMPORTED ULONG NtBuildNumber;
#endif
+#endif /* __GNUC__ */
+
// event access mask
#define ProcessSessionInformation 24
#define ProcessForegroundInformation 25
#define ProcessWow64Information 26
-/* ReactOS private. */
#define ProcessImageFileName 27
-#define ProcessDesktop 28
-#define MaxProcessInfoClass 29
+#define ProcessLUIDDeviceMapsEnabled 28
+#define ProcessBreakOnTermination 29
+#define ProcessDebugObjectHandle 30
+#define ProcessDebugFlags 31
+#define ProcessHandleTracing 32
+#define ProcessUnknown33 33
+#define ProcessUnknown34 34
+#define ProcessUnknown35 35
+#define ProcessCookie 36
+#define MaxProcessInfoClass 36
/*
* thread query / set information class
#define ThreadHideFromDebugger 17
#define MaxThreadInfoClass 17
-// object handle information
-
-#define ObjectBasicInformation 0
-#define ObjectNameInformation 1
-#define ObjectTypeInformation 2
-#define ObjectAllInformation 3
-#define ObjectDataInformation 4
typedef struct _ATOM_TABLE_INFORMATION
{
typedef struct _MUTANT_BASIC_INFORMATION
{
- LONG Count;
- BOOLEAN Owned;
- BOOLEAN Abandoned;
+ LONG CurrentCount;
+ BOOLEAN OwnedByCaller;
+ BOOLEAN AbandonedState;
} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
} SYSTEM_PATH_INFORMATION, * PSYSTEM_PATH_INFORMATION;
-// SystemProcessInformation (5)
-
-#ifndef __USE_W32API
-
-typedef struct _SYSTEM_THREADS {
- LARGE_INTEGER KernelTime;
- LARGE_INTEGER UserTime;
- LARGE_INTEGER CreateTime;
- ULONG WaitTime;
- PVOID StartAddress;
- CLIENT_ID ClientId;
- KPRIORITY Priority;
- KPRIORITY BasePriority;
- ULONG ContextSwitchCount;
- THREAD_STATE State;
- KWAIT_REASON WaitReason;
-} SYSTEM_THREADS, *PSYSTEM_THREADS;
-
-#endif /* __USE_W32API */
-
-typedef struct _SYSTEM_PROCESSES_NT4
-{
- SIZE_T NextEntryDelta;
- ULONG ThreadCount;
- ULONG Reserved1[6];
- TIME CreateTime;
- TIME UserTime;
- TIME KernelTime;
- UNICODE_STRING ProcessName;
- KPRIORITY BasePriority;
- ULONG ProcessId;
- ULONG InheritedFromProcessId;
- ULONG HandleCount;
- ULONG Reserved2[2];
- VM_COUNTERS VmCounters;
- SYSTEM_THREADS Threads[ANYSIZE_ARRAY];
-} SYSTEM_PROCESSES_NT4, *PSYSTEM_PROCESSES_NT4;
-
-typedef struct _SYSTEM_PROCESSES_NT5
-{
- SIZE_T NextEntryDelta;
- ULONG ThreadCount;
- ULONG Reserved1[6];
- TIME CreateTime;
- TIME UserTime;
- TIME KernelTime;
- UNICODE_STRING ProcessName;
- KPRIORITY BasePriority;
- ULONG ProcessId;
- ULONG InheritedFromProcessId;
- ULONG HandleCount;
- ULONG Reserved2[2];
- VM_COUNTERS VmCounters;
- IO_COUNTERS IoCounters;
- SYSTEM_THREADS Threads[ANYSIZE_ARRAY];
-} SYSTEM_PROCESSES_NT5, *PSYSTEM_PROCESSES_NT5;
-
-#ifndef __USE_W32API
-
-/* Not sure. What version are we emulating? */
-typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
-
-#endif /* __USE_W32API */
// SystemCallCountInformation (6)
typedef
// SystemProcessorPerformanceInformation (8)
// (one per processor in the system)
typedef
-struct _SYSTEM_PROCESSORTIME_INFO
-{
- TIME TotalProcessorRunTime;
- TIME TotalProcessorTime;
- TIME TotalProcessorUserTime;
- TIME TotalDPCTime;
- TIME TotalInterruptTime;
- ULONG TotalInterrupts;
- ULONG Unused;
+struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
+{
+ LARGE_INTEGER IdleTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER DpcTime;
+ LARGE_INTEGER InterruptTime;
+ ULONG InterruptCount;
+ ULONG Reserved;
-} SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO;
+} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
// SystemFlagsInformation (9)
typedef
#define THREAD_WAIT_OBJECTS 3
//#define MAXIMUM_WAIT_OBJECTS 64
-// object type access rights
+// object type access rights
#define OBJECT_TYPE_CREATE 0x0001
#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
// directory access rights
+#ifndef __USE_W32API
#define DIRECTORY_QUERY 0x0001
#define DIRECTORY_TRAVERSE 0x0002
#define DIRECTORY_CREATE_OBJECT 0x0004
#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
+#endif
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
-typedef struct _OBJECT_DATA_INFORMATION
-{
- BOOLEAN bInheritHandle;
- BOOLEAN bProtectFromClose;
-} OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
+/* object information class */
+#ifndef __USE_W32API
-typedef struct _OBJECT_TYPE_INFORMATION
+typedef enum _OBJECT_INFORMATION_CLASS
{
- UNICODE_STRING Name;
- UNICODE_STRING Type;
- ULONG TotalHandles;
- ULONG ReferenceCount;
-} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
+ ObjectBasicInformation,
+ ObjectNameInformation,
+ ObjectTypeInformation,
+ ObjectAllTypesInformation,
+ ObjectHandleInformation
+} OBJECT_INFORMATION_CLASS;
// directory information
-typedef struct _OBJDIR_INFORMATION {
+typedef struct _OBJECT_DIRECTORY_INFORMATION
+{
UNICODE_STRING ObjectName;
UNICODE_STRING ObjectTypeName; // Directory, Device ...
- UCHAR Data[0];
-} OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
+} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
+
+
+/* system battery state */
+typedef struct _SYSTEM_BATTERY_STATE {
+ BOOLEAN AcOnLine;
+ BOOLEAN BatteryPresent;
+ BOOLEAN Charging;
+ BOOLEAN Discharging;
+ BOOLEAN Spare1[4];
+ ULONG MaxCapacity;
+ ULONG RemainingCapacity;
+ ULONG Rate;
+ ULONG EstimatedTime;
+ ULONG DefaultAlert1;
+ ULONG DefaultAlert2;
+} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
+
+
+// power information levels
+typedef enum _POWER_INFORMATION_LEVEL {
+ SystemPowerPolicyAc,
+ SystemPowerPolicyDc,
+ VerifySystemPolicyAc,
+ VerifySystemPolicyDc,
+ SystemPowerCapabilities,
+ SystemBatteryState,
+ SystemPowerStateHandler,
+ ProcessorStateHandler,
+ SystemPowerPolicyCurrent,
+ AdministratorPowerPolicy,
+ SystemReserveHiberFile,
+ ProcessorInformation,
+ SystemPowerInformationData
+} POWER_INFORMATION_LEVEL;
+#endif /* __USE_W32API */
/*
Action is one of the following values:
#define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
-typedef struct _BITMAP_DESCRIPTOR
-{
- ULONGLONG StartLcn;
- ULONGLONG ClustersToEndOfVol;
- BYTE Map[0]; // variable size
-} BITMAP_DESCRIPTOR, *PBITMAP_DESCRIPTOR;
-
-
//typedef enum _TIMER_TYPE
//{
// NotificationTimer,
TimerBasicInformation
} TIMER_INFORMATION_CLASS;
-typedef
-struct _LPC_PORT_BASIC_INFORMATION
+#ifndef __USE_W32API
+
+typedef enum
+{
+ UNUSED_MSG_TYPE = 0x0, /* ReactOS */
+ LPC_NEW_MESSAGE = 0x0, /* NT */
+ LPC_REQUEST = 0x1,
+ LPC_REPLY = 0x2,
+ LPC_DATAGRAM = 0x3,
+ LPC_LOST_REPLY = 0x4,
+ LPC_PORT_CLOSED = 0x5,
+ LPC_CLIENT_DIED = 0x6,
+ LPC_EXCEPTION = 0x7,
+ LPC_DEBUG_EVENT = 0x8,
+ LPC_ERROR_EVENT = 0x9,
+ LPC_CONNECTION_REQUEST = 0xa,
+ LPC_CONNECTION_REFUSED = 0xb /* ReactOS only */
+
+} LPC_TYPE, *PLPC_TYPE;
+
+typedef struct _LPC_SECTION_WRITE
+{
+ ULONG Length;
+ HANDLE SectionHandle;
+ ULONG SectionOffset;
+ ULONG ViewSize;
+ PVOID ViewBase;
+ PVOID TargetViewBase;
+} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
+
+typedef struct _LPC_SECTION_READ
+{
+ ULONG Length;
+ ULONG ViewSize;
+ PVOID ViewBase;
+} LPC_SECTION_READ, *PLPC_SECTION_READ;
+
+typedef struct _LPC_MESSAGE
+{
+ USHORT DataSize;
+ USHORT MessageSize;
+ USHORT MessageType;
+ USHORT VirtualRangesOffset;
+ CLIENT_ID ClientId;
+ ULONG MessageId;
+ ULONG SectionSize; /* CallbackID */
+} LPC_MESSAGE, *PLPC_MESSAGE;
+
+#define LPC_MESSAGE_BASE_SIZE sizeof(LPC_MESSAGE)
+
+#define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
+
+#define PORT_MAX_DATA_LENGTH 0x104
+#define PORT_MAX_MESSAGE_LENGTH 0x148
+
+#endif /* __USE_W32API */
+
+#define MAX_MESSAGE_DATA (0x130)
+
+typedef struct _LPC_MAX_MESSAGE
+{
+ LPC_MESSAGE Header;
+ BYTE Data[MAX_MESSAGE_DATA];
+} LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
+
+typedef struct _LPC_PORT_BASIC_INFORMATION
{
DWORD Unknown0;
DWORD Unknown1;
} LPC_PORT_BASIC_INFORMATION, * PLPC_PORT_BASIC_INFORMATION;
+
typedef struct _KINTERRUPT
{
ULONG Vector;
KAFFINITY ProcessorEnableMask;
- PKSPIN_LOCK IrqLock;
+ KSPIN_LOCK SpinLock;
+ PKSPIN_LOCK ActualLock;
BOOLEAN Shareable;
BOOLEAN FloatingSave;
+ CHAR ProcessorNumber;
PKSERVICE_ROUTINE ServiceRoutine;
PVOID ServiceContext;
LIST_ENTRY Entry;
+ KIRQL Irql;
KIRQL SynchLevel;
+ KINTERRUPT_MODE InterruptMode;
} KINTERRUPT;
#ifndef __USE_W32API
typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef VOID STDCALL_FUNC
+(*PTIMER_APC_ROUTINE)(
+ IN PVOID TimerContext,
+ IN ULONG TimerLowValue,
+ IN LONG TimerHighValue);
+
#endif /* __USE_W32API */
+/* BEGIN REACTOS ONLY */
+
+typedef enum _TRAVERSE_METHOD {
+ TraverseMethodPreorder,
+ TraverseMethodInorder,
+ TraverseMethodPostorder
+} TRAVERSE_METHOD;
+
+typedef LONG STDCALL_FUNC
+(*PKEY_COMPARATOR)(IN PVOID Key1,
+ IN PVOID Key2);
+
+typedef BOOLEAN STDCALL_FUNC
+(*PTRAVERSE_ROUTINE)(IN PVOID Context,
+ IN PVOID Key,
+ IN PVOID Value);
+
+struct _BINARY_TREE_NODE;
+
+typedef struct _BINARY_TREE
+{
+ struct _BINARY_TREE_NODE * RootNode;
+ PKEY_COMPARATOR Compare;
+ BOOLEAN UseNonPagedPool;
+ union {
+ NPAGED_LOOKASIDE_LIST NonPaged;
+ PAGED_LOOKASIDE_LIST Paged;
+ } List;
+ union {
+ KSPIN_LOCK NonPaged;
+ FAST_MUTEX Paged;
+ } Lock;
+} BINARY_TREE, *PBINARY_TREE;
+
+
+struct _SPLAY_TREE_NODE;
+
+typedef struct _SPLAY_TREE
+{
+ struct _SPLAY_TREE_NODE * RootNode;
+ PKEY_COMPARATOR Compare;
+ BOOLEAN Weighted;
+ BOOLEAN UseNonPagedPool;
+ union {
+ NPAGED_LOOKASIDE_LIST NonPaged;
+ PAGED_LOOKASIDE_LIST Paged;
+ } List;
+ union {
+ KSPIN_LOCK NonPaged;
+ FAST_MUTEX Paged;
+ } Lock;
+ PVOID Reserved[4];
+} SPLAY_TREE, *PSPLAY_TREE;
+
+
+typedef struct _HASH_TABLE
+{
+ // Size of hash table in number of bits
+ ULONG HashTableSize;
+
+ // Use non-paged pool memory?
+ BOOLEAN UseNonPagedPool;
+
+ // Lock for this structure
+ union {
+ KSPIN_LOCK NonPaged;
+ FAST_MUTEX Paged;
+ } Lock;
+
+ // Pointer to array of hash buckets with splay trees
+ PSPLAY_TREE HashTrees;
+} HASH_TABLE, *PHASH_TABLE;
+
+
+/* END REACTOS ONLY */
+
#endif