-/*\r
- * PROJECT: ReactOS Native Headers\r
- * FILE: include/ndk/umtypes.h\r
- * PURPOSE: Definitions needed for Native Headers if target is not Kernel-Mode.\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- * UPDATE HISTORY:\r
- * Created 06/10/04\r
- */\r
-\r
-#ifndef _UMTYPES_H\r
-#define _UMTYPES_H\r
-\r
-/* DEPENDENCIES **************************************************************/\r
-#include <winioctl.h>\r
-#include <ntstatus.h>\r
-#include <ntnls.h>\r
-#define STATIC static\r
-\r
-/* EXPORTED DATA *************************************************************/\r
-\r
-/* CONSTANTS *****************************************************************/\r
-\r
-/* NTAPI/NTOSAPI Define */\r
-#define NTAPI __stdcall\r
-#define NTOSAPI\r
-#define FASTCALL __fastcall\r
-#define STDCALL __stdcall\r
-\r
-/* Definitions for Object Creation -- winternl.h */\r
-#define OBJ_INHERIT 2L\r
-#define OBJ_PERMANENT 16L\r
-#define OBJ_EXCLUSIVE 32L\r
-#define OBJ_CASE_INSENSITIVE 64L\r
-#define OBJ_OPENIF 128L\r
-#define OBJ_OPENLINK 256L\r
-#define OBJ_VALID_ATTRIBUTES 498L\r
-#define InitializeObjectAttributes(p,n,a,r,s) { \\r
- (p)->Length = sizeof(OBJECT_ATTRIBUTES); \\r
- (p)->RootDirectory = (r); \\r
- (p)->Attributes = (a); \\r
- (p)->ObjectName = (n); \\r
- (p)->SecurityDescriptor = (s); \\r
- (p)->SecurityQualityOfService = NULL; \\r
-}\r
-\r
-/* Native API Return Value Macros */\r
-#define NT_SUCCESS(x) ((x)>=0)\r
-#define NT_WARNING(x) ((ULONG)(x)>>30==2)\r
-#define NT_ERROR(x) ((ULONG)(x)>>30==3)\r
-\r
-/* Object Access Rights FIXME: Some are in w32api's psdk..,is that normal ?*/\r
-#define DIRECTORY_QUERY (0x0001)\r
-#define DIRECTORY_TRAVERSE (0x0002)\r
-#define DIRECTORY_CREATE_OBJECT (0x0004)\r
-#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)\r
-#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)\r
-#define EVENT_QUERY_STATE (0x0001)\r
-#define SEMAPHORE_QUERY_STATE (0x0001)\r
-#define SYMBOLIC_LINK_QUERY 0x0001\r
-#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)\r
-\r
-/* I/O Control Codes for communicating with Mailslots */\r
-#define FSCTL_MAILSLOT_PEEK \\r
- CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)\r
-\r
-/* I/O Control Codes for communicating with Pipes */\r
-#define FSCTL_PIPE_ASSIGN_EVENT \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_DISCONNECT \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_LISTEN \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_PEEK \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)\r
-#define FSCTL_PIPE_QUERY_EVENT \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_TRANSCEIVE \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)\r
-#define FSCTL_PIPE_WAIT \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_IMPERSONATE \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_SET_CLIENT_PROCESS \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
-#define FSCTL_PIPE_INTERNAL_READ \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)\r
-#define FSCTL_PIPE_INTERNAL_WRITE \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)\r
-#define FSCTL_PIPE_INTERNAL_TRANSCEIVE \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)\r
-#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \\r
- CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)\r
-\r
-/* I/O Control Codes for Communicating with Tapes */ \r
-#define IOCTL_TAPE_ERASE \\r
- CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
-#define IOCTL_TAPE_PREPARE \\r
- CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_WRITE_MARKS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
-#define IOCTL_TAPE_GET_POSITION \\r
- CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_SET_POSITION \\r
- CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_GET_DRIVE_PARAMS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_SET_DRIVE_PARAMS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
-#define IOCTL_TAPE_GET_MEDIA_PARAMS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_SET_MEDIA_PARAMS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_GET_STATUS \\r
- CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)\r
-#define IOCTL_TAPE_CREATE_PARTITION \\r
- CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
-\r
-/* Macros for current Process/Thread built-in 'special' ID */\r
-#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )\r
-#define ZwCurrentProcess() NtCurrentProcess()\r
-#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )\r
-#define ZwCurrentThread() NtCurrentThread()\r
-\r
-/* Kernel Shared Data Constants */\r
-#define PROCESSOR_FEATURE_MAX 64\r
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)\r
-\r
-/* Paging Values on x86 */\r
-#define PAGE_SIZE 0x1000\r
-#define PAGE_SHIFT 12L\r
-\r
-/* Run-Time Library (RTL) Registry Constants */\r
-#define RTL_REGISTRY_ABSOLUTE 0\r
-#define RTL_REGISTRY_SERVICES 1\r
-#define RTL_REGISTRY_CONTROL 2\r
-#define RTL_REGISTRY_WINDOWS_NT 3\r
-#define RTL_REGISTRY_DEVICEMAP 4\r
-#define RTL_REGISTRY_USER 5\r
-#define RTL_REGISTRY_MAXIMUM 6\r
-#define RTL_REGISTRY_HANDLE 0x40000000\r
-#define RTL_REGISTRY_OPTIONAL 0x80000000\r
-#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001\r
-#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002\r
-#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004\r
-#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008\r
-#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010\r
-#define RTL_QUERY_REGISTRY_DIRECT 0x00000020\r
-#define RTL_QUERY_REGISTRY_DELETE 0x00000040\r
-\r
-/* File Result Flags */\r
-#define FILE_SUPERSEDED 0x00000000\r
-#define FILE_OPENED 0x00000001\r
-#define FILE_CREATED 0x00000002\r
-#define FILE_OVERWRITTEN 0x00000003\r
-#define FILE_EXISTS 0x00000004\r
-#define FILE_DOES_NOT_EXIST 0x00000005\r
-\r
-/* Pipe Flags */\r
-#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000\r
-#define FILE_PIPE_MESSAGE_MODE 0x00000001\r
-#define FILE_PIPE_QUEUE_OPERATION 0x00000000\r
-#define FILE_PIPE_COMPLETE_OPERATION 0x00000001\r
-#define FILE_PIPE_INBOUND 0x00000000\r
-#define FILE_PIPE_OUTBOUND 0x00000001\r
-#define FILE_PIPE_FULL_DUPLEX 0x00000002\r
-#define FILE_PIPE_CLIENT_END 0x00000000\r
-#define FILE_PIPE_SERVER_END 0x00000001\r
-\r
-/* File Attributes */\r
-#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7\r
-#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7\r
-\r
-/* File Flags */\r
-#define FILE_SUPERSEDE 0x00000000\r
-#define FILE_OPEN 0x00000001\r
-#define FILE_CREATE 0x00000002\r
-#define FILE_OPEN_IF 0x00000003\r
-#define FILE_OVERWRITE 0x00000004\r
-#define FILE_OVERWRITE_IF 0x00000005\r
-#define FILE_MAXIMUM_DISPOSITION 0x00000005\r
-\r
-/* File Types */\r
-#define FILE_DIRECTORY_FILE 0x00000001\r
-#define FILE_WRITE_THROUGH 0x00000002\r
-#define FILE_SEQUENTIAL_ONLY 0x00000004\r
-#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008\r
-#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010\r
-#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020\r
-#define FILE_NON_DIRECTORY_FILE 0x00000040\r
-#define FILE_CREATE_TREE_CONNECTION 0x00000080\r
-#define FILE_COMPLETE_IF_OPLOCKED 0x00000100\r
-#define FILE_NO_EA_KNOWLEDGE 0x00000200\r
-#define FILE_OPEN_FOR_RECOVERY 0x00000400\r
-#define FILE_RANDOM_ACCESS 0x00000800\r
-#define FILE_DELETE_ON_CLOSE 0x00001000\r
-#define FILE_OPEN_BY_FILE_ID 0x00002000\r
-#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000\r
-#define FILE_NO_COMPRESSION 0x00008000\r
-#define FILE_RESERVE_OPFILTER 0x00100000\r
-#define FILE_OPEN_REPARSE_POINT 0x00200000\r
-#define FILE_OPEN_NO_RECALL 0x00400000\r
-#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000\r
-\r
-/* Device Charactertics */\r
-#define FILE_REMOVABLE_MEDIA 0x00000001\r
-#define FILE_REMOTE_DEVICE 0x00000010\r
-\r
-/* Version Constants */\r
-#define VER_MINORVERSION 0x0000001\r
-#define VER_MAJORVERSION 0x0000002\r
-#define VER_BUILDNUMBER 0x0000004\r
-#define VER_PLATFORMID 0x0000008\r
-#define VER_SERVICEPACKMINOR 0x0000010\r
-#define VER_SERVICEPACKMAJOR 0x0000020\r
-#define VER_SUITENAME 0x0000040\r
-#define VER_PRODUCT_TYPE 0x0000080\r
-#define VER_PLATFORM_WIN32s 0\r
-#define VER_PLATFORM_WIN32_WINDOWS 1\r
-#define VER_PLATFORM_WIN32_NT 2\r
-#define VER_EQUAL 1\r
-#define VER_GREATER 2\r
-#define VER_GREATER_EQUAL 3\r
-#define VER_LESS 4\r
-#define VER_LESS_EQUAL 5\r
-#define VER_AND 6\r
-#define VER_OR 7\r
-#define VER_CONDITION_MASK 7\r
-#define VER_NUM_BITS_PER_CONDITION_MASK 3\r
-\r
-/* RTL String Hash Algorithms */\r
-#define HASH_STRING_ALGORITHM_DEFAULT 0\r
-#define HASH_STRING_ALGORITHM_X65599 1\r
-#define HASH_STRING_ALGORITHM_INVALID 0xffffffff\r
-\r
-/* List Macros */\r
-static __inline\r
-VOID\r
-InitializeListHead(\r
- IN PLIST_ENTRY ListHead)\r
-{\r
- ListHead->Flink = ListHead->Blink = ListHead;\r
-}\r
-\r
-static __inline\r
-VOID\r
-InsertHeadList(\r
- IN PLIST_ENTRY ListHead,\r
- IN PLIST_ENTRY Entry)\r
-{\r
- PLIST_ENTRY OldFlink;\r
- OldFlink = ListHead->Flink;\r
- Entry->Flink = OldFlink;\r
- Entry->Blink = ListHead;\r
- OldFlink->Blink = Entry;\r
- ListHead->Flink = Entry;\r
-}\r
-\r
-static __inline\r
-VOID\r
-InsertTailList(\r
- IN PLIST_ENTRY ListHead,\r
- IN PLIST_ENTRY Entry)\r
-{\r
- PLIST_ENTRY OldBlink;\r
- OldBlink = ListHead->Blink;\r
- Entry->Flink = ListHead;\r
- Entry->Blink = OldBlink;\r
- OldBlink->Flink = Entry;\r
- ListHead->Blink = Entry;\r
-}\r
-\r
-#define IsListEmpty(ListHead) \\r
- ((ListHead)->Flink == (ListHead))\r
-\r
-#define PopEntryList(ListHead) \\r
- (ListHead)->Next; \\r
- { \\r
- PSINGLE_LIST_ENTRY _FirstEntry; \\r
- _FirstEntry = (ListHead)->Next; \\r
- if (_FirstEntry != NULL) \\r
- (ListHead)->Next = _FirstEntry->Next; \\r
- }\r
-\r
-#define PushEntryList(_ListHead, _Entry) \\r
- (_Entry)->Next = (_ListHead)->Next; \\r
- (_ListHead)->Next = (_Entry); \\r
-\r
-static __inline\r
-BOOLEAN\r
-RemoveEntryList(\r
- IN PLIST_ENTRY Entry)\r
-{\r
- PLIST_ENTRY OldFlink;\r
- PLIST_ENTRY OldBlink;\r
-\r
- OldFlink = Entry->Flink;\r
- OldBlink = Entry->Blink;\r
- OldFlink->Blink = OldBlink;\r
- OldBlink->Flink = OldFlink;\r
- return (OldFlink == OldBlink);\r
-}\r
-\r
-static __inline\r
-PLIST_ENTRY\r
-RemoveHeadList(\r
- IN PLIST_ENTRY ListHead)\r
-{\r
- PLIST_ENTRY Flink;\r
- PLIST_ENTRY Entry;\r
-\r
- Entry = ListHead->Flink;\r
- Flink = Entry->Flink;\r
- ListHead->Flink = Flink;\r
- Flink->Blink = ListHead;\r
- return Entry;\r
-}\r
-\r
-static __inline\r
-PLIST_ENTRY\r
-RemoveTailList(\r
- IN PLIST_ENTRY ListHead)\r
-{\r
- PLIST_ENTRY Blink;\r
- PLIST_ENTRY Entry;\r
-\r
- Entry = ListHead->Blink;\r
- Blink = Entry->Blink;\r
- ListHead->Blink = Blink;\r
- Blink->Flink = ListHead;\r
- return Entry;\r
-}\r
-\r
-#define IsFirstEntry(ListHead, Entry) \\r
- ((ListHead)->Flink == Entry)\r
-\r
-#define IsLastEntry(ListHead, Entry) \\r
- ((ListHead)->Blink == Entry)\r
-\r
-/*\r
- * Constant String Macro\r
- */\r
-#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \\r
-{ \\r
- sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \\r
- sizeof(__SOURCE_STRING__), \\r
- (__SOURCE_STRING__) \\r
-}\r
-\r
-/* ENUMERATIONS **************************************************************/\r
-\r
-/* Kernel Shared Data Values */\r
-typedef enum _NT_PRODUCT_TYPE\r
-{\r
- NtProductWinNt = 1,\r
- NtProductLanManNt,\r
- NtProductServer\r
-} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;\r
-\r
-typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE\r
-{\r
- StandardDesign,\r
- NEC98x86,\r
- EndAlternatives\r
-} ALTERNATIVE_ARCHITECTURE_TYPE;\r
-\r
-/* Run-Time Library (RTL) Enumerations */\r
-typedef enum _TABLE_SEARCH_RESULT\r
-{\r
- TableEmptyTree,\r
- TableFoundNode,\r
- TableInsertAsLeft,\r
- TableInsertAsRight\r
-} TABLE_SEARCH_RESULT;\r
-\r
-typedef enum _RTL_GENERIC_COMPARE_RESULTS\r
-{\r
- GenericLessThan,\r
- GenericGreaterThan,\r
- GenericEqual\r
-} RTL_GENERIC_COMPARE_RESULTS;\r
-\r
-/* Kernel or Native Enumerations used by Native API */\r
-typedef enum _SECTION_INHERIT\r
-{\r
- ViewShare = 1,\r
- ViewUnmap = 2\r
-} SECTION_INHERIT;\r
-\r
-typedef enum _POOL_TYPE\r
-{\r
- NonPagedPool,\r
- PagedPool,\r
- NonPagedPoolMustSucceed,\r
- DontUseThisType,\r
- NonPagedPoolCacheAligned,\r
- PagedPoolCacheAligned,\r
- NonPagedPoolCacheAlignedMustS,\r
- MaxPoolType,\r
- NonPagedPoolSession = 32,\r
- PagedPoolSession,\r
- NonPagedPoolMustSucceedSession,\r
- DontUseThisTypeSession,\r
- NonPagedPoolCacheAlignedSession,\r
- PagedPoolCacheAlignedSession,\r
- NonPagedPoolCacheAlignedMustSSession\r
-} POOL_TYPE;\r
-\r
-typedef enum _EVENT_TYPE\r
-{\r
- NotificationEvent,\r
- SynchronizationEvent\r
-} EVENT_TYPE;\r
-\r
-typedef enum _TIMER_TYPE\r
-{\r
- NotificationTimer,\r
- SynchronizationTimer\r
-} TIMER_TYPE;\r
-\r
-typedef enum _WAIT_TYPE\r
-{\r
- WaitAll,\r
- WaitAny\r
-} WAIT_TYPE;\r
-\r
-typedef enum _INTERFACE_TYPE\r
-{\r
- InterfaceTypeUndefined = -1,\r
- Internal,\r
- Isa,\r
- Eisa,\r
- MicroChannel,\r
- TurboChannel,\r
- PCIBus,\r
- VMEBus,\r
- NuBus,\r
- PCMCIABus,\r
- CBus,\r
- MPIBus,\r
- MPSABus,\r
- ProcessorInternal,\r
- InternalPowerBus,\r
- PNPISABus,\r
- PNPBus,\r
- MaximumInterfaceType\r
-}INTERFACE_TYPE, *PINTERFACE_TYPE;\r
-\r
-typedef enum _MODE\r
-{\r
- KernelMode,\r
- UserMode,\r
- MaximumMode\r
-} MODE;\r
-\r
-typedef enum _KWAIT_REASON\r
-{\r
- Executive,\r
- FreePage,\r
- PageIn,\r
- PoolAllocation,\r
- DelayExecution,\r
- Suspended,\r
- UserRequest,\r
- WrExecutive,\r
- WrFreePage,\r
- WrPageIn,\r
- WrPoolAllocation,\r
- WrDelayExecution,\r
- WrSuspended,\r
- WrUserRequest,\r
- WrEventPair,\r
- WrQueue,\r
- WrLpcReceive,\r
- WrLpcReply,\r
- WrVirtualMemory,\r
- WrPageOut,\r
- WrRendezvous,\r
- Spare2,\r
- WrGuardedMutex,\r
- Spare4,\r
- Spare5,\r
- Spare6,\r
- WrKernel,\r
- WrResource,\r
- WrPushLock,\r
- WrMutex,\r
- WrQuantumEnd,\r
- WrDispatchInt,\r
- WrPreempted,\r
- WrYieldExecution,\r
- MaximumWaitReason\r
-} KWAIT_REASON;\r
-\r
-typedef enum _KPROFILE_SOURCE\r
-{\r
- ProfileTime,\r
- ProfileAlignmentFixup,\r
- ProfileTotalIssues,\r
- ProfilePipelineDry,\r
- ProfileLoadInstructions,\r
- ProfilePipelineFrozen,\r
- ProfileBranchInstructions,\r
- ProfileTotalNonissues,\r
- ProfileDcacheMisses,\r
- ProfileIcacheMisses,\r
- ProfileCacheMisses,\r
- ProfileBranchMispredictions,\r
- ProfileStoreInstructions,\r
- ProfileFpInstructions,\r
- ProfileIntegerInstructions,\r
- Profile2Issue,\r
- Profile3Issue,\r
- Profile4Issue,\r
- ProfileSpecialInstructions,\r
- ProfileTotalCycles,\r
- ProfileIcacheIssues,\r
- ProfileDcacheAccesses,\r
- ProfileMemoryBarrierCycles,\r
- ProfileLoadLinkedIssues,\r
- ProfileMaximum\r
-} KPROFILE_SOURCE;\r
-\r
-/**** Information Classes ****/\r
-\r
-/*\r
- * File\r
- */\r
-typedef enum _FILE_INFORMATION_CLASS\r
-{\r
- FileDirectoryInformation = 1,\r
- FileFullDirectoryInformation,\r
- FileBothDirectoryInformation,\r
- FileBasicInformation,\r
- FileStandardInformation,\r
- FileInternalInformation,\r
- FileEaInformation,\r
- FileAccessInformation,\r
- FileNameInformation,\r
- FileRenameInformation,\r
- FileLinkInformation,\r
- FileNamesInformation,\r
- FileDispositionInformation,\r
- FilePositionInformation,\r
- FileFullEaInformation,\r
- FileModeInformation,\r
- FileAlignmentInformation,\r
- FileAllInformation,\r
- FileAllocationInformation,\r
- FileEndOfFileInformation,\r
- FileAlternateNameInformation,\r
- FileStreamInformation,\r
- FilePipeInformation,\r
- FilePipeLocalInformation,\r
- FilePipeRemoteInformation,\r
- FileMailslotQueryInformation,\r
- FileMailslotSetInformation,\r
- FileCompressionInformation,\r
- FileObjectIdInformation,\r
- FileCompletionInformation,\r
- FileMoveClusterInformation,\r
- FileQuotaInformation,\r
- FileReparsePointInformation,\r
- FileNetworkOpenInformation,\r
- FileAttributeTagInformation,\r
- FileTrackingInformation,\r
- FileIdBothDirectoryInformation,\r
- FileIdFullDirectoryInformation,\r
- FileValidDataLengthInformation,\r
- FileShortNameInformation,\r
- FileMaximumInformation\r
-} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;\r
-\r
-/*\r
- * File System\r
- */\r
-typedef enum _FSINFOCLASS\r
-{\r
- FileFsVolumeInformation = 1,\r
- FileFsLabelInformation,\r
- FileFsSizeInformation,\r
- FileFsDeviceInformation,\r
- FileFsAttributeInformation,\r
- FileFsControlInformation,\r
- FileFsFullSizeInformation,\r
- FileFsObjectIdInformation,\r
- FileFsDriverPathInformation,\r
- FileFsMaximumInformation\r
-} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;\r
-\r
-/*\r
- * Registry Key\r
- */\r
-typedef enum _KEY_INFORMATION_CLASS\r
-{\r
- KeyBasicInformation,\r
- KeyNodeInformation,\r
- KeyFullInformation,\r
- KeyNameInformation,\r
- KeyCachedInformation,\r
- KeyFlagsInformation\r
-} KEY_INFORMATION_CLASS;\r
-\r
-/*\r
- * Registry Key Value\r
- */\r
-typedef enum _KEY_VALUE_INFORMATION_CLASS\r
-{\r
- KeyValueBasicInformation,\r
- KeyValueFullInformation,\r
- KeyValuePartialInformation,\r
- KeyValueFullInformationAlign64,\r
- KeyValuePartialInformationAlign64\r
-} KEY_VALUE_INFORMATION_CLASS;\r
-\r
-/*\r
- * Registry Key Set\r
- */\r
-typedef enum _KEY_SET_INFORMATION_CLASS\r
-{\r
- KeyWriteTimeInformation,\r
- KeyUserFlagsInformation,\r
- MaxKeySetInfoClass\r
-} KEY_SET_INFORMATION_CLASS;\r
-\r
-/*\r
- * Process\r
- */\r
-typedef enum _PROCESSINFOCLASS\r
-{\r
- ProcessBasicInformation,\r
- ProcessQuotaLimits,\r
- ProcessIoCounters,\r
- ProcessVmCounters,\r
- ProcessTimes,\r
- ProcessBasePriority,\r
- ProcessRaisePriority,\r
- ProcessDebugPort,\r
- ProcessExceptionPort,\r
- ProcessAccessToken,\r
- ProcessLdtInformation,\r
- ProcessLdtSize,\r
- ProcessDefaultHardErrorMode,\r
- ProcessIoPortHandlers,\r
- ProcessPooledUsageAndLimits,\r
- ProcessWorkingSetWatch,\r
- ProcessUserModeIOPL,\r
- ProcessEnableAlignmentFaultFixup,\r
- ProcessPriorityClass,\r
- ProcessWx86Information,\r
- ProcessHandleCount,\r
- ProcessAffinityMask,\r
- ProcessPriorityBoost,\r
- ProcessDeviceMap,\r
- ProcessSessionInformation,\r
- ProcessForegroundInformation,\r
- ProcessWow64Information,\r
- ProcessImageFileName,\r
- ProcessLUIDDeviceMapsEnabled,\r
- ProcessBreakOnTermination,\r
- ProcessDebugObjectHandle,\r
- ProcessDebugFlags,\r
- ProcessHandleTracing,\r
- MaxProcessInfoClass\r
-} PROCESSINFOCLASS;\r
-\r
-/*\r
- * Thread\r
- */\r
-typedef enum _THREADINFOCLASS\r
-{\r
- ThreadBasicInformation,\r
- ThreadTimes,\r
- ThreadPriority,\r
- ThreadBasePriority,\r
- ThreadAffinityMask,\r
- ThreadImpersonationToken,\r
- ThreadDescriptorTableEntry,\r
- ThreadEnableAlignmentFaultFixup,\r
- ThreadEventPair_Reusable,\r
- ThreadQuerySetWin32StartAddress,\r
- ThreadZeroTlsCell,\r
- ThreadPerformanceCount,\r
- ThreadAmILastThread,\r
- ThreadIdealProcessor,\r
- ThreadPriorityBoost,\r
- ThreadSetTlsArrayAddress,\r
- ThreadIsIoPending,\r
- ThreadHideFromDebugger,\r
- ThreadBreakOnTermination,\r
- MaxThreadInfoClass\r
-} THREADINFOCLASS;\r
-\r
-/* TYPES *********************************************************************/\r
-\r
-/* Basic Types that aren't defined in User-Mode Headers */\r
-typedef CONST int CINT;\r
-typedef CONST char *PCSZ;\r
-typedef short CSHORT;\r
-typedef CSHORT *PCSHORT;\r
-typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;\r
-\r
-/* Kernel Types used by Native APIs */\r
-typedef LONG KPRIORITY;\r
-typedef LONG NTSTATUS, *PNTSTATUS;\r
-typedef UCHAR KIRQL, *PKIRQL;\r
-typedef ULONG KAFFINITY, *PKAFFINITY;\r
-typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;\r
-typedef struct _PEB *PPEB;\r
-typedef ULONG KPROCESSOR_MODE;\r
-typedef struct _OBJECT_TYPE *POBJECT_TYPE;\r
-struct _ETHREAD;\r
-struct _CSR_API_MESSAGE;\r
-typedef ULONG EXECUTION_STATE;\r
-\r
-/* Basic NT Types */\r
-#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)\r
-typedef struct _UNICODE_STRING\r
-{\r
- USHORT Length;\r
- USHORT MaximumLength;\r
- PWSTR Buffer;\r
-} UNICODE_STRING, *PUNICODE_STRING;\r
-typedef const UNICODE_STRING* PCUNICODE_STRING;\r
-\r
-typedef struct _STRING\r
-{\r
- USHORT Length;\r
- USHORT MaximumLength;\r
- PCHAR Buffer;\r
-} STRING, *PSTRING;\r
-\r
-typedef struct _OBJECT_ATTRIBUTES\r
-{\r
- ULONG Length;\r
- HANDLE RootDirectory;\r
- PUNICODE_STRING ObjectName;\r
- ULONG Attributes;\r
- PVOID SecurityDescriptor;\r
- PVOID SecurityQualityOfService;\r
-} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;\r
-#endif\r
-\r
-typedef STRING ANSI_STRING;\r
-typedef PSTRING PANSI_STRING;\r
-typedef STRING OEM_STRING;\r
-typedef PSTRING POEM_STRING;\r
-\r
-typedef struct _IO_STATUS_BLOCK\r
-{\r
- union\r
- {\r
- NTSTATUS Status;\r
- PVOID Pointer;\r
- };\r
- ULONG_PTR Information;\r
-} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;\r
-\r
-typedef VOID\r
-(NTAPI *PIO_APC_ROUTINE)(\r
- IN PVOID ApcContext,\r
- IN PIO_STATUS_BLOCK IoStatusBlock,\r
- IN ULONG Reserved);\r
-\r
-typedef VOID\r
-(NTAPI *PKNORMAL_ROUTINE)(\r
- IN PVOID NormalContext,\r
- IN PVOID SystemArgument1,\r
- IN PVOID SystemArgument2);\r
-\r
-typedef VOID\r
-(NTAPI *PTIMER_APC_ROUTINE)(\r
- IN PVOID TimerContext,\r
- IN ULONG TimerLowValue,\r
- IN LONG TimerHighValue);\r
-\r
-/* Kernel Types which are returned or used by Native API */\r
-typedef struct _OBJECT_NAME_INFORMATION\r
-{\r
- UNICODE_STRING Name;\r
-} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;\r
-\r
-typedef struct _IO_ERROR_LOG_PACKET\r
-{\r
- UCHAR MajorFunctionCode;\r
- UCHAR RetryCount;\r
- USHORT DumpDataSize;\r
- USHORT NumberOfStrings;\r
- USHORT StringOffset;\r
- USHORT EventCategory;\r
- NTSTATUS ErrorCode;\r
- ULONG UniqueErrorValue;\r
- NTSTATUS FinalStatus;\r
- ULONG SequenceNumber;\r
- ULONG IoControlCode;\r
- LARGE_INTEGER DeviceOffset;\r
- ULONG DumpData[1];\r
-}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;\r
-\r
-typedef struct _IO_ERROR_LOG_MESSAGE\r
-{\r
- USHORT Type;\r
- USHORT Size;\r
- USHORT DriverNameLength;\r
- LARGE_INTEGER TimeStamp;\r
- ULONG DriverNameOffset;\r
- IO_ERROR_LOG_PACKET EntryData;\r
-} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;\r
-\r
-typedef struct _CLIENT_ID\r
-{\r
- HANDLE UniqueProcess;\r
- HANDLE UniqueThread;\r
-} CLIENT_ID, *PCLIENT_ID;\r
-\r
-typedef struct _KSYSTEM_TIME\r
-{\r
- ULONG LowPart;\r
- LONG High1Time;\r
- LONG High2Time;\r
-} KSYSTEM_TIME, *PKSYSTEM_TIME;\r
-\r
-typedef struct _TIME_FIELDS\r
-{\r
- CSHORT Year;\r
- CSHORT Month;\r
- CSHORT Day;\r
- CSHORT Hour;\r
- CSHORT Minute;\r
- CSHORT Second;\r
- CSHORT Milliseconds;\r
- CSHORT Weekday;\r
-} TIME_FIELDS, *PTIME_FIELDS;\r
-\r
-typedef struct _VM_COUNTERS\r
-{\r
- SIZE_T PeakVirtualSize;\r
- SIZE_T VirtualSize;\r
- ULONG PageFaultCount;\r
- SIZE_T PeakWorkingSetSize;\r
- SIZE_T WorkingSetSize;\r
- SIZE_T QuotaPeakPagedPoolUsage;\r
- SIZE_T QuotaPagedPoolUsage;\r
- SIZE_T QuotaPeakNonPagedPoolUsage;\r
- SIZE_T QuotaNonPagedPoolUsage;\r
- SIZE_T PagefileUsage;\r
- SIZE_T PeakPagefileUsage;\r
-} VM_COUNTERS, *PVM_COUNTERS;\r
-\r
-typedef struct _VM_COUNTERS_EX\r
-{\r
- SIZE_T PeakVirtualSize;\r
- SIZE_T VirtualSize;\r
- ULONG PageFaultCount;\r
- SIZE_T PeakWorkingSetSize;\r
- SIZE_T WorkingSetSize;\r
- SIZE_T QuotaPeakPagedPoolUsage;\r
- SIZE_T QuotaPagedPoolUsage;\r
- SIZE_T QuotaPeakNonPagedPoolUsage;\r
- SIZE_T QuotaNonPagedPoolUsage;\r
- SIZE_T PagefileUsage;\r
- SIZE_T PeakPagefileUsage;\r
- SIZE_T PrivateUsage;\r
-} VM_COUNTERS_EX, *PVM_COUNTERS_EX;\r
-\r
-/**** Information Types ****/\r
-\r
-/*\r
- * Registry Key Set\r
- */\r
-\r
-/* Class 0 */\r
-typedef struct _KEY_WRITE_TIME_INFORMATION\r
-{\r
- LARGE_INTEGER LastWriteTime;\r
-} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;\r
-\r
-/* Class 1 */\r
-typedef struct _KEY_USER_FLAGS_INFORMATION\r
-{\r
- ULONG UserFlags;\r
-} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;\r
-\r
-typedef struct _KEY_FULL_INFORMATION\r
-{\r
- LARGE_INTEGER LastWriteTime;\r
- ULONG TitleIndex;\r
- ULONG ClassOffset;\r
- ULONG ClassLength;\r
- ULONG SubKeys;\r
- ULONG MaxNameLen;\r
- ULONG MaxClassLen;\r
- ULONG Values;\r
- ULONG MaxValueNameLen;\r
- ULONG MaxValueDataLen;\r
- WCHAR Class[1];\r
-} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;\r
-\r
-typedef struct _KEY_NODE_INFORMATION\r
-{\r
- LARGE_INTEGER LastWriteTime;\r
- ULONG TitleIndex;\r
- ULONG ClassOffset;\r
- ULONG ClassLength;\r
- ULONG NameLength;\r
- WCHAR Name[1];\r
-} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;\r
-\r
-/*\r
- * File\r
- */\r
-\r
-/* Class 1 */\r
-typedef struct _FILE_BASIC_INFORMATION\r
-{\r
- LARGE_INTEGER CreationTime;\r
- LARGE_INTEGER LastAccessTime;\r
- LARGE_INTEGER LastWriteTime;\r
- LARGE_INTEGER ChangeTime;\r
- ULONG FileAttributes;\r
-} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;\r
-\r
-/* Class 2 */\r
-typedef struct _FILE_STANDARD_INFORMATION\r
-{\r
- LARGE_INTEGER AllocationSize;\r
- LARGE_INTEGER EndOfFile;\r
- ULONG NumberOfLinks;\r
- BOOLEAN DeletePending;\r
- BOOLEAN Directory;\r
-} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;\r
-\r
-typedef struct _FILE_NETWORK_OPEN_INFORMATION\r
-{\r
- LARGE_INTEGER CreationTime;\r
- LARGE_INTEGER LastAccessTime;\r
- LARGE_INTEGER LastWriteTime;\r
- LARGE_INTEGER ChangeTime;\r
- LARGE_INTEGER AllocationSize;\r
- LARGE_INTEGER EndOfFile;\r
- ULONG FileAttributes;\r
-} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;\r
-\r
-typedef struct _FILE_EA_INFORMATION\r
-{\r
- ULONG EaSize;\r
-} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;\r
-\r
-typedef struct _FILE_COMPRESSION_INFORMATION\r
-{\r
- LARGE_INTEGER CompressedFileSize;\r
- USHORT CompressionFormat;\r
- UCHAR CompressionUnitShift;\r
- UCHAR ChunkShift;\r
- UCHAR ClusterShift;\r
- UCHAR Reserved[3];\r
-} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;\r
-\r
-typedef struct _FILE_POSITION_INFORMATION\r
-{\r
- LARGE_INTEGER CurrentByteOffset;\r
-} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;\r
-\r
-typedef struct _FILE_DISPOSITION_INFORMATION\r
-{\r
- BOOLEAN DeleteFile;\r
-} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;\r
-\r
-typedef struct _FILE_FULL_EA_INFORMATION\r
-{\r
- ULONG NextEntryOffset;\r
- UCHAR Flags;\r
- UCHAR EaNameLength;\r
- USHORT EaValueLength;\r
- CHAR EaName[1];\r
-} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;\r
-\r
-typedef struct _FILE_QUOTA_INFORMATION\r
-{\r
- ULONG NextEntryOffset;\r
- ULONG SidLength;\r
- LARGE_INTEGER ChangeTime;\r
- LARGE_INTEGER QuotaUsed;\r
- LARGE_INTEGER QuotaThreshold;\r
- LARGE_INTEGER QuotaLimit;\r
- SID Sid;\r
-} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;\r
-\r
-typedef struct _FILE_INTERNAL_INFORMATION\r
-{\r
- LARGE_INTEGER IndexNumber;\r
-} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;\r
-\r
-typedef struct _FILE_RENAME_INFORMATION\r
-{\r
- BOOLEAN ReplaceIfExists;\r
- HANDLE RootDirectory;\r
- ULONG FileNameLength;\r
- WCHAR FileName[1];\r
-} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;\r
-\r
-typedef struct _FILE_PIPE_INFORMATION\r
-{\r
- ULONG ReadMode;\r
- ULONG CompletionMode;\r
-} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;\r
-\r
-typedef struct _FILE_PIPE_LOCAL_INFORMATION\r
-{\r
- ULONG NamedPipeType;\r
- ULONG NamedPipeConfiguration;\r
- ULONG MaximumInstances;\r
- ULONG CurrentInstances;\r
- ULONG InboundQuota;\r
- ULONG ReadDataAvailable;\r
- ULONG OutboundQuota;\r
- ULONG WriteQuotaAvailable;\r
- ULONG NamedPipeState;\r
- ULONG NamedPipeEnd;\r
-} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;\r
-\r
-typedef struct _FILE_PIPE_REMOTE_INFORMATION\r
-{\r
- LARGE_INTEGER CollectDataTime;\r
- ULONG MaximumCollectionCount;\r
-} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;\r
-\r
-typedef struct _FILE_MAILSLOT_QUERY_INFORMATION\r
-{\r
- ULONG MaximumMessageSize;\r
- ULONG MailslotQuota;\r
- ULONG NextMessageSize;\r
- ULONG MessagesAvailable;\r
- LARGE_INTEGER ReadTimeout;\r
-} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;\r
-\r
-typedef struct _FILE_MAILSLOT_SET_INFORMATION\r
-{\r
- LARGE_INTEGER ReadTimeout;\r
-} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;\r
-\r
-typedef struct _FILE_BOTH_DIR_INFORMATION\r
-{\r
- ULONG NextEntryOffset;\r
- ULONG FileIndex;\r
- LARGE_INTEGER CreationTime;\r
- LARGE_INTEGER LastAccessTime;\r
- LARGE_INTEGER LastWriteTime;\r
- LARGE_INTEGER ChangeTime;\r
- LARGE_INTEGER EndOfFile;\r
- LARGE_INTEGER AllocationSize;\r
- ULONG FileAttributes;\r
- ULONG FileNameLength;\r
- ULONG EaSize;\r
- CCHAR ShortNameLength;\r
- WCHAR ShortName[12];\r
- WCHAR FileName[1];\r
-} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;\r
-\r
-typedef struct _FILE_COMPLETION_INFORMATION\r
-{\r
- HANDLE Port;\r
- PVOID Key;\r
-} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;\r
-\r
-typedef struct _FILE_LINK_INFORMATION\r
-{\r
- BOOLEAN ReplaceIfExists;\r
- HANDLE RootDirectory;\r
- ULONG FileNameLength;\r
- WCHAR FileName[1];\r
-} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;\r
-\r
-typedef struct _FILE_NAME_INFORMATION\r
-{\r
- ULONG FileNameLength;\r
- WCHAR FileName[1];\r
-} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;\r
-\r
-typedef struct _FILE_ALLOCATION_INFORMATION\r
-{\r
- LARGE_INTEGER AllocationSize;\r
-} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;\r
-\r
-typedef struct _FILE_END_OF_FILE_INFORMATION\r
-{\r
- LARGE_INTEGER EndOfFile;\r
-} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;\r
-\r
-typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION\r
-{\r
- LARGE_INTEGER ValidDataLength;\r
-} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;\r
-\r
-/*\r
- * File System\r
- */\r
-typedef struct _FILE_FS_DEVICE_INFORMATION\r
-{\r
- DEVICE_TYPE DeviceType;\r
- ULONG Characteristics;\r
-} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;\r
-\r
-typedef struct _FILE_FS_ATTRIBUTE_INFORMATION\r
-{\r
- ULONG FileSystemAttributes;\r
- ULONG MaximumComponentNameLength;\r
- ULONG FileSystemNameLength;\r
- WCHAR FileSystemName[1];\r
-} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;\r
-\r
-typedef struct _FILE_FS_SIZE_INFORMATION\r
-{\r
- LARGE_INTEGER TotalAllocationUnits;\r
- LARGE_INTEGER AvailableAllocationUnits;\r
- ULONG SectorsPerAllocationUnit;\r
- ULONG BytesPerSector;\r
-} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;\r
-\r
-typedef struct _FILE_FS_LABEL_INFORMATION\r
-{\r
- ULONG VolumeLabelLength;\r
- WCHAR VolumeLabel[1];\r
-} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;\r
-\r
-typedef struct _FILE_FS_VOLUME_INFORMATION\r
-{\r
- LARGE_INTEGER VolumeCreationTime;\r
- ULONG VolumeSerialNumber;\r
- ULONG VolumeLabelLength;\r
- BOOLEAN SupportsObjects;\r
- WCHAR VolumeLabel[1];\r
-} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;\r
-\r
-/*\r
- * Registry Key Value\r
- */\r
-\r
-/* Class 0 */\r
-typedef struct _KEY_VALUE_ENTRY\r
-{\r
- PUNICODE_STRING ValueName;\r
- ULONG DataLength;\r
- ULONG DataOffset;\r
- ULONG Type;\r
-} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;\r
-\r
-/* Class 1 */\r
-typedef struct _KEY_VALUE_PARTIAL_INFORMATION\r
-{\r
- ULONG TitleIndex;\r
- ULONG Type;\r
- ULONG DataLength;\r
- UCHAR Data[1];\r
-} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;\r
-\r
-/* Class 2 */\r
-typedef struct _KEY_VALUE_BASIC_INFORMATION\r
-{\r
- ULONG TitleIndex;\r
- ULONG Type;\r
- ULONG NameLength;\r
- WCHAR Name[1];\r
-} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;\r
-\r
-/* Class 3 */\r
-typedef struct _KEY_VALUE_FULL_INFORMATION\r
-{\r
- ULONG TitleIndex;\r
- ULONG Type;\r
- ULONG DataOffset;\r
- ULONG DataLength;\r
- ULONG NameLength;\r
- WCHAR Name[1];\r
-} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;\r
-\r
-/*\r
- * Registry Key\r
- */\r
-\r
-/* Class 0 */\r
-typedef struct _KEY_BASIC_INFORMATION\r
-{\r
- LARGE_INTEGER LastWriteTime;\r
- ULONG TitleIndex;\r
- ULONG NameLength;\r
- WCHAR Name[1];\r
-} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;\r
-\r
-/* File Pipe Structures for the FSCTLs */\r
-typedef struct _FILE_PIPE_WAIT_FOR_BUFFER\r
-{\r
- LARGE_INTEGER Timeout;\r
- ULONG NameLength;\r
- BOOLEAN TimeoutSpecified;\r
- WCHAR Name[1];\r
-} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;\r
-\r
-typedef struct _FILE_PIPE_PEEK_BUFFER\r
-{\r
- ULONG NamedPipeState;\r
- ULONG ReadDataAvailable;\r
- ULONG NumberOfMessages;\r
- ULONG MessageLength;\r
- CHAR Data[1];\r
-} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;\r
-\r
-/* The Kerner/User Shared Data Structure */\r
-typedef struct _KUSER_SHARED_DATA\r
-{\r
- ULONG TickCountLowDeprecated;\r
- ULONG TickCountMultiplier;\r
- volatile KSYSTEM_TIME InterruptTime;\r
- volatile KSYSTEM_TIME SystemTime;\r
- volatile KSYSTEM_TIME TimeZoneBias;\r
- USHORT ImageNumberLow;\r
- USHORT ImageNumberHigh;\r
- WCHAR NtSystemRoot[260];\r
- ULONG MaxStackTraceDepth;\r
- ULONG CryptoExponent;\r
- ULONG TimeZoneId;\r
- ULONG LargePageMinimum;\r
- ULONG Reserved2[7];\r
- NT_PRODUCT_TYPE NtProductType;\r
- BOOLEAN ProductTypeIsValid;\r
- ULONG NtMajorVersion;\r
- ULONG NtMinorVersion;\r
- BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];\r
- ULONG Reserved1;\r
- ULONG Reserved3;\r
- volatile ULONG TimeSlip;\r
- ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;\r
- LARGE_INTEGER SystemExpirationDate;\r
- ULONG SuiteMask;\r
- BOOLEAN KdDebuggerEnabled;\r
- volatile ULONG ActiveConsoleId;\r
- volatile ULONG DismountCount;\r
- ULONG ComPlusPackage;\r
- ULONG LastSystemRITEventTickCount;\r
- ULONG NumberOfPhysicalPages;\r
- BOOLEAN SafeBootMode;\r
- ULONG TraceLogging;\r
- ULONGLONG Fill0;\r
- ULONGLONG SystemCall[4];\r
- union {\r
- volatile KSYSTEM_TIME TickCount;\r
- volatile ULONG64 TickCountQuad;\r
- };\r
-} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;\r
-\r
-/* Run-Time Library (RTL) Types */\r
-typedef struct _RTL_BITMAP\r
-{\r
- ULONG SizeOfBitMap;\r
- PULONG Buffer;\r
-} RTL_BITMAP, *PRTL_BITMAP;\r
-\r
-typedef struct _RTL_BITMAP_RUN\r
-{\r
- ULONG StartingIndex;\r
- ULONG NumberOfBits;\r
-} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;\r
-\r
-typedef struct _COMPRESSED_DATA_INFO\r
-{\r
- USHORT CompressionFormatAndEngine;\r
- UCHAR CompressionUnitShift;\r
- UCHAR ChunkShift;\r
- UCHAR ClusterShift;\r
- UCHAR Reserved;\r
- USHORT NumberOfChunks;\r
- ULONG CompressedChunkSizes[ANYSIZE_ARRAY];\r
-} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;\r
-\r
-typedef struct _GENERATE_NAME_CONTEXT\r
-{\r
- USHORT Checksum;\r
- BOOLEAN CheckSumInserted;\r
- UCHAR NameLength;\r
- WCHAR NameBuffer[8];\r
- ULONG ExtensionLength;\r
- WCHAR ExtensionBuffer[4];\r
- ULONG LastIndexValue;\r
-} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;\r
-\r
-typedef struct _RTL_SPLAY_LINKS\r
-{\r
- struct _RTL_SPLAY_LINKS *Parent;\r
- struct _RTL_SPLAY_LINKS *LeftChild;\r
- struct _RTL_SPLAY_LINKS *RightChild;\r
-} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;\r
-\r
-struct _RTL_AVL_TABLE;\r
-struct _RTL_GENERIC_TABLE;\r
-\r
-typedef NTSTATUS\r
-(NTAPI *PRTL_AVL_MATCH_FUNCTION)(\r
- struct _RTL_AVL_TABLE *Table,\r
- PVOID UserData,\r
- PVOID MatchData\r
-);\r
-\r
-typedef RTL_GENERIC_COMPARE_RESULTS\r
-(NTAPI *PRTL_AVL_COMPARE_ROUTINE) (\r
- struct _RTL_AVL_TABLE *Table,\r
- PVOID FirstStruct,\r
- PVOID SecondStruct\r
-);\r
-\r
-typedef RTL_GENERIC_COMPARE_RESULTS\r
-(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (\r
- struct _RTL_GENERIC_TABLE *Table,\r
- PVOID FirstStruct,\r
- PVOID SecondStruct\r
-);\r
-\r
-typedef PVOID\r
-(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (\r
- struct _RTL_GENERIC_TABLE *Table,\r
- LONG ByteSize\r
-);\r
-\r
-typedef VOID\r
-(NTAPI *PRTL_GENERIC_FREE_ROUTINE) (\r
- struct _RTL_GENERIC_TABLE *Table,\r
- PVOID Buffer\r
-);\r
-\r
-typedef VOID\r
-(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (\r
- struct _RTL_AVL_TABLE *Table,\r
- LONG ByteSize\r
-);\r
-\r
-typedef VOID\r
-(NTAPI *PRTL_AVL_FREE_ROUTINE) (\r
- struct _RTL_AVL_TABLE *Table,\r
- PVOID Buffer\r
-);\r
-\r
-typedef struct _RTL_GENERIC_TABLE\r
-{\r
- PRTL_SPLAY_LINKS TableRoot;\r
- LIST_ENTRY InsertOrderList;\r
- PLIST_ENTRY OrderedPointer;\r
- ULONG WhichOrderedElement;\r
- ULONG NumberGenericTableElements;\r
- PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;\r
- PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;\r
- PRTL_GENERIC_FREE_ROUTINE FreeRoutine;\r
- PVOID TableContext;\r
-} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;\r
-\r
-typedef struct _RTL_BALANCED_LINKS\r
-{\r
- struct _RTL_BALANCED_LINKS *Parent;\r
- struct _RTL_BALANCED_LINKS *LeftChild;\r
- struct _RTL_BALANCED_LINKS *RightChild;\r
- CHAR Balance;\r
- UCHAR Reserved[3];\r
-} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;\r
-\r
-typedef struct _RTL_AVL_TABLE\r
-{\r
- RTL_BALANCED_LINKS BalancedRoot;\r
- PVOID OrderedPointer;\r
- ULONG WhichOrderedElement;\r
- ULONG NumberGenericTableElements;\r
- ULONG DepthOfTree;\r
- PRTL_BALANCED_LINKS RestartKey;\r
- ULONG DeleteCount;\r
- PRTL_AVL_COMPARE_ROUTINE CompareRoutine;\r
- PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;\r
- PRTL_AVL_FREE_ROUTINE FreeRoutine;\r
- PVOID TableContext;\r
-} RTL_AVL_TABLE, *PRTL_AVL_TABLE;\r
-\r
-typedef NTSTATUS\r
-(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(\r
- IN PWSTR ValueName,\r
- IN ULONG ValueType,\r
- IN PVOID ValueData,\r
- IN ULONG ValueLength,\r
- IN PVOID Context,\r
- IN PVOID EntryContext\r
-);\r
-\r
-typedef struct _RTL_QUERY_REGISTRY_TABLE\r
-{\r
- PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;\r
- ULONG Flags;\r
- PWSTR Name;\r
- PVOID EntryContext;\r
- ULONG DefaultType;\r
- PVOID DefaultData;\r
- ULONG DefaultLength;\r
-} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;\r
-\r
-typedef struct _UNICODE_PREFIX_TABLE_ENTRY\r
-{\r
- CSHORT NodeTypeCode;\r
- CSHORT NameLength;\r
- struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;\r
- struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;\r
- RTL_SPLAY_LINKS Links;\r
- PUNICODE_STRING Prefix;\r
-} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;\r
-\r
-typedef struct _UNICODE_PREFIX_TABLE\r
-{\r
- CSHORT NodeTypeCode;\r
- CSHORT NameLength;\r
- PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;\r
- PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;\r
-} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;\r
-\r
-/* FIXME - need FAST_MUTEX and PHANDLE_TABLE for RTL_ATOM_TABLE in umode! */\r
-typedef void *FAST_MUTEX;\r
-typedef void *PHANDLE_TABLE;\r
-\r
-typedef OSVERSIONINFOW RTL_OSVERSIONINFOW;\r
-typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;\r
-typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;\r
-typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;\r
-\r
-#endif\r
+/*
+ * PROJECT: ReactOS Native Headers
+ * FILE: include/ndk/umtypes.h
+ * PURPOSE: Definitions needed for Native Headers if target is not Kernel-Mode.
+ * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ * Created 06/10/04
+ */
+
+#if !defined(_NTDEF_) && !defined(_NTDEF_H)
+#define _NTDEF_
+#define _NTDEF_H
+
+/* DEPENDENCIES **************************************************************/
+#include <winioctl.h>
+#include <ntnls.h>
+
+/* Undef the following to avoid conflects including ntstatus.h with winnt.h */
+#undef STATUS_WAIT_0
+#undef STATUS_ABANDONED_WAIT_0
+#undef STATUS_USER_APC
+#undef STATUS_TIMEOUT
+#undef STATUS_PENDING
+#undef DBG_EXCEPTION_HANDLED
+#undef DBG_CONTINUE
+#undef STATUS_SEGMENT_NOTIFICATION
+#undef DBG_TERMINATE_THREAD
+#undef DBG_TERMINATE_PROCESS
+#undef DBG_CONTROL_C
+#undef DBG_CONTROL_BREAK
+#undef DBG_COMMAND_EXCEPTION
+#undef STATUS_GUARD_PAGE_VIOLATION
+#undef STATUS_DATATYPE_MISALIGNMENT
+#undef STATUS_BREAKPOINT
+#undef STATUS_SINGLE_STEP
+#undef DBG_EXCEPTION_NOT_HANDLED
+#undef STATUS_ACCESS_VIOLATION
+#undef STATUS_IN_PAGE_ERROR
+#undef STATUS_INVALID_HANDLE
+#undef STATUS_NO_MEMORY
+#undef STATUS_ILLEGAL_INSTRUCTION
+#undef STATUS_NONCONTINUABLE_EXCEPTION
+#undef STATUS_INVALID_DISPOSITION
+#undef STATUS_ARRAY_BOUNDS_EXCEEDED
+#undef STATUS_FLOAT_DENORMAL_OPERAND
+#undef STATUS_FLOAT_DIVIDE_BY_ZERO
+#undef STATUS_FLOAT_INEXACT_RESULT
+#undef STATUS_FLOAT_INVALID_OPERATION
+#undef STATUS_FLOAT_OVERFLOW
+#undef STATUS_FLOAT_STACK_CHECK
+#undef STATUS_FLOAT_UNDERFLOW
+#undef STATUS_INTEGER_DIVIDE_BY_ZERO
+#undef STATUS_INTEGER_OVERFLOW
+#undef STATUS_PRIVILEGED_INSTRUCTION
+#undef STATUS_STACK_OVERFLOW
+#undef STATUS_CONTROL_C_EXIT
+#undef STATUS_FLOAT_MULTIPLE_FAULTS
+#undef STATUS_FLOAT_MULTIPLE_TRAPS
+#undef STATUS_REG_NAT_CONSUMPTION
+#undef STATUS_SXS_EARLY_DEACTIVATION
+#undef STATUS_SXS_INVALID_DEACTIVATION
+
+#include <ntstatus.h>
+
+/* CONSTANTS *****************************************************************/
+
+/* NTAPI/NTOSAPI Define */
+#define DECLSPEC_ADDRSAFE
+#define NTAPI __stdcall
+#define FASTCALL __fastcall
+#if !defined(_NTSYSTEM_)
+#define NTSYSAPI DECLSPEC_IMPORT
+#define NTSYSCALLAPI DECLSPEC_IMPORT
+#else
+#define NTSYSAPI
+#if defined(_NTDLLBUILD_)
+#define NTSYSCALLAPI
+#else
+#define NTSYSCALLAPI DECLSPEC_ADDRSAFE
+#endif
+#endif
+#if !defined(_M_CEE_PURE)
+#define NTAPI_INLINE NTAPI
+#else
+#define NTAPI_INLINE
+#endif
+
+/* Native API Return Value Macros */
+#define NT_SUCCESS(x) ((x)>=0)
+#define NT_WARNING(x) ((ULONG)(x)>>30==2)
+#define NT_ERROR(x) ((ULONG)(x)>>30==3)
+
+/* Limits */
+#define MINCHAR 0x80
+#define MAXCHAR 0x7f
+#define MINSHORT 0x8000
+#define MAXSHORT 0x7fff
+#define MINLONG 0x80000000
+#define MAXLONG 0x7fffffff
+#define MAXUCHAR 0xff
+#define MAXUSHORT 0xffff
+#define MAXULONG 0xffffffff
+
+/* TYPES *********************************************************************/
+
+/* Basic Types that aren't defined in User-Mode Headers */
+typedef CONST int CINT;
+typedef CONST char *PCSZ;
+typedef ULONG CLONG;
+typedef short CSHORT;
+typedef CSHORT *PCSHORT;
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+typedef LONG KPRIORITY;
+typedef LONG NTSTATUS, *PNTSTATUS;
+#define STATIC static
+
+/* Basic NT Types */
+#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
+typedef struct _UNICODE_STRING
+{
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef const UNICODE_STRING* PCUNICODE_STRING;
+
+typedef struct _STRING
+{
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+
+typedef struct _OBJECT_ATTRIBUTES
+{
+ ULONG Length;
+ HANDLE RootDirectory;
+ PUNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor;
+ PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
+
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+typedef CONST STRING* PCOEM_STRING;
+typedef STRING CANSI_STRING;
+typedef PSTRING PCANSI_STRING;
+
+#endif