Major cleanup of NDK. I've decided that it would be much cleaner to accumulate all...
authorAlex Ionescu <aionescu@gmail.com>
Wed, 17 Aug 2005 07:06:59 +0000 (07:06 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Wed, 17 Aug 2005 07:06:59 +0000 (07:06 +0000)
svn path=/trunk/; revision=17420

25 files changed:
reactos/drivers/storage/scsiport/scsiport_int.h
reactos/include/drivers/diskdump/diskdump.h
reactos/include/ndk/arch/ketypes.h
reactos/include/ndk/cmtypes.h [new file with mode: 0644]
reactos/include/ndk/extypes.h
reactos/include/ndk/fixmes.txt
reactos/include/ndk/i386/mmtypes.h
reactos/include/ndk/ifssupp.h [new file with mode: 0644]
reactos/include/ndk/iotypes.h
reactos/include/ndk/kdfuncs.h
reactos/include/ndk/kefuncs.h
reactos/include/ndk/ketypes.h
reactos/include/ndk/lpctypes.h
reactos/include/ndk/mmtypes.h
reactos/include/ndk/ntndk.h
reactos/include/ndk/obtypes.h
reactos/include/ndk/pstypes.h
reactos/include/ndk/rtlfuncs.h
reactos/include/ndk/rtltypes.h
reactos/include/ndk/umfuncs.h
reactos/include/ndk/umtypes.h
reactos/include/ndk/zwfuncs.h
reactos/include/ndk/zwtypes.h
reactos/w32api/include/basetsd.h
reactos/w32api/include/winnt.h

index f98f2b7..5091027 100644 (file)
@@ -7,8 +7,12 @@
 
 #define VERSION "0.0.3"
 
+#ifndef PAGE_ROUND_UP
 #define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) )
+#endif
+#ifndef ROUND_UP
 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
+#endif
 
 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
 
index 1a686bc..e22eaf1 100644 (file)
@@ -2,7 +2,7 @@
 #define __DISKDUMP_H
 
 #include <ddk/ntddscsi.h>
-#include <ndk/ketypes.h>
+#include <ndk/ntndk.h>
 
 #define MM_CORE_DUMP_HEADER_MAGIC         (0xdeafbead)
 #define MM_CORE_DUMP_HEADER_VERSION       (0x1)
index 29ebd99..677629a 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef _ARCH_KETYPES_H
 #define _ARCH_KETYPES_H
 
-/* Shared structure needed by Arch-specific headers */
+/* Shared structures needed by Arch-specific headers */
 typedef struct _KDPC_DATA
 {
     LIST_ENTRY  DpcListHead;
@@ -18,6 +18,12 @@ typedef struct _KDPC_DATA
     ULONG  DpcCount;
 } KDPC_DATA, *PKDPC_DATA;
 
+typedef struct _PP_LOOKASIDE_LIST
+{
+    struct _GENERAL_LOOKASIDE *P;
+    struct _GENERAL_LOOKASIDE *L;
+} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
+
 #ifdef _M_IX86
 #include <ndk/i386/ketypes.h>
 #else
diff --git a/reactos/include/ndk/cmtypes.h b/reactos/include/ndk/cmtypes.h
new file mode 100644 (file)
index 0000000..062dd9a
--- /dev/null
@@ -0,0 +1,129 @@
+/*\r
+ * PROJECT:         ReactOS Native Headers\r
+ * FILE:            include/ndk/cmtypes.h\r
+ * PURPOSE:         Definitions for Config Manager Types not defined in DDK/IFS\r
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)\r
+ * UPDATE HISTORY:\r
+ *                  Created 06/10/04\r
+ */\r
+\r
+#ifndef _CMTYPES_H\r
+#define _CMTYPES_H\r
+\r
+/* DEPENDENCIES **************************************************************/\r
+\r
+/* EXPORTED DATA *************************************************************/\r
+\r
+/* CONSTANTS *****************************************************************/\r
+\r
+/* ENUMERATIONS **************************************************************/\r
+\r
+#ifdef NTOS_MODE_USER\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
+typedef enum _KEY_VALUE_INFORMATION_CLASS\r
+{\r
+    KeyValueBasicInformation,\r
+    KeyValueFullInformation,\r
+    KeyValuePartialInformation,\r
+    KeyValueFullInformationAlign64,\r
+    KeyValuePartialInformationAlign64\r
+} KEY_VALUE_INFORMATION_CLASS;\r
+\r
+typedef enum _KEY_SET_INFORMATION_CLASS\r
+{\r
+    KeyWriteTimeInformation,\r
+    KeyUserFlagsInformation,\r
+    MaxKeySetInfoClass\r
+} KEY_SET_INFORMATION_CLASS;\r
+\r
+/* TYPES *********************************************************************/\r
+\r
+typedef struct _KEY_WRITE_TIME_INFORMATION\r
+{\r
+    LARGE_INTEGER LastWriteTime;\r
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;\r
+\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
+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
+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
+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
+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
+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
+#endif\r
+#endif\r
+\r
index d001251..4433c70 100644 (file)
 #define _EXTYPES_H
 
 /* DEPENDENCIES **************************************************************/
-#include "ketypes.h"
 
 /* EXPORTED DATA *************************************************************/
+#ifndef NTOS_MODE_USER
 extern POBJECT_TYPE NTOSAPI ExIoCompletionType;
 extern NTOSAPI POBJECT_TYPE ExMutantObjectType;
 extern NTOSAPI POBJECT_TYPE ExTimerType;
+#endif
 
 /* CONSTANTS *****************************************************************/
-
+#ifndef NTOS_MODE_USER
 #define INVALID_HANDLE_VALUE (HANDLE)-1
+#endif
 
 /* Increments */
 #define MUTANT_INCREMENT 1
 
-/* Callback 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)
+/* 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)
+#ifdef NTOS_MODE_USER
+#define EVENT_QUERY_STATE       0x0001
+#define SEMAPHORE_QUERY_STATE   0x0001
+#endif
 
 /* ENUMERATIONS **************************************************************/
 
 /* TYPES *********************************************************************/
 
-/* You'll need the IFS for this, so use an equivalent version */
-#ifndef _NTIFS_
-typedef PVOID EX_RUNDOWN_REF;
-typedef PVOID EX_PUSH_LOCK;
-#endif
-
+#ifndef NTOS_MODE_USER
 typedef struct _EX_QUEUE_WORKER_INFO
 {
     UCHAR QueueDisabled:1;
@@ -120,4 +121,5 @@ typedef struct _HANDLE_TABLE
 } HANDLE_TABLE, *PHANDLE_TABLE;
 
 #endif
+#endif
 
index b871431..dc1aff2 100644 (file)
@@ -33,45 +33,10 @@ List:
        Priority 4:\r
        - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h]\r
        - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h]\r
-       - Move out stuff from umtypes.h into the actual header where they should go. Use ifdeffing\r
-         directly in that file to protect user-mode versus kernel-mode types. umtypes.h will only\r
-         end up containing the misc types that are needed for compatibility. This would create a\r
-         significant cleanup.\r
+       - FIXED: Modify design of NDK so that all the types are in their respective files (Alex) [*.h]\r
 \r
        Priority 5:\r
        - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h]\r
        - Missing System Info Classes [zwtypes.h]\r
        - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h]\r
        \r
-Generic Note:\r
-       One of the most difficult things is when certain structures require the IFS for some of their\r
-       members. Up until some time ago, the IFS was 1000$, so it was senseless to require it in order\r
-       to allow people to use the NDK. Recently, however, the IFS price went down to 100$. This is \r
-       still way too much. Even though the GNU NTIFS.H exists, I don't want to fallback on it. The\r
-       good news is that the WDK (Windows Driver Kit), which will supplant the DDK in about a year,\r
-       includes the IFS. At that point we can remove all the #ifndef/ifdef NTIFS hacks, since it'll\r
-       be OK to "force" IFS usage.\r
-       \r
-       UPDATE:\r
-       However, I'm giving serious consideration of making the IFS a requirement, and suggesting\r
-       usage of the GNU IFS for anyone that needs it. The problem, however, is that the official\r
-       GNU IFS is outdated and quite invalid in many ways, compared to the ReactOS IFS (which still\r
-       isn't perfect yet). Also, this would include many more definitions then needed. A third\r
-       option that I'm considering is creating a new header, until the WDK is out, which will be \r
-       called ifstypes. It would be the brother of umtypes, but for kernel mode. Only a small\r
-       number of types will need to be included, and hence they will be easy to locate in case\r
-       the official ones change (by the time they do, the WDK will be out however, so no worries).\r
-       It would reduce all the ifdeffing to a single file.\r
-       \r
-       UPDATE2:\r
-       No. This is a bad idea. I've just added a note to purge out large parts of umtypes.h into the\r
-       actual xxtypes.h files, and then use iffdefing. This is a direct contradiction to my idea of\r
-       generalizing all the IFS stuff together.\r
-       \r
-       UPDATE3:\r
-       No. This is different...the user-mode types will always be unavailable in kernel-mode, and \r
-       dissipating them into the real files is a good thing, because they will never move out and\r
-       they are much easier to maintain. However, once the WDK comes out, all #ifdef ntifs will\r
-       become obsolete, and they will have to be hunted down and removed. Having a single file that\r
-       is automatically added if the IFS is not detected is much easier to remove once the time\r
-       comes.\r
index d39544a..a08f7fb 100644 (file)
@@ -9,4 +9,17 @@
 #ifndef _I386_MMTYPES_H
 #define _I386_MMTYPES_H
 
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+#define PAGE_SIZE                         0x1000
+#define PAGE_SHIFT                        12L
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
 #endif
diff --git a/reactos/include/ndk/ifssupp.h b/reactos/include/ndk/ifssupp.h
new file mode 100644 (file)
index 0000000..3645bc2
--- /dev/null
@@ -0,0 +1,116 @@
+/*\r
+ * PROJECT:         ReactOS Native Headers\r
+ * FILE:            include/ndk/ifssupp.h\r
+ * PURPOSE:         Defintions present in IFS, required for NDK usage.\r
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)\r
+ * UPDATE HISTORY:\r
+ *                  Created 08/16/05\r
+ */\r
+#ifndef _NTIFS_\r
+#define _NTIFS_\r
+\r
+/* DEPENDENCIES **************************************************************/\r
+\r
+/* EXPORTED DATA *************************************************************/\r
+\r
+/* CONSTANTS *****************************************************************/\r
+\r
+/* TYPES *********************************************************************/\r
+\r
+typedef PVOID PRTL_HEAP_PARAMETERS;\r
+\r
+#if defined(USE_LPC6432)\r
+#define LPC_CLIENT_ID CLIENT_ID64\r
+#define LPC_SIZE_T ULONGLONG\r
+#define LPC_PVOID ULONGLONG\r
+#define LPC_HANDLE ULONGLONG\r
+#else\r
+#define LPC_CLIENT_ID CLIENT_ID\r
+#define LPC_SIZE_T SIZE_T\r
+#define LPC_PVOID PVOID\r
+#define LPC_HANDLE HANDLE\r
+#endif\r
+\r
+typedef struct _PORT_MESSAGE\r
+{\r
+    union\r
+    {\r
+        struct\r
+        {\r
+            CSHORT DataLength;\r
+            CSHORT TotalLength;\r
+        } s1;\r
+        ULONG Length;\r
+    } u1;\r
+    union\r
+    {\r
+        struct\r
+        {\r
+            CSHORT Type;\r
+            CSHORT DataInfoOffset;\r
+        } s2;\r
+        ULONG ZeroInit;\r
+    } u2;\r
+    union\r
+    {\r
+        LPC_CLIENT_ID ClientId;\r
+        double DoNotUseThisField;\r
+    };\r
+    ULONG MessageId;\r
+    union\r
+    {\r
+        LPC_SIZE_T ClientViewSize;\r
+        ULONG CallbackId;\r
+    };\r
+} PORT_MESSAGE, *PPORT_MESSAGE;\r
+\r
+typedef struct _PORT_VIEW\r
+{\r
+    ULONG Length;\r
+    LPC_HANDLE SectionHandle;\r
+    ULONG SectionOffset;\r
+    LPC_SIZE_T ViewSize;\r
+    LPC_PVOID ViewBase;\r
+    LPC_PVOID ViewRemoteBase;\r
+} PORT_VIEW, *PPORT_VIEW;\r
+\r
+typedef struct _REMOTE_PORT_VIEW\r
+{\r
+    ULONG Length;\r
+    LPC_SIZE_T ViewSize;\r
+    LPC_PVOID ViewBase;\r
+} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;\r
+\r
+typedef struct _KAPC_STATE\r
+{\r
+    LIST_ENTRY ApcListHead[2];\r
+    PKPROCESS Process;\r
+    BOOLEAN KernelApcInProgress;\r
+    BOOLEAN KernelApcPending;\r
+    BOOLEAN UserApcPending;\r
+} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;\r
+\r
+typedef struct _KQUEUE\r
+{\r
+    DISPATCHER_HEADER Header;\r
+    LIST_ENTRY EntryListHead;\r
+    ULONG CurrentCount;\r
+    ULONG MaximumCount;\r
+    LIST_ENTRY ThreadListHead;\r
+} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;\r
+\r
+typedef PVOID EX_RUNDOWN_REF;\r
+typedef PVOID EX_PUSH_LOCK;\r
+\r
+typedef struct _SECURITY_CLIENT_CONTEXT\r
+{\r
+    SECURITY_QUALITY_OF_SERVICE SecurityQos;\r
+    PACCESS_TOKEN ClientToken;\r
+    BOOLEAN DirectlyAccessClientToken;\r
+    BOOLEAN DirectAccessEffectiveOnly;\r
+    BOOLEAN ServerIsRemote;\r
+    TOKEN_CONTROL ClientTokenControl;\r
+} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;\r
+\r
+#endif\r
+\r
index 8829810..ad4283d 100644 (file)
 #define _IOTYPES_H
 
 /* DEPENDENCIES **************************************************************/
-#include "potypes.h"
 
 /* EXPORTED DATA *************************************************************/
+#ifndef NTOS_MODE_USER
 extern POBJECT_TYPE NTOSAPI IoAdapterObjectType;
 extern POBJECT_TYPE NTOSAPI IoDeviceHandlerObjectType;
 extern POBJECT_TYPE NTOSAPI IoDeviceObjectType;
 extern POBJECT_TYPE NTOSAPI IoDriverObjectType;
 extern POBJECT_TYPE NTOSAPI IoFileObjectType;
+#endif
 
 /* CONSTANTS *****************************************************************/
 
+#ifdef NTOS_MODE_USER
+/* Object Access Rights */
+#define SYMBOLIC_LINK_QUERY                 0x0001
+#define SYMBOLIC_LINK_ALL_ACCESS            STANDARD_RIGHTS_REQUIRED | 0x0001
+#endif
+
+/* File Result Flags */
+#define FILE_SUPERSEDED                     0x00000000
+#define FILE_OPENED                         0x00000001
+#define FILE_CREATED                        0x00000002
+#define FILE_OVERWRITTEN                    0x00000003
+#define FILE_EXISTS                         0x00000004
+#define FILE_DOES_NOT_EXIST                 0x00000005
+
+/* Pipe Flags */
+#define FILE_PIPE_BYTE_STREAM_MODE          0x00000000
+#define FILE_PIPE_MESSAGE_MODE              0x00000001
+#define FILE_PIPE_QUEUE_OPERATION           0x00000000
+#define FILE_PIPE_COMPLETE_OPERATION        0x00000001
+#define FILE_PIPE_INBOUND                   0x00000000
+#define FILE_PIPE_OUTBOUND                  0x00000001
+#define FILE_PIPE_FULL_DUPLEX               0x00000002
+#define FILE_PIPE_CLIENT_END                0x00000000
+#define FILE_PIPE_SERVER_END                0x00000001
+
+/* File Attributes */
+#define FILE_ATTRIBUTE_VALID_FLAGS          0x00007fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS      0x000031a7
+
+/* File Flags */
+#define FILE_SUPERSEDE                      0x00000000
+#define FILE_OPEN                           0x00000001
+#define FILE_CREATE                         0x00000002
+#define FILE_OPEN_IF                        0x00000003
+#define FILE_OVERWRITE                      0x00000004
+#define FILE_OVERWRITE_IF                   0x00000005
+#define FILE_MAXIMUM_DISPOSITION            0x00000005
+
+/* File Types */
+#define FILE_DIRECTORY_FILE                 0x00000001
+#define FILE_WRITE_THROUGH                  0x00000002
+#define FILE_SEQUENTIAL_ONLY                0x00000004
+#define FILE_NO_INTERMEDIATE_BUFFERING      0x00000008
+#define FILE_SYNCHRONOUS_IO_ALERT           0x00000010
+#define FILE_SYNCHRONOUS_IO_NONALERT        0x00000020
+#define FILE_NON_DIRECTORY_FILE             0x00000040
+#define FILE_CREATE_TREE_CONNECTION         0x00000080
+#define FILE_COMPLETE_IF_OPLOCKED           0x00000100
+#define FILE_NO_EA_KNOWLEDGE                0x00000200
+#define FILE_OPEN_FOR_RECOVERY              0x00000400
+#define FILE_RANDOM_ACCESS                  0x00000800
+#define FILE_DELETE_ON_CLOSE                0x00001000
+#define FILE_OPEN_BY_FILE_ID                0x00002000
+#define FILE_OPEN_FOR_BACKUP_INTENT         0x00004000
+#define FILE_NO_COMPRESSION                 0x00008000
+#define FILE_RESERVE_OPFILTER               0x00100000
+#define FILE_OPEN_REPARSE_POINT             0x00200000
+#define FILE_OPEN_NO_RECALL                 0x00400000
+#define FILE_OPEN_FOR_FREE_SPACE_QUERY      0x00800000
+
+/* Device Charactertics */
+#define FILE_REMOVABLE_MEDIA                0x00000001
+#define FILE_REMOTE_DEVICE                  0x00000010
+
 /* Device Object Extension Flags */
 #define DOE_UNLOAD_PENDING    0x1
 #define DOE_DELETE_PENDING    0x2
@@ -67,6 +132,90 @@ extern POBJECT_TYPE NTOSAPI IoFileObjectType;
 #define DNUF_NOT_DISABLEABLE    0x0008
 
 /* ENUMERATIONS **************************************************************/
+
+#ifdef NTOS_MODE_USER
+typedef enum _INTERFACE_TYPE
+{
+    InterfaceTypeUndefined = -1,
+    Internal,
+    Isa,
+    Eisa,
+    MicroChannel,
+    TurboChannel,
+    PCIBus,
+    VMEBus,
+    NuBus,
+    PCMCIABus,
+    CBus,
+    MPIBus,
+    MPSABus,
+    ProcessorInternal,
+    InternalPowerBus,
+    PNPISABus,
+    PNPBus,
+    MaximumInterfaceType
+}INTERFACE_TYPE, *PINTERFACE_TYPE;
+
+typedef enum _FILE_INFORMATION_CLASS
+{
+    FileDirectoryInformation = 1,
+    FileFullDirectoryInformation,
+    FileBothDirectoryInformation,
+    FileBasicInformation,
+    FileStandardInformation,
+    FileInternalInformation,
+    FileEaInformation,
+    FileAccessInformation,
+    FileNameInformation,
+    FileRenameInformation,
+    FileLinkInformation,
+    FileNamesInformation,
+    FileDispositionInformation,
+    FilePositionInformation,
+    FileFullEaInformation,
+    FileModeInformation,
+    FileAlignmentInformation,
+    FileAllInformation,
+    FileAllocationInformation,
+    FileEndOfFileInformation,
+    FileAlternateNameInformation,
+    FileStreamInformation,
+    FilePipeInformation,
+    FilePipeLocalInformation,
+    FilePipeRemoteInformation,
+    FileMailslotQueryInformation,
+    FileMailslotSetInformation,
+    FileCompressionInformation,
+    FileObjectIdInformation,
+    FileCompletionInformation,
+    FileMoveClusterInformation,
+    FileQuotaInformation,
+    FileReparsePointInformation,
+    FileNetworkOpenInformation,
+    FileAttributeTagInformation,
+    FileTrackingInformation,
+    FileIdBothDirectoryInformation,
+    FileIdFullDirectoryInformation,
+    FileValidDataLengthInformation,
+    FileShortNameInformation,
+    FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+typedef enum _FSINFOCLASS
+{
+    FileFsVolumeInformation = 1,
+    FileFsLabelInformation,
+    FileFsSizeInformation,
+    FileFsDeviceInformation,
+    FileFsAttributeInformation,
+    FileFsControlInformation,
+    FileFsFullSizeInformation,
+    FileFsObjectIdInformation,
+    FileFsDriverPathInformation,
+    FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+#endif
+
 typedef enum _PNP_DEVNODE_STATE
 {
     DeviceNodeUnspecified = 0x300,
@@ -95,6 +244,279 @@ typedef enum _PNP_DEVNODE_STATE
 
 /* TYPES *********************************************************************/
 
+#ifdef NTOS_MODE_USER
+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_NETWORK_OPEN_INFORMATION
+{
+    LARGE_INTEGER CreationTime;
+    LARGE_INTEGER LastAccessTime;
+    LARGE_INTEGER LastWriteTime;
+    LARGE_INTEGER ChangeTime;
+    LARGE_INTEGER AllocationSize;
+    LARGE_INTEGER EndOfFile;
+    ULONG FileAttributes;
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
+
+typedef struct _FILE_EA_INFORMATION
+{
+    ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+typedef struct _FILE_COMPRESSION_INFORMATION
+{
+    LARGE_INTEGER CompressedFileSize;
+    USHORT CompressionFormat;
+    UCHAR CompressionUnitShift;
+    UCHAR ChunkShift;
+    UCHAR ClusterShift;
+    UCHAR Reserved[3];
+} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
+
+typedef struct _FILE_POSITION_INFORMATION
+{
+  LARGE_INTEGER CurrentByteOffset;
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
+
+typedef struct _FILE_DISPOSITION_INFORMATION
+{
+    BOOLEAN DeleteFile;
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
+
+typedef struct _FILE_FULL_EA_INFORMATION
+{
+    ULONG NextEntryOffset;
+    UCHAR Flags;
+    UCHAR EaNameLength;
+    USHORT EaValueLength;
+    CHAR EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+typedef struct _FILE_QUOTA_INFORMATION
+{
+    ULONG NextEntryOffset;
+    ULONG SidLength;
+    LARGE_INTEGER ChangeTime;
+    LARGE_INTEGER QuotaUsed;
+    LARGE_INTEGER QuotaThreshold;
+    LARGE_INTEGER QuotaLimit;
+    SID Sid;
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
+
+typedef struct _FILE_INTERNAL_INFORMATION
+{
+    LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+typedef struct _FILE_RENAME_INFORMATION
+{
+    BOOLEAN ReplaceIfExists;
+    HANDLE  RootDirectory;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+typedef struct _FILE_PIPE_INFORMATION
+{
+    ULONG ReadMode;
+    ULONG CompletionMode;
+} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
+
+typedef struct _FILE_PIPE_LOCAL_INFORMATION
+{
+    ULONG NamedPipeType;
+    ULONG NamedPipeConfiguration;
+    ULONG MaximumInstances;
+    ULONG CurrentInstances;
+    ULONG InboundQuota;
+    ULONG ReadDataAvailable;
+    ULONG OutboundQuota;
+    ULONG WriteQuotaAvailable;
+    ULONG NamedPipeState;
+    ULONG NamedPipeEnd;
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
+
+typedef struct _FILE_PIPE_REMOTE_INFORMATION
+{
+    LARGE_INTEGER CollectDataTime;
+    ULONG MaximumCollectionCount;
+} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
+{
+    ULONG MaximumMessageSize;
+    ULONG MailslotQuota;
+    ULONG NextMessageSize;
+    ULONG MessagesAvailable;
+    LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_SET_INFORMATION
+{
+    LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
+
+typedef struct _FILE_BOTH_DIR_INFORMATION
+{
+    ULONG NextEntryOffset;
+    ULONG FileIndex;
+    LARGE_INTEGER CreationTime;
+    LARGE_INTEGER LastAccessTime;
+    LARGE_INTEGER LastWriteTime;
+    LARGE_INTEGER ChangeTime;
+    LARGE_INTEGER EndOfFile;
+    LARGE_INTEGER AllocationSize;
+    ULONG FileAttributes;
+    ULONG FileNameLength;
+    ULONG EaSize;
+    CCHAR ShortNameLength;
+    WCHAR ShortName[12];
+    WCHAR FileName[1];
+} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+typedef struct _FILE_COMPLETION_INFORMATION
+{
+    HANDLE Port;
+    PVOID Key;
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
+
+typedef struct _FILE_LINK_INFORMATION
+{
+    BOOLEAN ReplaceIfExists;
+    HANDLE RootDirectory;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
+
+typedef struct _FILE_NAME_INFORMATION
+{
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+typedef struct _FILE_ALLOCATION_INFORMATION
+{
+    LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+typedef struct _FILE_END_OF_FILE_INFORMATION
+{
+    LARGE_INTEGER EndOfFile;
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
+
+typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
+{
+    LARGE_INTEGER ValidDataLength;
+} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
+
+typedef struct _FILE_FS_DEVICE_INFORMATION
+{
+    DEVICE_TYPE DeviceType;
+    ULONG Characteristics;
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
+
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
+{
+    ULONG FileSystemAttributes;
+    ULONG MaximumComponentNameLength;
+    ULONG FileSystemNameLength;
+    WCHAR FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+typedef struct _FILE_FS_SIZE_INFORMATION
+{
+    LARGE_INTEGER TotalAllocationUnits;
+    LARGE_INTEGER AvailableAllocationUnits;
+    ULONG SectorsPerAllocationUnit;
+    ULONG BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_LABEL_INFORMATION
+{
+    ULONG VolumeLabelLength;
+    WCHAR VolumeLabel[1];
+} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
+
+typedef struct _FILE_FS_VOLUME_INFORMATION
+{
+    LARGE_INTEGER VolumeCreationTime;
+    ULONG VolumeSerialNumber;
+    ULONG VolumeLabelLength;
+    BOOLEAN SupportsObjects;
+    WCHAR VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
+{
+    LARGE_INTEGER Timeout;
+    ULONG NameLength;
+    BOOLEAN TimeoutSpecified;
+    WCHAR Name[1];
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
+
+typedef struct _FILE_PIPE_PEEK_BUFFER
+{
+    ULONG NamedPipeState;
+    ULONG ReadDataAvailable;
+    ULONG NumberOfMessages;
+    ULONG MessageLength;
+    CHAR Data[1];
+} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+
+typedef struct _IO_STATUS_BLOCK
+{
+    union
+    {
+        NTSTATUS  Status;
+        PVOID  Pointer;
+    };
+    ULONG_PTR  Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+typedef struct _IO_ERROR_LOG_PACKET
+{
+    UCHAR MajorFunctionCode;
+    UCHAR RetryCount;
+    USHORT DumpDataSize;
+    USHORT NumberOfStrings;
+    USHORT StringOffset;
+    USHORT EventCategory;
+    NTSTATUS ErrorCode;
+    ULONG UniqueErrorValue;
+    NTSTATUS FinalStatus;
+    ULONG SequenceNumber;
+    ULONG IoControlCode;
+    LARGE_INTEGER DeviceOffset;
+    ULONG DumpData[1];
+}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
+
+typedef struct _IO_ERROR_LOG_MESSAGE
+{
+    USHORT Type;
+    USHORT Size;
+    USHORT DriverNameLength;
+    LARGE_INTEGER TimeStamp;
+    ULONG DriverNameOffset;
+    IO_ERROR_LOG_PACKET EntryData;
+} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
+#endif
+
 typedef struct _MAILSLOT_CREATE_PARAMETERS
 {
     ULONG           MailslotQuota;
@@ -115,6 +537,7 @@ typedef struct _NAMED_PIPE_CREATE_PARAMETERS
     BOOLEAN         TimeoutSpecified;
 } NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
 
+#ifndef NTOS_MODE_USER
 typedef struct _IO_TIMER
 {
     USHORT Type;
@@ -127,52 +550,33 @@ typedef struct _IO_TIMER
 
 typedef struct _DEVICE_NODE
 {
-    /* A tree structure. */
     struct _DEVICE_NODE *Parent;
     struct _DEVICE_NODE *PrevSibling;
     struct _DEVICE_NODE *NextSibling;
     struct _DEVICE_NODE *Child;
-    /* The level of deepness in the tree. */
     UINT Level;
-    PPO_DEVICE_NOTIFY Notify;
-    /* State machine. */
+    struct _PO_DEVICE_NOTIFY *Notify;
     PNP_DEVNODE_STATE State;
     PNP_DEVNODE_STATE PreviousState;
     PNP_DEVNODE_STATE StateHistory[20];
     UINT StateHistoryEntry;
-    /* ? */
     INT CompletionStatus;
-    /* ? */
     PIRP PendingIrp;
-    /* See DNF_* flags below (WinDBG documentation has WRONG values) */
     ULONG Flags;
-    /* See DNUF_* flags below (and IRP_MN_QUERY_PNP_DEVICE_STATE) */
     ULONG UserFlags;
-    /* See CM_PROB_* values are defined in cfg.h */
     ULONG Problem;
-    /* Pointer to the PDO corresponding to the device node. */
     PDEVICE_OBJECT PhysicalDeviceObject;
-    /* Resource list as assigned by the PnP arbiter. See IRP_MN_START_DEVICE
-       and ARBITER_INTERFACE (not documented in DDK, but present in headers). */
     PCM_RESOURCE_LIST ResourceList;
-    /* Resource list as assigned by the PnP arbiter (translated version). */
     PCM_RESOURCE_LIST ResourceListTranslated;
-    /* Instance path relative to the Enum key in registry. */
     UNICODE_STRING InstancePath;
-    /* Name of the driver service. */
     UNICODE_STRING ServiceName;
-    /* ? */
     PDEVICE_OBJECT DuplicatePDO;
-    /* See IRP_MN_QUERY_RESOURCE_REQUIREMENTS. */
     PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements;
-    /* Information about bus for bus drivers. */
     INTERFACE_TYPE InterfaceType;
     ULONG BusNumber;
-    /* Information about underlying bus for child devices. */
     INTERFACE_TYPE ChildInterfaceType;
     ULONG ChildBusNumber;
     USHORT ChildBusTypeIndex;
-    /* ? */
     UCHAR RemovalPolicy;
     UCHAR HardwareRemovalPolicy;
     LIST_ENTRY TargetDeviceNotify;
@@ -191,9 +595,7 @@ typedef struct _DEVICE_NODE
     {
         struct _DEVICE_NODE *NextResourceDeviceNode;
     } OverUsed2;
-    /* See IRP_MN_QUERY_RESOURCES/IRP_MN_FILTER_RESOURCES. */
     PCM_RESOURCE_LIST BootResources;
-    /* See the bitfields in DEVICE_CAPABILITIES structure. */
     ULONG CapabilityFlags;
     struct
     {
@@ -245,6 +647,77 @@ typedef struct _PRIVATE_DRIVER_EXTENSIONS
     PVOID ClientIdentificationAddress;
     CHAR Extension[1];
 } PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+#endif
+
+/* FUNCTION TYPES ************************************************************/
 
+typedef VOID
+(NTAPI *PIO_APC_ROUTINE)(
+    IN PVOID ApcContext,
+    IN PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG Reserved);
+
+/* I/O CONTROL CODES *********************************************************/
+
+#ifdef NTOS_MODE_USER
+/* Mailslots */
+#define FSCTL_MAILSLOT_PEEK             \
+    CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
+
+/* Pipes */
+#define FSCTL_PIPE_ASSIGN_EVENT         \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_DISCONNECT           \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_LISTEN               \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_PEEK                 \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_QUERY_EVENT          \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_TRANSCEIVE           \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_WAIT                 \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_IMPERSONATE          \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_SET_CLIENT_PROCESS   \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_INTERNAL_READ        \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_INTERNAL_WRITE       \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+
+/* Tapes */
+#define IOCTL_TAPE_ERASE                \
+    CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_PREPARE              \
+    CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_WRITE_MARKS          \
+    CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_GET_POSITION         \
+    CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_POSITION         \
+    CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_DRIVE_PARAMS     \
+    CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_DRIVE_PARAMS     \
+    CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_GET_MEDIA_PARAMS     \
+    CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_MEDIA_PARAMS     \
+    CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_STATUS           \
+    CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_CREATE_PARTITION     \
+    CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#endif
 #endif
 
index 187e53f..1fc0539 100644 (file)
@@ -12,8 +12,6 @@
 /* DEPENDENCIES **************************************************************/
 #include "kdtypes.h"
 
-/* FUNCTION TYPES ************************************************************/
-
 /* PROTOTYPES ****************************************************************/
 
 BYTE
index 6dd553c..d8ea0e5 100644 (file)
@@ -12,8 +12,6 @@
 /* DEPENDENCIES **************************************************************/
 #include "ketypes.h"
 
-/* FUNCTION TYPES ************************************************************/
-
 /* PROTOTYPES ****************************************************************/
 
 VOID
index 005c390..2d52a22 100644 (file)
 #define _KETYPES_H
 
 /* DEPENDENCIES **************************************************************/
-#include "haltypes.h"
-#include "potypes.h"
-#include "mmtypes.h"
+#ifndef NTOS_MODE_USER
 #include <arc/arc.h>
-
-/* 
- * Architecture-specific types 
- * NB: Although KPROCESS is Arch-Specific,
- * only some members are different and we will use #ifdef
- * directly in the structure to avoid dependency-hell
- */
 #include "arch/ketypes.h"
+#endif
 
 /* CONSTANTS *****************************************************************/
 #define SSDT_MAX_ENTRIES 4
 #define PROCESSOR_FEATURE_MAX 64
-
 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
-
 #define THREAD_WAIT_OBJECTS 4
+#define THREAD_ALERT 0x4
+
+#ifdef NTOS_MODE_USER
+#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)
+#endif
 
 /* EXPORTED DATA *************************************************************/
+#ifndef NTOS_MODE_USER
 extern CHAR NTOSAPI KeNumberProcessors;
 extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock;
 extern ULONG NTOSAPI KeDcacheFlushCount;
@@ -43,11 +39,203 @@ extern ULONG NTOSAPI KeMinimumIncrement;
 extern ULONG NTOSAPI NtBuildNumber;
 extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES];
 extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
+#endif
 
 /* ENUMERATIONS **************************************************************/
 
+#ifdef NTOS_MODE_USER
+typedef enum _EVENT_TYPE
+{
+    NotificationEvent,
+    SynchronizationEvent
+} EVENT_TYPE;
+
+typedef enum _TIMER_TYPE
+{
+    NotificationTimer,
+    SynchronizationTimer
+} TIMER_TYPE;
+
+typedef enum _WAIT_TYPE
+{
+    WaitAll,
+    WaitAny
+} WAIT_TYPE;
+
+typedef enum _MODE
+{
+    KernelMode,
+    UserMode,
+    MaximumMode
+} MODE;
+
+typedef enum _KWAIT_REASON
+{
+    Executive,
+    FreePage,
+    PageIn,
+    PoolAllocation,
+    DelayExecution,
+    Suspended,
+    UserRequest,
+    WrExecutive,
+    WrFreePage,
+    WrPageIn,
+    WrPoolAllocation,
+    WrDelayExecution,
+    WrSuspended,
+    WrUserRequest,
+    WrEventPair,
+    WrQueue,
+    WrLpcReceive,
+    WrLpcReply,
+    WrVirtualMemory,
+    WrPageOut,
+    WrRendezvous,
+    Spare2,
+    WrGuardedMutex,
+    Spare4,
+    Spare5,
+    Spare6,
+    WrKernel,
+    WrResource,
+    WrPushLock,
+    WrMutex,
+    WrQuantumEnd,
+    WrDispatchInt,
+    WrPreempted,
+    WrYieldExecution,
+    MaximumWaitReason
+} KWAIT_REASON;
+
+typedef enum _KPROFILE_SOURCE
+{
+    ProfileTime,
+    ProfileAlignmentFixup,
+    ProfileTotalIssues,
+    ProfilePipelineDry,
+    ProfileLoadInstructions,
+    ProfilePipelineFrozen,
+    ProfileBranchInstructions,
+    ProfileTotalNonissues,
+    ProfileDcacheMisses,
+    ProfileIcacheMisses,
+    ProfileCacheMisses,
+    ProfileBranchMispredictions,
+    ProfileStoreInstructions,
+    ProfileFpInstructions,
+    ProfileIntegerInstructions,
+    Profile2Issue,
+    Profile3Issue,
+    Profile4Issue,
+    ProfileSpecialInstructions,
+    ProfileTotalCycles,
+    ProfileIcacheIssues,
+    ProfileDcacheAccesses,
+    ProfileMemoryBarrierCycles,
+    ProfileLoadLinkedIssues,
+    ProfileMaximum
+} KPROFILE_SOURCE;
+
+typedef enum _NT_PRODUCT_TYPE
+{
+    NtProductWinNt = 1,
+    NtProductLanManNt,
+    NtProductServer
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
+
+typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
+{
+    StandardDesign,
+    NEC98x86,
+    EndAlternatives
+} ALTERNATIVE_ARCHITECTURE_TYPE;
+#endif
+
+typedef enum _KTHREAD_STATE
+{
+    Initialized,
+    Ready,
+    Running,
+    Standby,
+    Terminated,
+    Waiting,
+    Transition,
+    DeferredReady,
+} KTHREAD_STATE, *PKTHREAD_STATE;
+
+/* FUNCTION TYPES ************************************************************/
+
+typedef VOID
+(NTAPI *PKNORMAL_ROUTINE)(
+    IN PVOID  NormalContext,
+    IN PVOID  SystemArgument1,
+    IN PVOID  SystemArgument2);
+
+typedef VOID
+(NTAPI *PTIMER_APC_ROUTINE)(
+    IN PVOID  TimerContext,
+    IN ULONG  TimerLowValue,
+    IN LONG  TimerHighValue);
+
 /* TYPES *********************************************************************/
 
+typedef LONG KPRIORITY;
+
+#ifdef NTOS_MODE_USER
+typedef CCHAR KPROCESSOR_MODE;
+
+typedef struct _KSYSTEM_TIME
+{
+    ULONG LowPart;
+    LONG High1Time;
+    LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+typedef struct _KUSER_SHARED_DATA
+{
+    ULONG TickCountLowDeprecated;
+    ULONG TickCountMultiplier;
+    volatile KSYSTEM_TIME InterruptTime;
+    volatile KSYSTEM_TIME SystemTime;
+    volatile KSYSTEM_TIME TimeZoneBias;
+    USHORT ImageNumberLow;
+    USHORT ImageNumberHigh;
+    WCHAR NtSystemRoot[260];
+    ULONG MaxStackTraceDepth;
+    ULONG CryptoExponent;
+    ULONG TimeZoneId;
+    ULONG LargePageMinimum;
+    ULONG Reserved2[7];
+    NT_PRODUCT_TYPE NtProductType;
+    BOOLEAN ProductTypeIsValid;
+    ULONG NtMajorVersion;
+    ULONG NtMinorVersion;
+    BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
+    ULONG Reserved1;
+    ULONG Reserved3;
+    volatile ULONG TimeSlip;
+    ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
+    LARGE_INTEGER SystemExpirationDate;
+    ULONG SuiteMask;
+    BOOLEAN KdDebuggerEnabled;
+    volatile ULONG ActiveConsoleId;
+    volatile ULONG DismountCount;
+    ULONG ComPlusPackage;
+    ULONG LastSystemRITEventTickCount;
+    ULONG NumberOfPhysicalPages;
+    BOOLEAN SafeBootMode;
+    ULONG TraceLogging;
+    ULONGLONG Fill0;
+    ULONGLONG SystemCall[4];
+    union {
+        volatile KSYSTEM_TIME TickCount;
+        volatile ULONG64 TickCountQuad;
+    };
+} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
+#endif
+
+#ifndef NTOS_MODE_USER
 typedef struct _CONFIGURATION_COMPONENT_DATA
 {
     struct _CONFIGURATION_COMPONENT_DATA *Parent;
@@ -63,27 +251,6 @@ typedef enum _KAPC_ENVIRONMENT
     CurrentApcEnvironment
 } KAPC_ENVIRONMENT;
 
-/* We don't want to force NTIFS usage only for two structures */
-#ifndef _NTIFS_
-typedef struct _KAPC_STATE
-{
-    LIST_ENTRY ApcListHead[2];
-    PKPROCESS Process;
-    BOOLEAN KernelApcInProgress;
-    BOOLEAN KernelApcPending;
-    BOOLEAN UserApcPending;
-} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
-
-typedef struct _KQUEUE
-{
-    DISPATCHER_HEADER Header;
-    LIST_ENTRY EntryListHead;
-    ULONG CurrentCount;
-    ULONG MaximumCount;
-    LIST_ENTRY ThreadListHead;
-} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
-#endif
-
 typedef struct _KNODE
 {
    SLIST_HEADER DeadStackList;
@@ -319,17 +486,6 @@ typedef struct _KPROCESS
     ULONG                 StackCount;                /* 06C */
     LIST_ENTRY            ProcessListEntry;          /* 070 */
 } KPROCESS;
-
-typedef enum _KTHREAD_STATE
-{
-    Initialized,
-    Ready,
-    Running,
-    Standby,
-    Terminated,
-    Waiting,
-    Transition,
-    DeferredReady,
-} KTHREAD_STATE, *PKTHREAD_STATE;
+#endif /* !NTOS_MODE_USER */
 
 #endif
index f0b74cb..f27ed12 100644 (file)
@@ -34,12 +34,7 @@ typedef enum _LPC_TYPE
 
 /* TYPES *********************************************************************/
 
-/* 
- * Native Structures in IFS. Duplicated here for user-mode.
- * Also duplicated if the IFS is not present. Until the WDK is
- * released, we should not force the usage of a 100$ kit.
- */
-#if defined(NTOS_MODE_USER) || !(defined(_NTIFS_))
+#ifdef NTOS_MODE_USER
 
 #if defined(USE_LPC6432)
 #define LPC_CLIENT_ID CLIENT_ID64
@@ -130,7 +125,6 @@ typedef struct _LPCP_PORT_QUEUE
     LIST_ENTRY ReceiveHead;
 } LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE;
 
-#ifdef _NTIFS_
 typedef struct _LPCP_PORT_OBJECT
 {
     ULONG Length;
@@ -177,8 +171,6 @@ typedef struct _LPCP_CONNECTION_MESSAGE
 } LPCP_CONNECTION_MESSAGE, *PLPCP_CONNECTION_MESSAGE;
 #endif
 
-#endif
-
 /* CONSTANTS *****************************************************************/
 
 #define PORT_MAXIMUM_MESSAGE_LENGTH 256
index df4adf2..89baab8 100644 (file)
@@ -10,7 +10,6 @@
 #define _MMTYPES_H
 
 /* DEPENDENCIES **************************************************************/
-
 #include "arch/mmtypes.h"
 
 /* EXPORTED DATA *************************************************************/
 /* CONSTANTS *****************************************************************/
 
 /* ENUMERATIONS **************************************************************/
+
+#ifdef NTOS_MODE_USER
+typedef enum _SECTION_INHERIT
+{
+    ViewShare = 1,
+    ViewUnmap = 2
+} SECTION_INHERIT;
+
+typedef enum _POOL_TYPE
+{
+    NonPagedPool,
+    PagedPool,
+    NonPagedPoolMustSucceed,
+    DontUseThisType,
+    NonPagedPoolCacheAligned,
+    PagedPoolCacheAligned,
+    NonPagedPoolCacheAlignedMustS,
+    MaxPoolType,
+    NonPagedPoolSession = 32,
+    PagedPoolSession,
+    NonPagedPoolMustSucceedSession,
+    DontUseThisTypeSession,
+    NonPagedPoolCacheAlignedSession,
+    PagedPoolCacheAlignedSession,
+    NonPagedPoolCacheAlignedMustSSession
+} POOL_TYPE;
+#endif
+
 typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
 {
     LookasideSmallIrpList = 0,
@@ -32,6 +59,40 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
 
 /* TYPES *********************************************************************/
 
+#ifdef NTOS_MODE_USER
+typedef struct _VM_COUNTERS
+{
+    SIZE_T PeakVirtualSize;
+    SIZE_T VirtualSize;
+    ULONG PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+} VM_COUNTERS, *PVM_COUNTERS;
+
+typedef struct _VM_COUNTERS_EX
+{
+    SIZE_T PeakVirtualSize;
+    SIZE_T VirtualSize;
+    ULONG PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+    SIZE_T PrivateUsage;
+} VM_COUNTERS_EX, *PVM_COUNTERS_EX;
+#endif
+
+#ifndef NTOS_MODE_USER
 /* FIXME: Forced to do this for now, because of EPROCESS, will go away before 0.3.0 */
 typedef struct _MADDRESS_SPACE
 {
@@ -43,12 +104,6 @@ typedef struct _MADDRESS_SPACE
     ULONG PageTableRefCountTableSize;
 } MADDRESS_SPACE, *PMADDRESS_SPACE;
 
-typedef struct _PP_LOOKASIDE_LIST
-{
-    struct _GENERAL_LOOKASIDE *P;
-    struct _GENERAL_LOOKASIDE *L;
-} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
-
 typedef struct _ADDRESS_RANGE
 {
     ULONG BaseAddrLow;
@@ -161,3 +216,4 @@ typedef struct _MMSUPPORT
 } MMSUPPORT, *PMMSUPPORT;
 
 #endif
+#endif
index fb80f25..ae9c78e 100644 (file)
 /* Helper Header */
 #include <helper.h>
 
+/* A version of ntdef.h to be used with PSDK headers. */
+#include "umtypes.h"
+
 /* Kernel-Mode NDK */
 #ifndef NTOS_MODE_USER
-    #include "kdtypes.h"    /* Kernel Debugger Types */
-    #include "kdfuncs.h"    /* Kernel Debugger Functions */
-    #include "cctypes.h"    /* Cache Manager Types */
-    #include "dbgktypes.h"  /* User-Mode Kernel Debugging Types */
-    #include "extypes.h"    /* Executive Types */
-    #include "haltypes.h"   /* Hardware Abstraction Layer Types */
-    #include "halfuncs.h"   /* Hardware Abstraction Layer Functions */
-    #include "inbvfuncs.h"  /* Initialization Boot Video Functions */
-    #include "iotypes.h"    /* Input/Output Manager Types */
-    #include "iofuncs.h"    /* Input/Output Manager Functions */
-    #include "ketypes.h"    /* Kernel Types */
-    #include "kefuncs.h"    /* Kernel Functions */
-    #include "mmtypes.h"    /* Memory Manager Types */
-    #include "mmfuncs.h"    /* Memory Manager Functions */
-    #include "obtypes.h"    /* Object Manager Types */
-    #include "obfuncs.h"    /* Object Manager Functions */
-    #include "potypes.h"    /* Power Manager Types */
-    #include "psfuncs.h"    /* Process Manager Functions */
-    #include "setypes.h"    /* Security Subsystem Types */
-    #include "sefuncs.h"    /* Security Subsystem Functions */
-#else
-    /* User-Mode NDK */
-    #include "umtypes.h"    /* Native Types in DDK/IFS but not in PSDK */
-    #include "umfuncs.h"    /* User-Mode NT Library Functions */
-#endif
+#include "ifssupp.h"        /* IFS Support Header */
+#include "kdfuncs.h"        /* Kernel Debugger Functions */
+#include "cctypes.h"        /* Cache Manager Types */
+#include "potypes.h"        /* Power Manager Types */
+#include "dbgktypes.h"      /* User-Mode Kernel Debugging Types */
+#include "haltypes.h"       /* Hardware Abstraction Layer Types */
+#include "halfuncs.h"       /* Hardware Abstraction Layer Functions */
+#include "inbvfuncs.h"      /* Initialization Boot Video Functions */
+#include "iofuncs.h"        /* Input/Output Manager Functions */
+#include "kefuncs.h"        /* Kernel Functions */
+#include "mmfuncs.h"        /* Memory Manager Functions */
+#include "obfuncs.h"        /* Object Manager Functions */
+#include "psfuncs.h"        /* Process Manager Functions */
+#include "setypes.h"        /* Security Subsystem Types */
+#include "sefuncs.h"        /* Security Subsystem Functions */
+#endif /* !NTOS_MODE_USER */
 
 /* Shared NDK */
-#include "ldrfuncs.h"       /* Loader Functions */
+#include "extypes.h"        /* Executive Types */
+#include "cmtypes.h"        /* Configuration Manager Types */
+#include "kdtypes.h"        /* Kernel Debugger Types */
+#include "ketypes.h"        /* Kernel Types */
+#include "iotypes.h"        /* Input/Output Manager Types */
 #include "ldrtypes.h"       /* Loader Types */
-#include "lpctypes.h"       /* Local Procedure Call Types */
+#include "ldrfuncs.h"       /* Loader Functions */
+#include "mmtypes.h"        /* Memory Manager Types */
+#include "obtypes.h"        /* Object Manager Types */
 #include "pstypes.h"        /* Process Manager Types */
-#include "rtltypes.h"       /* Runtime Library Types */
-#include "rtlfuncs.h"       /* Runtime Library Functions */
+#include "lpctypes.h"       /* Local Procedure Call Types */
 #include "zwtypes.h"        /* Native Types */
 #include "zwfuncs.h"        /* Native Functions (System Calls) */
+#include "rtltypes.h"       /* Runtime Library Types */
+#include "rtlfuncs.h"       /* Runtime Library Functions */
+#include "umfuncs.h"        /* User-Mode NT Library Functions */
 #include "i386/floatsave.h" /* Floating Point Save Area Definitions for i386 */
 #include "i386/segment.h"   /* Kernel CPU Segment Definitions for i386 */
 
index c79a85e..9ee664e 100644 (file)
 
 /* CONSTANTS *****************************************************************/
 
+#ifdef NTOS_MODE_USER
+/* Definitions for Object Creation */
+#define OBJ_INHERIT 2L
+#define OBJ_PERMANENT 16L
+#define OBJ_EXCLUSIVE 32L
+#define OBJ_CASE_INSENSITIVE 64L
+#define OBJ_OPENIF 128L
+#define OBJ_OPENLINK 256L
+#define OBJ_VALID_ATTRIBUTES 498L
+#define InitializeObjectAttributes(p,n,a,r,s) { \
+    (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
+    (p)->RootDirectory = (r); \
+    (p)->Attributes = (a); \
+    (p)->ObjectName = (n); \
+    (p)->SecurityDescriptor = (s); \
+    (p)->SecurityQualityOfService = NULL; \
+}
+
+/* Directory Object Access Rights */
+#define DIRECTORY_QUERY                 0x0001
+#define DIRECTORY_TRAVERSE              0x0002
+#define DIRECTORY_CREATE_OBJECT         0x0004
+#define DIRECTORY_CREATE_SUBDIRECTORY   0x0008
+#define DIRECTORY_ALL_ACCESS            STANDARD_RIGHTS_REQUIRED | 0xF
+#endif
+
+/* Duplication Flags */
+#define DUPLICATE_SAME_ATTRIBUTES       0x00000004
+
 /* Values for DosDeviceDriveType */
 #define DOSDEVICE_DRIVE_UNKNOWN                0
 #define DOSDEVICE_DRIVE_CALCULATE      1
@@ -22,6 +51,7 @@
 #define DOSDEVICE_DRIVE_CDROM          5
 #define DOSDEVICE_DRIVE_RAMDISK                6
 
+#ifndef NTOS_MODE_USER
 /* Object Flags */
 #define OB_FLAG_CREATE_INFO    0x01
 #define OB_FLAG_KERNEL_MODE    0x02
@@ -95,11 +125,10 @@ typedef PVOID
     ULONG  Attributes
 );
 
-
 typedef NTSTATUS
 (STDCALL *OB_SECURITY_METHOD)(
     PVOID Object,
-    SECURITY_OPERATION_CODE OperationType,                         
+    SECURITY_OPERATION_CODE OperationType,
     SECURITY_INFORMATION SecurityInformation,
     PSECURITY_DESCRIPTOR NewSecurityDescriptor,
     PULONG ReturnLength,
@@ -116,9 +145,18 @@ typedef NTSTATUS
     PWSTR  RemainingPath,
     struct _OBJECT_ATTRIBUTES*  ObjectAttributes
 );
+#endif
 
 /* TYPES *********************************************************************/
 
+#ifdef NTOS_MODE_USER
+typedef struct _OBJECT_NAME_INFORMATION
+{
+    UNICODE_STRING Name;
+} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
+#endif
+
+#ifndef NTOS_MODE_USER
 typedef struct _OBJECT_BASIC_INFORMATION
 {
     ULONG Attributes;
@@ -292,5 +330,6 @@ typedef struct _DEVICE_MAP
 
 extern NTOSAPI POBJECT_TYPE ObDirectoryType;
 extern NTOSAPI PDEVICE_MAP ObSystemDeviceMap;
+#endif
 
 #endif
index 4f1b414..2d72cd1 100644 (file)
 
 /* DEPENDENCIES **************************************************************/
 #include "ldrtypes.h"
-#include "rtltypes.h"
+#include "mmtypes.h"
+#include "obtypes.h"
+#include "extypes.h"
+#ifndef NTOS_MODE_USER
+#include "setypes.h"
+#endif
 
 /* EXPORTED DATA *************************************************************/
 
+#ifndef NTOS_MODE_USER
 extern NTOSAPI struct _EPROCESS* PsInitialSystemProcess;
 extern NTOSAPI POBJECT_TYPE PsProcessType;
 extern NTOSAPI POBJECT_TYPE PsThreadType;
+#endif
 
 /* CONSTANTS *****************************************************************/
 
@@ -31,10 +38,16 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
     #define JOB_OBJECT_ALL_ACCESS               (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
 #endif
 
-#define THREAD_ALERT 0x4
-
 #define USER_SHARED_DATA (0x7FFE0000)
 
+#ifdef NTOS_MODE_USER
+/* Macros for current Process/Thread built-in 'special' ID */
+#define NtCurrentProcess()                      ((HANDLE)(LONG_PTR)-1)
+#define ZwCurrentProcess()                      NtCurrentProcess()
+#define NtCurrentThread()                       ((HANDLE)(LONG_PTR)-2)
+#define ZwCurrentThread()                       NtCurrentThread()
+#endif
+
 /* Process priority classes */
 #define PROCESS_PRIORITY_CLASS_INVALID          0
 #define PROCESS_PRIORITY_CLASS_IDLE             1
@@ -75,9 +88,74 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
 
 /* ENUMERATIONS **************************************************************/
 
+#ifdef NTOS_MODE_USER
+typedef enum _PROCESSINFOCLASS
+{
+    ProcessBasicInformation,
+    ProcessQuotaLimits,
+    ProcessIoCounters,
+    ProcessVmCounters,
+    ProcessTimes,
+    ProcessBasePriority,
+    ProcessRaisePriority,
+    ProcessDebugPort,
+    ProcessExceptionPort,
+    ProcessAccessToken,
+    ProcessLdtInformation,
+    ProcessLdtSize,
+    ProcessDefaultHardErrorMode,
+    ProcessIoPortHandlers,
+    ProcessPooledUsageAndLimits,
+    ProcessWorkingSetWatch,
+    ProcessUserModeIOPL,
+    ProcessEnableAlignmentFaultFixup,
+    ProcessPriorityClass,
+    ProcessWx86Information,
+    ProcessHandleCount,
+    ProcessAffinityMask,
+    ProcessPriorityBoost,
+    ProcessDeviceMap,
+    ProcessSessionInformation,
+    ProcessForegroundInformation,
+    ProcessWow64Information,
+    ProcessImageFileName,
+    ProcessLUIDDeviceMapsEnabled,
+    ProcessBreakOnTermination,
+    ProcessDebugObjectHandle,
+    ProcessDebugFlags,
+    ProcessHandleTracing,
+    MaxProcessInfoClass
+} PROCESSINFOCLASS;
+
+typedef enum _THREADINFOCLASS
+{
+    ThreadBasicInformation,
+    ThreadTimes,
+    ThreadPriority,
+    ThreadBasePriority,
+    ThreadAffinityMask,
+    ThreadImpersonationToken,
+    ThreadDescriptorTableEntry,
+    ThreadEnableAlignmentFaultFixup,
+    ThreadEventPair_Reusable,
+    ThreadQuerySetWin32StartAddress,
+    ThreadZeroTlsCell,
+    ThreadPerformanceCount,
+    ThreadAmILastThread,
+    ThreadIdealProcessor,
+    ThreadPriorityBoost,
+    ThreadSetTlsArrayAddress,
+    ThreadIsIoPending,
+    ThreadHideFromDebugger,
+    ThreadBreakOnTermination,
+    MaxThreadInfoClass
+} THREADINFOCLASS;
+#endif
+
 /* FUNCTION TYPES ************************************************************/
 typedef VOID (NTAPI *PPEBLOCKROUTINE)(PVOID);
 
+#ifndef NTOS_MODE_USER
 typedef NTSTATUS
 (NTAPI *PW32_PROCESS_CALLBACK)(
     struct _EPROCESS *Process,
@@ -89,9 +167,18 @@ typedef NTSTATUS
     struct _ETHREAD *Thread,
     BOOLEAN Create
 );
+#endif
 
 /* TYPES *********************************************************************/
 
+#ifdef NTOS_MODE_USER
+typedef struct _CLIENT_ID
+{
+    HANDLE UniqueProcess;
+    HANDLE UniqueThread;
+} CLIENT_ID, *PCLIENT_ID;
+#endif
+
 struct _W32THREAD;
 struct _W32PROCESS;
 
@@ -118,7 +205,7 @@ typedef struct _PEB
     HANDLE Mutant;                                   /* 04h */
     PVOID ImageBaseAddress;                          /* 08h */
     PPEB_LDR_DATA Ldr;                               /* 0Ch */
-    PRTL_USER_PROCESS_PARAMETERS ProcessParameters;  /* 10h */
+    struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters;  /* 10h */
     PVOID SubSystemData;                             /* 14h */
     PVOID ProcessHeap;                               /* 18h */
     PVOID FastPebLock;                               /* 1Ch */
@@ -168,7 +255,7 @@ typedef struct _PEB
     ULONG SessionId;                                 /* 1D4h */
     PVOID AppCompatInfo;                             /* 1D8h */
     UNICODE_STRING CSDVersion;                       /* 1DCh */
-} PEB;
+} PEB, *PPEB;
 
 typedef struct _GDI_TEB_BATCH
 {
@@ -276,14 +363,7 @@ typedef struct _TEB
     PVOID WineDebugInfo;                    /* FBCh */    
 } TEB, *PTEB;
 
-/* KERNEL MODE ONLY **********************************************************/
 #ifndef NTOS_MODE_USER
-
-#include "mmtypes.h"
-#include "obtypes.h"
-#include "extypes.h"
-#include "setypes.h"
-
 /* FIXME: see note in mmtypes.h */
 #ifdef _NTOSKRNL_
 #include <internal/mm.h>
@@ -323,13 +403,6 @@ typedef struct _PS_IMPERSONATION_INFORMATION
 } PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
 
 #include <pshpack4.h>
-/*
- * NAME:           ETHREAD
- * DESCRIPTION:    Internal Executive Thread Structure.
- * PORTABILITY:    Architecture Independent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/ETHREAD
- */
 typedef struct _ETHREAD
 {
     KTHREAD                        Tcb;                         /* 1C0 */
@@ -373,7 +446,7 @@ typedef struct _ETHREAD
     PKSTART_ROUTINE                StartAddress;                /* 21C */
     union
     {
-        PTHREAD_START_ROUTINE      Win32StartAddress;           /* 220 */
+        PVOID                      Win32StartAddress;           /* 220 */
         ULONG                      LpcReceivedMessageId;        /* 220 */
     };
     LIST_ENTRY                     ThreadListEntry;             /* 224 */
@@ -431,13 +504,6 @@ typedef struct _ETHREAD
     UCHAR                          ActiveFaultCount;            /* 24E */
 } ETHREAD;
 
-/*
- * NAME:           EPROCESS
- * DESCRIPTION:    Internal Executive Process Structure.
- * PORTABILITY:    Architecture Independent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/EPROCESS
- */
 typedef struct _EPROCESS
 {
     KPROCESS              Pcb;                          /* 000 */
index ff11be2..e086859 100644 (file)
@@ -10,8 +10,6 @@
 #define _RTLFUNCS_H
 
 /* DEPENDENCIES **************************************************************/
-#include "rtltypes.h"
-#include "pstypes.h"
 #include <ntnls.h>
 
 /* PROTOTYPES ****************************************************************/
index 622c14e..853800e 100644 (file)
@@ -10,7 +10,6 @@
 #define _RTLTYPES_H
 
 /* DEPENDENCIES **************************************************************/
-#include "zwtypes.h"
 #include "excpt.h"
 
 /* EXPORTED DATA *************************************************************/
 #define RTL_RANGE_SHARED      0x01
 #define RTL_RANGE_CONFLICT    0x02
 
+/* Run-Time Library (RTL) Registry Constants */
+#define RTL_REGISTRY_ABSOLUTE       0
+#define RTL_REGISTRY_SERVICES       1
+#define RTL_REGISTRY_CONTROL        2
+#define RTL_REGISTRY_WINDOWS_NT     3
+#define RTL_REGISTRY_DEVICEMAP      4
+#define RTL_REGISTRY_USER           5
+#define RTL_REGISTRY_MAXIMUM        6
+#define RTL_REGISTRY_HANDLE         0x40000000
+#define RTL_REGISTRY_OPTIONAL       0x80000000
+#define RTL_QUERY_REGISTRY_SUBKEY   0x00000001
+#define RTL_QUERY_REGISTRY_TOPKEY   0x00000002
+#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
+#define RTL_QUERY_REGISTRY_NOVALUE  0x00000008
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
+#define RTL_QUERY_REGISTRY_DIRECT   0x00000020
+#define RTL_QUERY_REGISTRY_DELETE   0x00000040
+
+/* Version Constants */
+#define VER_MINORVERSION                0x0000001
+#define VER_MAJORVERSION                0x0000002
+#define VER_BUILDNUMBER                 0x0000004
+#define VER_PLATFORMID                  0x0000008
+#define VER_SERVICEPACKMINOR            0x0000010
+#define VER_SERVICEPACKMAJOR            0x0000020
+#define VER_SUITENAME                   0x0000040
+#define VER_PRODUCT_TYPE                0x0000080
+#define VER_PLATFORM_WIN32s             0
+#define VER_PLATFORM_WIN32_WINDOWS      1
+#define VER_PLATFORM_WIN32_NT           2
+#define VER_EQUAL                       1
+#define VER_GREATER                     2
+#define VER_GREATER_EQUAL               3
+#define VER_LESS                        4
+#define VER_LESS_EQUAL                  5
+#define VER_AND                         6
+#define VER_OR                          7
+#define VER_CONDITION_MASK              7
+#define VER_NUM_BITS_PER_CONDITION_MASK 3
+
+/* RTL String Hash Algorithms */
+#define HASH_STRING_ALGORITHM_DEFAULT   0
+#define HASH_STRING_ALGORITHM_X65599    1
+#define HASH_STRING_ALGORITHM_INVALID   0xffffffff
+
+#ifdef NTOS_MODE_USER
+/* List Macros */
+static __inline
+VOID
+InitializeListHead(
+    IN PLIST_ENTRY  ListHead)
+{
+    ListHead->Flink = ListHead->Blink = ListHead;
+}
+
+static __inline
+VOID
+InsertHeadList(
+    IN PLIST_ENTRY  ListHead,
+    IN PLIST_ENTRY  Entry)
+{
+    PLIST_ENTRY OldFlink;
+    OldFlink = ListHead->Flink;
+    Entry->Flink = OldFlink;
+    Entry->Blink = ListHead;
+    OldFlink->Blink = Entry;
+    ListHead->Flink = Entry;
+}
+
+static __inline
+VOID
+InsertTailList(
+    IN PLIST_ENTRY  ListHead,
+    IN PLIST_ENTRY  Entry)
+{
+    PLIST_ENTRY OldBlink;
+    OldBlink = ListHead->Blink;
+    Entry->Flink = ListHead;
+    Entry->Blink = OldBlink;
+    OldBlink->Flink = Entry;
+    ListHead->Blink = Entry;
+}
+
+#define IsListEmpty(ListHead) \
+    ((ListHead)->Flink == (ListHead))
+
+#define PopEntryList(ListHead) \
+    (ListHead)->Next; \
+    { \
+        PSINGLE_LIST_ENTRY _FirstEntry; \
+        _FirstEntry = (ListHead)->Next; \
+        if (_FirstEntry != NULL) \
+            (ListHead)->Next = _FirstEntry->Next; \
+    }
+
+#define PushEntryList(_ListHead, _Entry) \
+    (_Entry)->Next = (_ListHead)->Next; \
+    (_ListHead)->Next = (_Entry); \
+
+static __inline
+BOOLEAN
+RemoveEntryList(
+    IN PLIST_ENTRY  Entry)
+{
+    PLIST_ENTRY OldFlink;
+    PLIST_ENTRY OldBlink;
+
+    OldFlink = Entry->Flink;
+    OldBlink = Entry->Blink;
+    OldFlink->Blink = OldBlink;
+    OldBlink->Flink = OldFlink;
+    return (OldFlink == OldBlink);
+}
+
+static __inline
+PLIST_ENTRY
+RemoveHeadList(
+    IN PLIST_ENTRY  ListHead)
+{
+    PLIST_ENTRY Flink;
+    PLIST_ENTRY Entry;
+
+    Entry = ListHead->Flink;
+    Flink = Entry->Flink;
+    ListHead->Flink = Flink;
+    Flink->Blink = ListHead;
+    return Entry;
+}
+
+static __inline
+PLIST_ENTRY
+RemoveTailList(
+    IN PLIST_ENTRY  ListHead)
+{
+    PLIST_ENTRY Blink;
+    PLIST_ENTRY Entry;
+
+    Entry = ListHead->Blink;
+    Blink = Entry->Blink;
+    ListHead->Blink = Blink;
+    Blink->Flink = ListHead;
+    return Entry;
+}
+
+#define IsFirstEntry(ListHead, Entry) \
+    ((ListHead)->Flink == Entry)
+
+#define IsLastEntry(ListHead, Entry) \
+    ((ListHead)->Blink == Entry)
+
+/*
+ * Constant String Macro
+ */
+#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
+{ \
+    sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
+    sizeof(__SOURCE_STRING__), \
+    (__SOURCE_STRING__) \
+}
+#endif
+
 /* FIXME: Rename these */
 #define PDI_MODULES     0x01   /* The loaded modules of the process */
 #define PDI_BACKTRACE   0x02   /* The heap stack back traces */
 
 /* ENUMERATIONS **************************************************************/
 
+typedef enum _TABLE_SEARCH_RESULT
+{
+    TableEmptyTree,
+    TableFoundNode,
+    TableInsertAsLeft,
+    TableInsertAsRight
+} TABLE_SEARCH_RESULT;
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS
+{
+    GenericLessThan,
+    GenericGreaterThan,
+    GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
 typedef enum
 {
     INVALID_PATH = 0,
@@ -81,6 +256,10 @@ typedef enum
 } DOS_PATHNAME_TYPE;
 
 /* FUNCTION TYPES ************************************************************/
+struct _RTL_AVL_TABLE;
+struct _RTL_GENERIC_TABLE;
+struct _RTL_RANGE;
+
 typedef NTSTATUS
 (*PHEAP_ENUMERATION_ROUTINE)(
     IN PVOID HeapHandle,
@@ -109,18 +288,219 @@ typedef VOID
     PVOID Parameter
 );
 
+typedef NTSTATUS
+(NTAPI *PRTL_AVL_MATCH_FUNCTION)(
+    struct _RTL_AVL_TABLE *Table,
+    PVOID UserData,
+    PVOID MatchData
+);
+
+typedef RTL_GENERIC_COMPARE_RESULTS
+(NTAPI *PRTL_AVL_COMPARE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    PVOID FirstStruct,
+    PVOID SecondStruct
+);
+
+typedef RTL_GENERIC_COMPARE_RESULTS
+(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (
+    struct _RTL_GENERIC_TABLE *Table,
+    PVOID FirstStruct,
+    PVOID SecondStruct
+);
+
+typedef PVOID
+(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
+    struct _RTL_GENERIC_TABLE *Table,
+    LONG ByteSize
+);
+
+typedef VOID
+(NTAPI *PRTL_GENERIC_FREE_ROUTINE) (
+    struct _RTL_GENERIC_TABLE *Table,
+    PVOID Buffer
+);
+
+typedef VOID
+(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    LONG ByteSize
+);
+
+typedef VOID
+(NTAPI *PRTL_AVL_FREE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    PVOID Buffer
+);
+
+typedef NTSTATUS
+(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
+    IN PWSTR ValueName,
+    IN ULONG ValueType,
+    IN PVOID ValueData,
+    IN ULONG ValueLength,
+    IN PVOID Context,
+    IN PVOID EntryContext
+);
+
+typedef NTSTATUS
+(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
+    IN PVOID Base,
+    IN OUT PVOID *CommitAddress,
+    IN OUT PSIZE_T CommitSize
+);
+
+typedef BOOLEAN
+(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
+    PVOID Context,
+    struct _RTL_RANGE *Range
+);
 /* TYPES *********************************************************************/
 
-typedef unsigned short RTL_ATOM;
-typedef unsigned short *PRTL_ATOM;
+#ifdef NTOS_MODE_USER
+typedef OSVERSIONINFOW RTL_OSVERSIONINFOW;
+typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;
+typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;
+typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;
 
-/* Once again, we don't want to force NTIFS for something like this */
-#if !defined(_NTIFS_) && !defined(NTOS_MODE_USER)
-typedef PVOID PRTL_HEAP_PARAMETERS;
-#endif
+typedef struct _RTL_HEAP_PARAMETERS
+{
+    ULONG Length;
+    SIZE_T SegmentReserve;
+    SIZE_T SegmentCommit;
+    SIZE_T DeCommitFreeBlockThreshold;
+    SIZE_T DeCommitTotalFreeThreshold;
+    SIZE_T MaximumAllocationSize;
+    SIZE_T VirtualMemoryThreshold;
+    SIZE_T InitialCommit;
+    SIZE_T InitialReserve;
+    PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
+    SIZE_T Reserved[2];
+} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
+
+typedef struct _RTL_BITMAP
+{
+    ULONG SizeOfBitMap;
+    PULONG Buffer;
+} RTL_BITMAP, *PRTL_BITMAP;
+
+typedef struct _RTL_BITMAP_RUN
+{
+    ULONG StartingIndex;
+    ULONG NumberOfBits;
+} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
+
+typedef struct _COMPRESSED_DATA_INFO
+{
+    USHORT  CompressionFormatAndEngine;
+    UCHAR   CompressionUnitShift;
+    UCHAR   ChunkShift;
+    UCHAR   ClusterShift;
+    UCHAR   Reserved;
+    USHORT  NumberOfChunks;
+    ULONG   CompressedChunkSizes[ANYSIZE_ARRAY];
+} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
+
+typedef struct _GENERATE_NAME_CONTEXT
+{
+    USHORT  Checksum;
+    BOOLEAN CheckSumInserted;
+    UCHAR   NameLength;
+    WCHAR   NameBuffer[8];
+    ULONG   ExtensionLength;
+    WCHAR   ExtensionBuffer[4];
+    ULONG   LastIndexValue;
+} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
+
+typedef struct _RTL_SPLAY_LINKS
+{
+    struct _RTL_SPLAY_LINKS *Parent;
+    struct _RTL_SPLAY_LINKS *LeftChild;
+    struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
 
 typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
 typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
+
+typedef struct _RTL_GENERIC_TABLE
+{
+    PRTL_SPLAY_LINKS TableRoot;
+    LIST_ENTRY InsertOrderList;
+    PLIST_ENTRY OrderedPointer;
+    ULONG WhichOrderedElement;
+    ULONG NumberGenericTableElements;
+    PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
+    PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
+    PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
+    PVOID TableContext;
+} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
+
+typedef struct _RTL_BALANCED_LINKS
+{
+    struct _RTL_BALANCED_LINKS *Parent;
+    struct _RTL_BALANCED_LINKS *LeftChild;
+    struct _RTL_BALANCED_LINKS *RightChild;
+    CHAR Balance;
+    UCHAR Reserved[3];
+} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
+
+typedef struct _RTL_AVL_TABLE
+{
+    RTL_BALANCED_LINKS BalancedRoot;
+    PVOID OrderedPointer;
+    ULONG WhichOrderedElement;
+    ULONG NumberGenericTableElements;
+    ULONG DepthOfTree;
+    PRTL_BALANCED_LINKS RestartKey;
+    ULONG DeleteCount;
+    PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
+    PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
+    PRTL_AVL_FREE_ROUTINE FreeRoutine;
+    PVOID TableContext;
+} RTL_AVL_TABLE, *PRTL_AVL_TABLE;
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE
+{
+    PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
+    ULONG Flags;
+    PWSTR Name;
+    PVOID EntryContext;
+    ULONG DefaultType;
+    PVOID DefaultData;
+    ULONG DefaultLength;
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+typedef struct _UNICODE_PREFIX_TABLE_ENTRY
+{
+    CSHORT NodeTypeCode;
+    CSHORT NameLength;
+    struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
+    struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
+    RTL_SPLAY_LINKS Links;
+    PUNICODE_STRING Prefix;
+} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;
+
+typedef struct _UNICODE_PREFIX_TABLE
+{
+    CSHORT NodeTypeCode;
+    CSHORT NameLength;
+    PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
+    PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
+} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
+
+typedef struct _TIME_FIELDS
+{
+    CSHORT Year;
+    CSHORT Month;
+    CSHORT Day;
+    CSHORT Hour;
+    CSHORT Minute;
+    CSHORT Second;
+    CSHORT Milliseconds;
+    CSHORT Weekday;
+} TIME_FIELDS, *PTIME_FIELDS;
+#endif
+
 typedef struct _ACE
 {
     ACE_HEADER Header;
@@ -269,12 +649,6 @@ typedef struct _RTL_RANGE
     UCHAR Flags;  /* RTL_RANGE_... flags */
 } RTL_RANGE, *PRTL_RANGE;
 
-typedef BOOLEAN
-(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
-    PVOID Context,
-    PRTL_RANGE Range
-);
-
 typedef struct _RTL_RESOURCE
 {
     RTL_CRITICAL_SECTION Lock;
@@ -381,6 +755,10 @@ typedef struct _RTL_ATOM_TABLE_ENTRY
     WCHAR Name[1];
 } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
 
+#ifdef NTOS_MODE_USER
+typedef RTL_CRITICAL_SECTION FAST_MUTEX;
+typedef RTL_HANDLE_TABLE HANDLE_TABLE, *PHANDLE_TABLE;
+#endif
 typedef struct _RTL_ATOM_TABLE
 {
     ULONG Signature;
index 74fadce..c78e663 100644 (file)
@@ -8,9 +8,6 @@
 #define _UMFUNCS_H
 
 /* DEPENDENCIES **************************************************************/
-#include "ldrtypes.h"
-#include "lpctypes.h"
-#include "rtltypes.h"
 
 /* PROTOTYPES ****************************************************************/
 
@@ -28,6 +25,7 @@ CsrClientConnectToServer(
     PBOOLEAN ServerToServerCall
 );
 
+struct _CSR_API_MESSAGE;
 NTSTATUS
 STDCALL
 CsrClientCallServer(
index 2e2a627..7210563 100644 (file)
@@ -7,8 +7,9 @@
  *                  Created 06/10/04
  */
 
-#ifndef _UMTYPES_H
-#define _UMTYPES_H
+#if !defined(_NTDEF_) && !defined(_NTDEF_H)
+#define _NTDEF_
+#define _NTDEF_H
 
 /* DEPENDENCIES **************************************************************/
 #include <winioctl.h>
@@ -16,8 +17,6 @@
 #include <ntnls.h>
 #define STATIC static
 
-/* EXPORTED DATA *************************************************************/
-
 /* CONSTANTS *****************************************************************/
 
 /* NTAPI/NTOSAPI Define */
 #define FASTCALL __fastcall
 #define STDCALL __stdcall
 
-/* Definitions for Object Creation -- winternl.h */
-#define OBJ_INHERIT 2L
-#define OBJ_PERMANENT 16L
-#define OBJ_EXCLUSIVE 32L
-#define OBJ_CASE_INSENSITIVE 64L
-#define OBJ_OPENIF 128L
-#define OBJ_OPENLINK 256L
-#define OBJ_VALID_ATTRIBUTES 498L
-#define InitializeObjectAttributes(p,n,a,r,s) { \
-  (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
-  (p)->RootDirectory = (r); \
-  (p)->Attributes = (a); \
-  (p)->ObjectName = (n); \
-  (p)->SecurityDescriptor = (s); \
-  (p)->SecurityQualityOfService = NULL; \
-}
-
 /* 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)
 
-/* Object Access Rights */
-#define DIRECTORY_QUERY (0x0001)
-#define DIRECTORY_TRAVERSE (0x0002)
-#define DIRECTORY_CREATE_OBJECT (0x0004)
-#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
-#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
-#define EVENT_QUERY_STATE (0x0001)
-#define SEMAPHORE_QUERY_STATE (0x0001)
-#define SYMBOLIC_LINK_QUERY 0x0001
-#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
-
-/* Duplication Flags */
-#define DUPLICATE_SAME_ATTRIBUTES      0x00000004
-
-/* I/O Control Codes for communicating with Mailslots */
-#define FSCTL_MAILSLOT_PEEK             \
-    CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
-
-/* I/O Control Codes for communicating with Pipes */
-#define FSCTL_PIPE_ASSIGN_EVENT         \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_DISCONNECT           \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_LISTEN               \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_PEEK                 \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
-#define FSCTL_PIPE_QUERY_EVENT          \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_TRANSCEIVE           \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
-#define FSCTL_PIPE_WAIT                 \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_IMPERSONATE          \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_SET_CLIENT_PROCESS   \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define FSCTL_PIPE_INTERNAL_READ        \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
-#define FSCTL_PIPE_INTERNAL_WRITE       \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
-#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
-#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
-    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
-
-/* I/O Control Codes for Communicating with Tapes */            
-#define IOCTL_TAPE_ERASE                \
-    CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_TAPE_PREPARE              \
-    CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_WRITE_MARKS          \
-    CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_TAPE_GET_POSITION         \
-    CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_SET_POSITION         \
-    CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_GET_DRIVE_PARAMS     \
-    CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_SET_DRIVE_PARAMS     \
-    CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_TAPE_GET_MEDIA_PARAMS     \
-    CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_SET_MEDIA_PARAMS     \
-    CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_GET_STATUS           \
-    CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_TAPE_CREATE_PARTITION     \
-    CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-
-/* Macros for current Process/Thread built-in 'special' ID */
-#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
-#define ZwCurrentProcess() NtCurrentProcess()
-#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
-#define ZwCurrentThread() NtCurrentThread()
-
-/* Kernel Shared Data Constants */
-#define PROCESSOR_FEATURE_MAX 64
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)
-
-/* Paging Values on x86 */
-#define PAGE_SIZE                         0x1000
-#define PAGE_SHIFT                        12L
-
-/* Run-Time Library (RTL) Registry Constants */
-#define RTL_REGISTRY_ABSOLUTE       0
-#define RTL_REGISTRY_SERVICES       1
-#define RTL_REGISTRY_CONTROL        2
-#define RTL_REGISTRY_WINDOWS_NT     3
-#define RTL_REGISTRY_DEVICEMAP      4
-#define RTL_REGISTRY_USER           5
-#define RTL_REGISTRY_MAXIMUM        6
-#define RTL_REGISTRY_HANDLE         0x40000000
-#define RTL_REGISTRY_OPTIONAL       0x80000000
-#define RTL_QUERY_REGISTRY_SUBKEY   0x00000001
-#define RTL_QUERY_REGISTRY_TOPKEY   0x00000002
-#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
-#define RTL_QUERY_REGISTRY_NOVALUE  0x00000008
-#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
-#define RTL_QUERY_REGISTRY_DIRECT   0x00000020
-#define RTL_QUERY_REGISTRY_DELETE   0x00000040
-
-/* File Result Flags */
-#define FILE_SUPERSEDED                   0x00000000
-#define FILE_OPENED                       0x00000001
-#define FILE_CREATED                      0x00000002
-#define FILE_OVERWRITTEN                  0x00000003
-#define FILE_EXISTS                       0x00000004
-#define FILE_DOES_NOT_EXIST               0x00000005
-
-/* Pipe Flags */
-#define FILE_PIPE_BYTE_STREAM_MODE      0x00000000
-#define FILE_PIPE_MESSAGE_MODE          0x00000001
-#define FILE_PIPE_QUEUE_OPERATION       0x00000000
-#define FILE_PIPE_COMPLETE_OPERATION    0x00000001
-#define FILE_PIPE_INBOUND               0x00000000
-#define FILE_PIPE_OUTBOUND              0x00000001
-#define FILE_PIPE_FULL_DUPLEX           0x00000002
-#define FILE_PIPE_CLIENT_END            0x00000000
-#define FILE_PIPE_SERVER_END            0x00000001
-
-/* File Attributes */
-#define FILE_ATTRIBUTE_VALID_FLAGS             0x00007fb7
-#define FILE_ATTRIBUTE_VALID_SET_FLAGS         0x000031a7
-
-/* File Flags */
-#define FILE_SUPERSEDE                 0x00000000
-#define FILE_OPEN                      0x00000001
-#define FILE_CREATE                    0x00000002
-#define FILE_OPEN_IF                   0x00000003
-#define FILE_OVERWRITE                 0x00000004
-#define FILE_OVERWRITE_IF              0x00000005
-#define FILE_MAXIMUM_DISPOSITION       0x00000005
-
-/* File Types */
-#define FILE_DIRECTORY_FILE            0x00000001
-#define FILE_WRITE_THROUGH             0x00000002
-#define FILE_SEQUENTIAL_ONLY           0x00000004
-#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
-#define FILE_SYNCHRONOUS_IO_ALERT      0x00000010
-#define FILE_SYNCHRONOUS_IO_NONALERT   0x00000020
-#define FILE_NON_DIRECTORY_FILE                0x00000040
-#define FILE_CREATE_TREE_CONNECTION    0x00000080
-#define FILE_COMPLETE_IF_OPLOCKED      0x00000100
-#define FILE_NO_EA_KNOWLEDGE           0x00000200
-#define FILE_OPEN_FOR_RECOVERY         0x00000400
-#define FILE_RANDOM_ACCESS             0x00000800
-#define FILE_DELETE_ON_CLOSE           0x00001000
-#define FILE_OPEN_BY_FILE_ID           0x00002000
-#define FILE_OPEN_FOR_BACKUP_INTENT    0x00004000
-#define FILE_NO_COMPRESSION            0x00008000
-#define FILE_RESERVE_OPFILTER          0x00100000
-#define FILE_OPEN_REPARSE_POINT                0x00200000
-#define FILE_OPEN_NO_RECALL            0x00400000
-#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
-
-/* Device Charactertics */
-#define FILE_REMOVABLE_MEDIA            0x00000001
-#define FILE_REMOTE_DEVICE              0x00000010
-
-/* Version Constants */
-#define VER_MINORVERSION                0x0000001
-#define VER_MAJORVERSION                0x0000002
-#define VER_BUILDNUMBER                 0x0000004
-#define VER_PLATFORMID                  0x0000008
-#define VER_SERVICEPACKMINOR            0x0000010
-#define VER_SERVICEPACKMAJOR            0x0000020
-#define VER_SUITENAME                   0x0000040
-#define VER_PRODUCT_TYPE                0x0000080
-#define VER_PLATFORM_WIN32s             0
-#define VER_PLATFORM_WIN32_WINDOWS      1
-#define VER_PLATFORM_WIN32_NT           2
-#define VER_EQUAL                       1
-#define VER_GREATER                     2
-#define VER_GREATER_EQUAL               3
-#define VER_LESS                        4
-#define VER_LESS_EQUAL                  5
-#define VER_AND                         6
-#define VER_OR                          7
-#define VER_CONDITION_MASK              7
-#define VER_NUM_BITS_PER_CONDITION_MASK 3
-
-/* RTL String Hash Algorithms */
-#define HASH_STRING_ALGORITHM_DEFAULT   0
-#define HASH_STRING_ALGORITHM_X65599    1
-#define HASH_STRING_ALGORITHM_INVALID   0xffffffff
-
-/* List Macros */
-static __inline
-VOID
-InitializeListHead(
-    IN PLIST_ENTRY  ListHead)
-{
-    ListHead->Flink = ListHead->Blink = ListHead;
-}
-
-static __inline
-VOID
-InsertHeadList(
-    IN PLIST_ENTRY  ListHead,
-    IN PLIST_ENTRY  Entry)
-{
-    PLIST_ENTRY OldFlink;
-    OldFlink = ListHead->Flink;
-    Entry->Flink = OldFlink;
-    Entry->Blink = ListHead;
-    OldFlink->Blink = Entry;
-    ListHead->Flink = Entry;
-}
-
-static __inline
-VOID
-InsertTailList(
-    IN PLIST_ENTRY  ListHead,
-    IN PLIST_ENTRY  Entry)
-{
-    PLIST_ENTRY OldBlink;
-    OldBlink = ListHead->Blink;
-    Entry->Flink = ListHead;
-    Entry->Blink = OldBlink;
-    OldBlink->Flink = Entry;
-    ListHead->Blink = Entry;
-}
-
-#define IsListEmpty(ListHead) \
-    ((ListHead)->Flink == (ListHead))
-
-#define PopEntryList(ListHead) \
-    (ListHead)->Next; \
-    { \
-        PSINGLE_LIST_ENTRY _FirstEntry; \
-        _FirstEntry = (ListHead)->Next; \
-        if (_FirstEntry != NULL) \
-            (ListHead)->Next = _FirstEntry->Next; \
-    }
-
-#define PushEntryList(_ListHead, _Entry) \
-    (_Entry)->Next = (_ListHead)->Next; \
-    (_ListHead)->Next = (_Entry); \
-
-static __inline
-BOOLEAN
-RemoveEntryList(
-    IN PLIST_ENTRY  Entry)
-{
-    PLIST_ENTRY OldFlink;
-    PLIST_ENTRY OldBlink;
-
-    OldFlink = Entry->Flink;
-    OldBlink = Entry->Blink;
-    OldFlink->Blink = OldBlink;
-    OldBlink->Flink = OldFlink;
-    return (OldFlink == OldBlink);
-}
-
-static __inline
-PLIST_ENTRY
-RemoveHeadList(
-    IN PLIST_ENTRY  ListHead)
-{
-    PLIST_ENTRY Flink;
-    PLIST_ENTRY Entry;
-
-    Entry = ListHead->Flink;
-    Flink = Entry->Flink;
-    ListHead->Flink = Flink;
-    Flink->Blink = ListHead;
-    return Entry;
-}
-
-static __inline
-PLIST_ENTRY
-RemoveTailList(
-    IN PLIST_ENTRY  ListHead)
-{
-    PLIST_ENTRY Blink;
-    PLIST_ENTRY Entry;
-
-    Entry = ListHead->Blink;
-    Blink = Entry->Blink;
-    ListHead->Blink = Blink;
-    Blink->Flink = ListHead;
-    return Entry;
-}
-
-#define IsFirstEntry(ListHead, Entry) \
-    ((ListHead)->Flink == Entry)
-
-#define IsLastEntry(ListHead, Entry) \
-    ((ListHead)->Blink == Entry)
-
-/*
- * Constant String Macro
- */
-#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
-{ \
- sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
- sizeof(__SOURCE_STRING__), \
- (__SOURCE_STRING__) \
-}
-
-/* ENUMERATIONS **************************************************************/
-
-/* Kernel Shared Data Values */
-typedef enum _NT_PRODUCT_TYPE
-{
-    NtProductWinNt = 1,
-    NtProductLanManNt,
-    NtProductServer
-} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
-
-typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
-{
-    StandardDesign,
-    NEC98x86,
-    EndAlternatives
-} ALTERNATIVE_ARCHITECTURE_TYPE;
-
-/* Run-Time Library (RTL) Enumerations */
-typedef enum _TABLE_SEARCH_RESULT
-{
-    TableEmptyTree,
-    TableFoundNode,
-    TableInsertAsLeft,
-    TableInsertAsRight
-} TABLE_SEARCH_RESULT;
-
-typedef enum _RTL_GENERIC_COMPARE_RESULTS
-{
-    GenericLessThan,
-    GenericGreaterThan,
-    GenericEqual
-} RTL_GENERIC_COMPARE_RESULTS;
-
-/* Kernel or Native Enumerations used by Native API */
-typedef enum _SECTION_INHERIT
-{
-    ViewShare = 1,
-    ViewUnmap = 2
-} SECTION_INHERIT;
-
-typedef enum _POOL_TYPE
-{
-    NonPagedPool,
-    PagedPool,
-    NonPagedPoolMustSucceed,
-    DontUseThisType,
-    NonPagedPoolCacheAligned,
-    PagedPoolCacheAligned,
-    NonPagedPoolCacheAlignedMustS,
-    MaxPoolType,
-    NonPagedPoolSession = 32,
-    PagedPoolSession,
-    NonPagedPoolMustSucceedSession,
-    DontUseThisTypeSession,
-    NonPagedPoolCacheAlignedSession,
-    PagedPoolCacheAlignedSession,
-    NonPagedPoolCacheAlignedMustSSession
-} POOL_TYPE;
-
-typedef enum _EVENT_TYPE
-{
-    NotificationEvent,
-    SynchronizationEvent
-} EVENT_TYPE;
-
-typedef enum _TIMER_TYPE
-{
-    NotificationTimer,
-    SynchronizationTimer
-} TIMER_TYPE;
-
-typedef enum _WAIT_TYPE
-{
-    WaitAll,
-    WaitAny
-} WAIT_TYPE;
-
-typedef enum _INTERFACE_TYPE
-{
-    InterfaceTypeUndefined = -1,
-    Internal,
-    Isa,
-    Eisa,
-    MicroChannel,
-    TurboChannel,
-    PCIBus,
-    VMEBus,
-    NuBus,
-    PCMCIABus,
-    CBus,
-    MPIBus,
-    MPSABus,
-    ProcessorInternal,
-    InternalPowerBus,
-    PNPISABus,
-    PNPBus,
-    MaximumInterfaceType
-}INTERFACE_TYPE, *PINTERFACE_TYPE;
-
-typedef enum _MODE
-{
-    KernelMode,
-    UserMode,
-    MaximumMode
-} MODE;
-
-typedef enum _KWAIT_REASON
-{
-    Executive,
-    FreePage,
-    PageIn,
-    PoolAllocation,
-    DelayExecution,
-    Suspended,
-    UserRequest,
-    WrExecutive,
-    WrFreePage,
-    WrPageIn,
-    WrPoolAllocation,
-    WrDelayExecution,
-    WrSuspended,
-    WrUserRequest,
-    WrEventPair,
-    WrQueue,
-    WrLpcReceive,
-    WrLpcReply,
-    WrVirtualMemory,
-    WrPageOut,
-    WrRendezvous,
-    Spare2,
-    WrGuardedMutex,
-    Spare4,
-    Spare5,
-    Spare6,
-    WrKernel,
-    WrResource,
-    WrPushLock,
-    WrMutex,
-    WrQuantumEnd,
-    WrDispatchInt,
-    WrPreempted,
-    WrYieldExecution,
-    MaximumWaitReason
-} KWAIT_REASON;
-
-typedef enum _KPROFILE_SOURCE
-{
-    ProfileTime,
-    ProfileAlignmentFixup,
-    ProfileTotalIssues,
-    ProfilePipelineDry,
-    ProfileLoadInstructions,
-    ProfilePipelineFrozen,
-    ProfileBranchInstructions,
-    ProfileTotalNonissues,
-    ProfileDcacheMisses,
-    ProfileIcacheMisses,
-    ProfileCacheMisses,
-    ProfileBranchMispredictions,
-    ProfileStoreInstructions,
-    ProfileFpInstructions,
-    ProfileIntegerInstructions,
-    Profile2Issue,
-    Profile3Issue,
-    Profile4Issue,
-    ProfileSpecialInstructions,
-    ProfileTotalCycles,
-    ProfileIcacheIssues,
-    ProfileDcacheAccesses,
-    ProfileMemoryBarrierCycles,
-    ProfileLoadLinkedIssues,
-    ProfileMaximum
-} KPROFILE_SOURCE;
-
-/**** Information Classes ****/
-
-/*
- * File
- */
-typedef enum _FILE_INFORMATION_CLASS
-{
-    FileDirectoryInformation = 1,
-    FileFullDirectoryInformation,
-    FileBothDirectoryInformation,
-    FileBasicInformation,
-    FileStandardInformation,
-    FileInternalInformation,
-    FileEaInformation,
-    FileAccessInformation,
-    FileNameInformation,
-    FileRenameInformation,
-    FileLinkInformation,
-    FileNamesInformation,
-    FileDispositionInformation,
-    FilePositionInformation,
-    FileFullEaInformation,
-    FileModeInformation,
-    FileAlignmentInformation,
-    FileAllInformation,
-    FileAllocationInformation,
-    FileEndOfFileInformation,
-    FileAlternateNameInformation,
-    FileStreamInformation,
-    FilePipeInformation,
-    FilePipeLocalInformation,
-    FilePipeRemoteInformation,
-    FileMailslotQueryInformation,
-    FileMailslotSetInformation,
-    FileCompressionInformation,
-    FileObjectIdInformation,
-    FileCompletionInformation,
-    FileMoveClusterInformation,
-    FileQuotaInformation,
-    FileReparsePointInformation,
-    FileNetworkOpenInformation,
-    FileAttributeTagInformation,
-    FileTrackingInformation,
-    FileIdBothDirectoryInformation,
-    FileIdFullDirectoryInformation,
-    FileValidDataLengthInformation,
-    FileShortNameInformation,
-    FileMaximumInformation
-} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
-
-/*
- * File System
- */
-typedef enum _FSINFOCLASS
-{
-    FileFsVolumeInformation = 1,
-    FileFsLabelInformation,
-    FileFsSizeInformation,
-    FileFsDeviceInformation,
-    FileFsAttributeInformation,
-    FileFsControlInformation,
-    FileFsFullSizeInformation,
-    FileFsObjectIdInformation,
-    FileFsDriverPathInformation,
-    FileFsMaximumInformation
-} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
-
-/*
- * Registry Key
- */
-typedef enum _KEY_INFORMATION_CLASS
-{
-    KeyBasicInformation,
-    KeyNodeInformation,
-    KeyFullInformation,
-    KeyNameInformation,
-    KeyCachedInformation,
-    KeyFlagsInformation
-} KEY_INFORMATION_CLASS;
-
-/*
- * Registry Key Value
- */
-typedef enum _KEY_VALUE_INFORMATION_CLASS
-{
-    KeyValueBasicInformation,
-    KeyValueFullInformation,
-    KeyValuePartialInformation,
-    KeyValueFullInformationAlign64,
-    KeyValuePartialInformationAlign64
-} KEY_VALUE_INFORMATION_CLASS;
-
-/*
- * Registry Key Set
- */
-typedef enum _KEY_SET_INFORMATION_CLASS
-{
-    KeyWriteTimeInformation,
-    KeyUserFlagsInformation,
-    MaxKeySetInfoClass
-} KEY_SET_INFORMATION_CLASS;
-
-/*
- * Process
- */
-typedef enum _PROCESSINFOCLASS
-{
-    ProcessBasicInformation,
-    ProcessQuotaLimits,
-    ProcessIoCounters,
-    ProcessVmCounters,
-    ProcessTimes,
-    ProcessBasePriority,
-    ProcessRaisePriority,
-    ProcessDebugPort,
-    ProcessExceptionPort,
-    ProcessAccessToken,
-    ProcessLdtInformation,
-    ProcessLdtSize,
-    ProcessDefaultHardErrorMode,
-    ProcessIoPortHandlers,
-    ProcessPooledUsageAndLimits,
-    ProcessWorkingSetWatch,
-    ProcessUserModeIOPL,
-    ProcessEnableAlignmentFaultFixup,
-    ProcessPriorityClass,
-    ProcessWx86Information,
-    ProcessHandleCount,
-    ProcessAffinityMask,
-    ProcessPriorityBoost,
-    ProcessDeviceMap,
-    ProcessSessionInformation,
-    ProcessForegroundInformation,
-    ProcessWow64Information,
-    ProcessImageFileName,
-    ProcessLUIDDeviceMapsEnabled,
-    ProcessBreakOnTermination,
-    ProcessDebugObjectHandle,
-    ProcessDebugFlags,
-    ProcessHandleTracing,
-    MaxProcessInfoClass
-} PROCESSINFOCLASS;
-
-/*
- * Thread
- */
-typedef enum _THREADINFOCLASS
-{
-    ThreadBasicInformation,
-    ThreadTimes,
-    ThreadPriority,
-    ThreadBasePriority,
-    ThreadAffinityMask,
-    ThreadImpersonationToken,
-    ThreadDescriptorTableEntry,
-    ThreadEnableAlignmentFaultFixup,
-    ThreadEventPair_Reusable,
-    ThreadQuerySetWin32StartAddress,
-    ThreadZeroTlsCell,
-    ThreadPerformanceCount,
-    ThreadAmILastThread,
-    ThreadIdealProcessor,
-    ThreadPriorityBoost,
-    ThreadSetTlsArrayAddress,
-    ThreadIsIoPending,
-    ThreadHideFromDebugger,
-    ThreadBreakOnTermination,
-    MaxThreadInfoClass
-} THREADINFOCLASS;
-
 /* TYPES *********************************************************************/
 
 /* Basic Types that aren't defined in User-Mode Headers */
@@ -703,19 +38,7 @@ typedef CONST char *PCSZ;
 typedef short CSHORT;
 typedef CSHORT *PCSHORT;
 typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
-
-/* Kernel Types used by Native APIs */
-typedef LONG KPRIORITY;
 typedef LONG NTSTATUS, *PNTSTATUS;
-typedef UCHAR KIRQL, *PKIRQL;
-typedef ULONG KAFFINITY, *PKAFFINITY;
-typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
-typedef struct _PEB *PPEB;
-typedef ULONG KPROCESSOR_MODE;
-typedef struct _OBJECT_TYPE *POBJECT_TYPE;
-struct _ETHREAD;
-struct _CSR_API_MESSAGE;
-typedef ULONG EXECUTION_STATE;
 
 /* Basic NT Types */
 #if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
@@ -723,7 +46,7 @@ typedef struct _UNICODE_STRING
 {
     USHORT Length;
     USHORT MaximumLength;
-    PWSTR  Buffer;
+    PWSTR Buffer;
 } UNICODE_STRING, *PUNICODE_STRING;
 typedef const UNICODE_STRING* PCUNICODE_STRING;
 
@@ -731,7 +54,7 @@ typedef struct _STRING
 {
     USHORT Length;
     USHORT MaximumLength;
-    PCHAR  Buffer;
+    PCHAR Buffer;
 } STRING, *PSTRING;
 
 typedef struct _OBJECT_ATTRIBUTES
@@ -750,702 +73,4 @@ typedef PSTRING PANSI_STRING;
 typedef STRING OEM_STRING;
 typedef PSTRING POEM_STRING;
 
-typedef struct _IO_STATUS_BLOCK
-{
-    union
-    {
-        NTSTATUS  Status;
-        PVOID  Pointer;
-    };
-    ULONG_PTR  Information;
-} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
-
-typedef VOID
-(NTAPI *PIO_APC_ROUTINE)(
-    IN PVOID ApcContext,
-    IN PIO_STATUS_BLOCK IoStatusBlock,
-    IN ULONG Reserved);
-
-typedef VOID
-(NTAPI *PKNORMAL_ROUTINE)(
-    IN PVOID  NormalContext,
-    IN PVOID  SystemArgument1,
-    IN PVOID  SystemArgument2);
-
-typedef VOID
-(NTAPI *PTIMER_APC_ROUTINE)(
-    IN PVOID  TimerContext,
-    IN ULONG  TimerLowValue,
-    IN LONG  TimerHighValue);
-
-/* Kernel Types which are returned or used by Native API */
-typedef struct _OBJECT_NAME_INFORMATION
-{
-    UNICODE_STRING Name;
-} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
-
-typedef struct _IO_ERROR_LOG_PACKET
-{
-    UCHAR MajorFunctionCode;
-    UCHAR RetryCount;
-    USHORT DumpDataSize;
-    USHORT NumberOfStrings;
-    USHORT StringOffset;
-    USHORT EventCategory;
-    NTSTATUS ErrorCode;
-    ULONG UniqueErrorValue;
-    NTSTATUS FinalStatus;
-    ULONG SequenceNumber;
-    ULONG IoControlCode;
-    LARGE_INTEGER DeviceOffset;
-    ULONG DumpData[1];
-}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
-
-typedef struct _IO_ERROR_LOG_MESSAGE
-{
-    USHORT Type;
-    USHORT Size;
-    USHORT DriverNameLength;
-    LARGE_INTEGER TimeStamp;
-    ULONG DriverNameOffset;
-    IO_ERROR_LOG_PACKET EntryData;
-} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
-
-typedef struct _CLIENT_ID
-{
-    HANDLE  UniqueProcess;
-    HANDLE  UniqueThread;
-} CLIENT_ID, *PCLIENT_ID;
-
-typedef struct _KSYSTEM_TIME
-{
-    ULONG LowPart;
-    LONG High1Time;
-    LONG High2Time;
-} KSYSTEM_TIME, *PKSYSTEM_TIME;
-
-typedef struct _TIME_FIELDS
-{
-    CSHORT Year;
-    CSHORT Month;
-    CSHORT Day;
-    CSHORT Hour;
-    CSHORT Minute;
-    CSHORT Second;
-    CSHORT Milliseconds;
-    CSHORT Weekday;
-} TIME_FIELDS, *PTIME_FIELDS;
-
-typedef struct _VM_COUNTERS
-{
-    SIZE_T PeakVirtualSize;
-    SIZE_T VirtualSize;
-    ULONG PageFaultCount;
-    SIZE_T PeakWorkingSetSize;
-    SIZE_T WorkingSetSize;
-    SIZE_T QuotaPeakPagedPoolUsage;
-    SIZE_T QuotaPagedPoolUsage;
-    SIZE_T QuotaPeakNonPagedPoolUsage;
-    SIZE_T QuotaNonPagedPoolUsage;
-    SIZE_T PagefileUsage;
-    SIZE_T PeakPagefileUsage;
-} VM_COUNTERS, *PVM_COUNTERS;
-
-typedef struct _VM_COUNTERS_EX
-{
-    SIZE_T PeakVirtualSize;
-    SIZE_T VirtualSize;
-    ULONG PageFaultCount;
-    SIZE_T PeakWorkingSetSize;
-    SIZE_T WorkingSetSize;
-    SIZE_T QuotaPeakPagedPoolUsage;
-    SIZE_T QuotaPagedPoolUsage;
-    SIZE_T QuotaPeakNonPagedPoolUsage;
-    SIZE_T QuotaNonPagedPoolUsage;
-    SIZE_T PagefileUsage;
-    SIZE_T PeakPagefileUsage;
-    SIZE_T PrivateUsage;
-} VM_COUNTERS_EX, *PVM_COUNTERS_EX;
-
-/**** Information Types ****/
-
-/*
- * Registry Key Set
- */
-
-/* Class 0 */
-typedef struct _KEY_WRITE_TIME_INFORMATION
-{
-    LARGE_INTEGER LastWriteTime;
-} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
-
-/* Class 1 */
-typedef struct _KEY_USER_FLAGS_INFORMATION
-{
-    ULONG UserFlags;
-} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;
-
-typedef struct _KEY_FULL_INFORMATION
-{
-    LARGE_INTEGER LastWriteTime;
-    ULONG TitleIndex;
-    ULONG ClassOffset;
-    ULONG ClassLength;
-    ULONG SubKeys;
-    ULONG MaxNameLen;
-    ULONG MaxClassLen;
-    ULONG Values;
-    ULONG MaxValueNameLen;
-    ULONG MaxValueDataLen;
-    WCHAR Class[1];
-} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
-
-typedef struct _KEY_NODE_INFORMATION
-{
-    LARGE_INTEGER LastWriteTime;
-    ULONG TitleIndex;
-    ULONG ClassOffset;
-    ULONG ClassLength;
-    ULONG NameLength;
-    WCHAR Name[1];
-} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
-
-/*
- * File
- */
-
-/* Class 1 */
-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;
-
-/* Class 2 */
-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_NETWORK_OPEN_INFORMATION
-{
-    LARGE_INTEGER CreationTime;
-    LARGE_INTEGER LastAccessTime;
-    LARGE_INTEGER LastWriteTime;
-    LARGE_INTEGER ChangeTime;
-    LARGE_INTEGER AllocationSize;
-    LARGE_INTEGER EndOfFile;
-    ULONG FileAttributes;
-} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
-
-typedef struct _FILE_EA_INFORMATION
-{
-    ULONG EaSize;
-} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
-
-typedef struct _FILE_COMPRESSION_INFORMATION
-{
-    LARGE_INTEGER   CompressedFileSize;
-    USHORT          CompressionFormat;
-    UCHAR           CompressionUnitShift;
-    UCHAR           ChunkShift;
-    UCHAR           ClusterShift;
-    UCHAR           Reserved[3];
-} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
-
-typedef struct _FILE_POSITION_INFORMATION
-{
-  LARGE_INTEGER  CurrentByteOffset;
-} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
-
-typedef struct _FILE_DISPOSITION_INFORMATION
-{
-    BOOLEAN  DeleteFile;
-} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
-
-typedef struct _FILE_FULL_EA_INFORMATION
-{
-    ULONG NextEntryOffset;
-    UCHAR Flags;
-    UCHAR EaNameLength;
-    USHORT EaValueLength;
-    CHAR EaName[1];
-} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
-
-typedef struct _FILE_QUOTA_INFORMATION
-{
-    ULONG NextEntryOffset;
-    ULONG SidLength;
-    LARGE_INTEGER ChangeTime;
-    LARGE_INTEGER QuotaUsed;
-    LARGE_INTEGER QuotaThreshold;
-    LARGE_INTEGER QuotaLimit;
-    SID Sid;
-} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
-
-typedef struct _FILE_INTERNAL_INFORMATION
-{
-    LARGE_INTEGER IndexNumber;
-} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
-
-typedef struct _FILE_RENAME_INFORMATION
-{
-    BOOLEAN ReplaceIfExists;
-    HANDLE  RootDirectory;
-    ULONG   FileNameLength;
-    WCHAR   FileName[1];
-} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
-
-typedef struct _FILE_PIPE_INFORMATION
-{
-    ULONG ReadMode;
-    ULONG CompletionMode;
-} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
-
-typedef struct _FILE_PIPE_LOCAL_INFORMATION
-{
-    ULONG NamedPipeType;
-    ULONG NamedPipeConfiguration;
-    ULONG MaximumInstances;
-    ULONG CurrentInstances;
-    ULONG InboundQuota;
-    ULONG ReadDataAvailable;
-    ULONG OutboundQuota;
-    ULONG WriteQuotaAvailable;
-    ULONG NamedPipeState;
-    ULONG NamedPipeEnd;
-} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
-
-typedef struct _FILE_PIPE_REMOTE_INFORMATION
-{
-    LARGE_INTEGER   CollectDataTime;
-    ULONG           MaximumCollectionCount;
-} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
-
-typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
-{
-    ULONG           MaximumMessageSize;
-    ULONG           MailslotQuota;
-    ULONG           NextMessageSize;
-    ULONG           MessagesAvailable;
-    LARGE_INTEGER   ReadTimeout;
-} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
-
-typedef struct _FILE_MAILSLOT_SET_INFORMATION
-{
-    LARGE_INTEGER ReadTimeout;
-} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
-
-typedef struct _FILE_BOTH_DIR_INFORMATION
-{
-    ULONG NextEntryOffset;
-    ULONG FileIndex;
-    LARGE_INTEGER CreationTime;
-    LARGE_INTEGER LastAccessTime;
-    LARGE_INTEGER LastWriteTime;
-    LARGE_INTEGER ChangeTime;
-    LARGE_INTEGER EndOfFile;
-    LARGE_INTEGER AllocationSize;
-    ULONG FileAttributes;
-    ULONG FileNameLength;
-    ULONG EaSize;
-    CCHAR ShortNameLength;
-    WCHAR ShortName[12];
-    WCHAR FileName[1];
-} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
-
-typedef struct _FILE_COMPLETION_INFORMATION
-{
-    HANDLE Port;
-    PVOID Key;
-} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
-
-typedef struct _FILE_LINK_INFORMATION
-{
-    BOOLEAN ReplaceIfExists;
-    HANDLE RootDirectory;
-    ULONG FileNameLength;
-    WCHAR FileName[1];
-} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
-
-typedef struct _FILE_NAME_INFORMATION
-{
-    ULONG FileNameLength;
-    WCHAR FileName[1];
-} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
-
-typedef struct _FILE_ALLOCATION_INFORMATION
-{
-    LARGE_INTEGER AllocationSize;
-} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
-
-typedef struct _FILE_END_OF_FILE_INFORMATION
-{
-    LARGE_INTEGER EndOfFile;
-} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
-
-typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
-{
-    LARGE_INTEGER ValidDataLength;
-} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
-
-/*
- * File System
- */
-typedef struct _FILE_FS_DEVICE_INFORMATION
-{
-    DEVICE_TYPE DeviceType;
-    ULONG Characteristics;
-} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
-
-typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
-{
-    ULONG FileSystemAttributes;
-    ULONG MaximumComponentNameLength;
-    ULONG FileSystemNameLength;
-    WCHAR FileSystemName[1];
-} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
-
-typedef struct _FILE_FS_SIZE_INFORMATION
-{
-    LARGE_INTEGER TotalAllocationUnits;
-    LARGE_INTEGER AvailableAllocationUnits;
-    ULONG SectorsPerAllocationUnit;
-    ULONG BytesPerSector;
-} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
-
-typedef struct _FILE_FS_LABEL_INFORMATION
-{
-    ULONG VolumeLabelLength;
-    WCHAR VolumeLabel[1];
-} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
-
-typedef struct _FILE_FS_VOLUME_INFORMATION
-{
-    LARGE_INTEGER VolumeCreationTime;
-    ULONG VolumeSerialNumber;
-    ULONG VolumeLabelLength;
-    BOOLEAN SupportsObjects;
-    WCHAR VolumeLabel[1];
-} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
-
-/*
- * Registry Key Value
- */
-
-/* Class 0 */
-typedef struct _KEY_VALUE_ENTRY
-{
-    PUNICODE_STRING ValueName;
-    ULONG DataLength;
-    ULONG DataOffset;
-    ULONG Type;
-} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
-
-/* Class 1 */
-typedef struct _KEY_VALUE_PARTIAL_INFORMATION
-{
-    ULONG TitleIndex;
-    ULONG Type;
-    ULONG DataLength;
-    UCHAR Data[1];
-} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
-
-/* Class 2 */
-typedef struct _KEY_VALUE_BASIC_INFORMATION
-{
-    ULONG TitleIndex;
-    ULONG Type;
-    ULONG NameLength;
-    WCHAR Name[1];
-} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
-
-/* Class 3 */
-typedef struct _KEY_VALUE_FULL_INFORMATION
-{
-    ULONG TitleIndex;
-    ULONG Type;
-    ULONG DataOffset;
-    ULONG DataLength;
-    ULONG NameLength;
-    WCHAR Name[1];
-} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
-
-/*
- * Registry Key
- */
-
-/* Class 0 */
-typedef struct _KEY_BASIC_INFORMATION
-{
-    LARGE_INTEGER LastWriteTime;
-    ULONG TitleIndex;
-    ULONG NameLength;
-    WCHAR Name[1];
-} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
-
-/* File Pipe Structures for the FSCTLs */
-typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
-{
-    LARGE_INTEGER   Timeout;
-    ULONG           NameLength;
-    BOOLEAN         TimeoutSpecified;
-    WCHAR           Name[1];
-} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
-
-typedef struct _FILE_PIPE_PEEK_BUFFER
-{
-    ULONG NamedPipeState;
-    ULONG ReadDataAvailable;
-    ULONG NumberOfMessages;
-    ULONG MessageLength;
-    CHAR Data[1];
-} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
-
-/* The Kerner/User Shared Data Structure */
-typedef struct _KUSER_SHARED_DATA
-{
-    ULONG TickCountLowDeprecated;
-    ULONG TickCountMultiplier;
-    volatile KSYSTEM_TIME InterruptTime;
-    volatile KSYSTEM_TIME SystemTime;
-    volatile KSYSTEM_TIME TimeZoneBias;
-    USHORT ImageNumberLow;
-    USHORT ImageNumberHigh;
-    WCHAR NtSystemRoot[260];
-    ULONG MaxStackTraceDepth;
-    ULONG CryptoExponent;
-    ULONG TimeZoneId;
-    ULONG LargePageMinimum;
-    ULONG Reserved2[7];
-    NT_PRODUCT_TYPE NtProductType;
-    BOOLEAN ProductTypeIsValid;
-    ULONG NtMajorVersion;
-    ULONG NtMinorVersion;
-    BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
-    ULONG Reserved1;
-    ULONG Reserved3;
-    volatile ULONG TimeSlip;
-    ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
-    LARGE_INTEGER SystemExpirationDate;
-    ULONG SuiteMask;
-    BOOLEAN KdDebuggerEnabled;
-    volatile ULONG ActiveConsoleId;
-    volatile ULONG DismountCount;
-    ULONG ComPlusPackage;
-    ULONG LastSystemRITEventTickCount;
-    ULONG NumberOfPhysicalPages;
-    BOOLEAN SafeBootMode;
-    ULONG TraceLogging;
-    ULONGLONG Fill0;
-    ULONGLONG SystemCall[4];
-    union {
-        volatile KSYSTEM_TIME TickCount;
-        volatile ULONG64 TickCountQuad;
-    };
-} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
-
-/* Run-Time Library (RTL) Types */
-typedef struct _RTL_BITMAP
-{
-    ULONG SizeOfBitMap;
-    PULONG Buffer;
-} RTL_BITMAP, *PRTL_BITMAP;
-
-typedef struct _RTL_BITMAP_RUN
-{
-    ULONG StartingIndex;
-    ULONG NumberOfBits;
-} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
-
-typedef struct _COMPRESSED_DATA_INFO
-{
-    USHORT  CompressionFormatAndEngine;
-    UCHAR   CompressionUnitShift;
-    UCHAR   ChunkShift;
-    UCHAR   ClusterShift;
-    UCHAR   Reserved;
-    USHORT  NumberOfChunks;
-    ULONG   CompressedChunkSizes[ANYSIZE_ARRAY];
-} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
-
-typedef struct _GENERATE_NAME_CONTEXT
-{
-    USHORT  Checksum;
-    BOOLEAN CheckSumInserted;
-    UCHAR   NameLength;
-    WCHAR   NameBuffer[8];
-    ULONG   ExtensionLength;
-    WCHAR   ExtensionBuffer[4];
-    ULONG   LastIndexValue;
-} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
-
-typedef struct _RTL_SPLAY_LINKS
-{
-    struct _RTL_SPLAY_LINKS *Parent;
-    struct _RTL_SPLAY_LINKS *LeftChild;
-    struct _RTL_SPLAY_LINKS *RightChild;
-} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
-
-struct _RTL_AVL_TABLE;
-struct _RTL_GENERIC_TABLE;
-
-typedef NTSTATUS
-(NTAPI *PRTL_AVL_MATCH_FUNCTION)(
-    struct _RTL_AVL_TABLE *Table,
-    PVOID UserData,
-    PVOID MatchData
-);
-
-typedef RTL_GENERIC_COMPARE_RESULTS
-(NTAPI *PRTL_AVL_COMPARE_ROUTINE) (
-    struct _RTL_AVL_TABLE *Table,
-    PVOID FirstStruct,
-    PVOID SecondStruct
-);
-
-typedef RTL_GENERIC_COMPARE_RESULTS
-(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    PVOID FirstStruct,
-    PVOID SecondStruct
-);
-
-typedef PVOID
-(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    LONG ByteSize
-);
-
-typedef VOID
-(NTAPI *PRTL_GENERIC_FREE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    PVOID Buffer
-);
-
-typedef VOID
-(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (
-    struct _RTL_AVL_TABLE *Table,
-    LONG ByteSize
-);
-
-typedef VOID
-(NTAPI *PRTL_AVL_FREE_ROUTINE) (
-    struct _RTL_AVL_TABLE *Table,
-    PVOID Buffer
-);
-
-typedef struct _RTL_GENERIC_TABLE
-{
-    PRTL_SPLAY_LINKS TableRoot;
-    LIST_ENTRY InsertOrderList;
-    PLIST_ENTRY OrderedPointer;
-    ULONG WhichOrderedElement;
-    ULONG NumberGenericTableElements;
-    PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
-    PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
-    PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
-    PVOID TableContext;
-} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
-
-typedef struct _RTL_BALANCED_LINKS
-{
-    struct _RTL_BALANCED_LINKS *Parent;
-    struct _RTL_BALANCED_LINKS *LeftChild;
-    struct _RTL_BALANCED_LINKS *RightChild;
-    CHAR Balance;
-    UCHAR Reserved[3];
-} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
-
-typedef struct _RTL_AVL_TABLE
-{
-    RTL_BALANCED_LINKS BalancedRoot;
-    PVOID OrderedPointer;
-    ULONG WhichOrderedElement;
-    ULONG NumberGenericTableElements;
-    ULONG DepthOfTree;
-    PRTL_BALANCED_LINKS RestartKey;
-    ULONG DeleteCount;
-    PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
-    PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
-    PRTL_AVL_FREE_ROUTINE FreeRoutine;
-    PVOID TableContext;
-} RTL_AVL_TABLE, *PRTL_AVL_TABLE;
-
-typedef NTSTATUS
-(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
-    IN PWSTR ValueName,
-    IN ULONG ValueType,
-    IN PVOID ValueData,
-    IN ULONG ValueLength,
-    IN PVOID Context,
-    IN PVOID EntryContext
-);
-
-typedef struct _RTL_QUERY_REGISTRY_TABLE
-{
-    PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
-    ULONG Flags;
-    PWSTR Name;
-    PVOID EntryContext;
-    ULONG DefaultType;
-    PVOID DefaultData;
-    ULONG DefaultLength;
-} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
-
-typedef struct _UNICODE_PREFIX_TABLE_ENTRY
-{
-    CSHORT NodeTypeCode;
-    CSHORT NameLength;
-    struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
-    struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
-    RTL_SPLAY_LINKS Links;
-    PUNICODE_STRING Prefix;
-} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;
-
-typedef struct _UNICODE_PREFIX_TABLE
-{
-    CSHORT NodeTypeCode;
-    CSHORT NameLength;
-    PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
-    PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
-} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
-
-typedef NTSTATUS
-(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
-    IN PVOID Base,
-    IN OUT PVOID *CommitAddress,
-    IN OUT PSIZE_T CommitSize
-);
-
-typedef struct _RTL_HEAP_PARAMETERS
-{
-    ULONG Length;
-    SIZE_T SegmentReserve;
-    SIZE_T SegmentCommit;
-    SIZE_T DeCommitFreeBlockThreshold;
-    SIZE_T DeCommitTotalFreeThreshold;
-    SIZE_T MaximumAllocationSize;
-    SIZE_T VirtualMemoryThreshold;
-    SIZE_T InitialCommit;
-    SIZE_T InitialReserve;
-    PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
-    SIZE_T Reserved[2];
-} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
-
-typedef void *FAST_MUTEX;
-typedef void *PHANDLE_TABLE;
-
-typedef OSVERSIONINFOW RTL_OSVERSIONINFOW;
-typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;
-typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;
-typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;
-
 #endif
index f123697..8858f59 100644 (file)
@@ -10,9 +10,6 @@
 #define _ZWFUNCS_H
 
 /* DEPENDENCIES **************************************************************/
-#include "lpctypes.h"
-#include "zwtypes.h"
-#include "kdtypes.h"
 #define _WMIKM_
 #include <evntrace.h>
 
index dab53c5..b6284d6 100644 (file)
@@ -10,7 +10,6 @@
 #define _ZWTYPES_H
 
 /* DEPENDENCIES **************************************************************/
-#include "rtltypes.h"
 #include <cfg.h>
 
 /* EXPORTED DATA *************************************************************/
@@ -285,8 +284,8 @@ typedef enum _PLUGPLAY_CONTROL_CLASS
 
 /* TYPES *********************************************************************/
 
-typedef unsigned short LANGID;
-typedef LANGID *PLANGID;
+typedef USHORT LANGID, *PLANGID;
+typedef USHORT RTL_ATOM, *PRTL_ATOM;
 
 typedef struct _PLUGPLAY_EVENT_BLOCK
 {
index 14d029e..1799634 100644 (file)
@@ -115,6 +115,9 @@ typedef unsigned __int64 UINT64,  *PUINT64;
 typedef signed short INT16, *PINT16;
 typedef unsigned short UINT16, *PUINT16;
 
+typedef ULONG_PTR KAFFINITY;
+typedef KAFFINITY *PKAFFINITY;
+
 #ifdef __cplusplus
 }
 #endif
index f26875b..55c72a8 100644 (file)
@@ -3338,6 +3338,7 @@ typedef struct _SYSTEM_BATTERY_STATE {
        ULONG  DefaultAlert2;
 } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
 
+typedef DWORD EXECUTION_STATE;
 typedef enum _POWER_INFORMATION_LEVEL {
        SystemPowerPolicyAc,
        SystemPowerPolicyDc,