- Various Microsoft DDK/PSDK compatibility fixes and some MSVC stuff too.
authorAlex Ionescu <aionescu@gmail.com>
Tue, 26 Jul 2005 14:00:45 +0000 (14:00 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Tue, 26 Jul 2005 14:00:45 +0000 (14:00 +0000)
 - Fix PSECURITY_DESCRIPTOR_RELATIVE names.c
 - Don't use rtltypes.h as a replacement for normal stdlib headers.
 - Fix a HAL header fixme.

svn path=/trunk/; revision=16744

54 files changed:
reactos/drivers/video/videoprt/videoprt.h
reactos/hal/halx86/include/hal.h
reactos/include/ndk/mmtypes.h
reactos/include/ndk/ntndk.h
reactos/include/ndk/pstypes.h
reactos/include/ndk/rtlfuncs.h
reactos/include/ndk/rtltypes.h
reactos/include/ndk/umtypes.h
reactos/include/ndk/zwfuncs.h
reactos/include/ndk/zwtypes.h
reactos/include/reactos/debug.h
reactos/include/reactos/helper.h
reactos/include/subsys/csrss/csrss.h
reactos/include/wine/debug.h
reactos/include/wine/unicode.h
reactos/lib/advapi32/advapi32.h
reactos/lib/advapi32/sec/sec.c
reactos/lib/dnsapi/dnsapi/names.c
reactos/lib/kernel32/debug/break.c
reactos/lib/kernel32/file/cnotify.c
reactos/lib/kernel32/file/curdir.c
reactos/lib/kernel32/file/iocompl.c
reactos/lib/kernel32/include/debug.h
reactos/lib/kernel32/k32.h
reactos/lib/kernel32/kernel32.rc
reactos/lib/kernel32/misc/comm.c
reactos/lib/kernel32/misc/console.c
reactos/lib/kernel32/misc/errormsg.c
reactos/lib/kernel32/misc/lang.c
reactos/lib/kernel32/misc/muldiv.c
reactos/lib/kernel32/misc/nls.c
reactos/lib/kernel32/misc/profile.c
reactos/lib/kernel32/misc/utils.c
reactos/lib/kernel32/misc/version.c
reactos/lib/kernel32/tests/setup.c
reactos/lib/kernel32/tests/tests/CreateFile.c
reactos/lib/ntdll/inc/ntdll.h
reactos/lib/rtl/rtl.h
reactos/lib/rtl/sd.c
reactos/lib/userenv/precomp.h
reactos/ntoskrnl/include/internal/mm.h
reactos/ntoskrnl/include/ntoskrnl.h
reactos/ntoskrnl/se/sd.c
reactos/services/rpcss/rpcss.c
reactos/subsys/csrss/csrss.h
reactos/subsys/smss/smss.h
reactos/subsys/system/autochk/autochk.c
reactos/subsys/system/services/services.h
reactos/w32api/include/ddk/ntifs.h
reactos/w32api/include/ddk/winddk.h
reactos/w32api/include/ntdef.h
reactos/w32api/include/winbase.h
reactos/w32api/include/windows.h
reactos/w32api/include/winnt.h

index 6230d0f..da886d5 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef VIDEOPRT_H
 #define VIDEOPRT_H
 
+#include <stdio.h>
 #include <ddk/ntddk.h>
 #include <ddk/miniport.h>
 #include <ddk/video.h>
index 4b8757b..745260b 100644 (file)
@@ -8,25 +8,20 @@
 
 /* INCLUDES ******************************************************************/
 
+/* C Headers */
+#include <stdio.h>
+
 /* IFS/DDK/NDK Headers */
 #include <ddk/ntddk.h>
 #include <ddk/ntifs.h>
 #include <ndk/ntndk.h>
 
 /* Internal Kernel Headers */
-//#include <internal/mm.h>
+#include <internal/mm.h>
 #include <internal/ke.h>
 
 #define KPCR_BASE 0xFF000000 // HACK!
 
-//Temporary hack below until ntoskrnl is on NDK
-PVOID STDCALL
-MmAllocateContiguousAlignedMemory(IN ULONG NumberOfBytes,
-                                 IN PHYSICAL_ADDRESS LowestAcceptableAddress,
-                                 IN PHYSICAL_ADDRESS HighestAcceptableAddress,
-                                 IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL,
-                                 IN MEMORY_CACHING_TYPE CacheType OPTIONAL,
-                                 IN ULONG Alignment);
 /* Internal HAL Headers */
 #include "apic.h"
 #include "bus.h"
index 92267b7..df4adf2 100644 (file)
@@ -33,17 +33,15 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
 /* TYPES *********************************************************************/
 
 /* FIXME: Forced to do this for now, because of EPROCESS, will go away before 0.3.0 */
-#ifndef __NTOSKRNL__
 typedef struct _MADDRESS_SPACE
 {
-    PVOID MemoryAreaRoot;
+    struct _MEMORY_AREA *MemoryAreaRoot;
     FAST_MUTEX Lock;
     PVOID LowestAddress;
     struct _EPROCESS* Process;
     PUSHORT PageTableRefCountTable;
     ULONG PageTableRefCountTableSize;
 } MADDRESS_SPACE, *PMADDRESS_SPACE;
-#endif
 
 typedef struct _PP_LOOKASIDE_LIST
 {
index 1f59062..a1dd9c8 100644 (file)
@@ -9,8 +9,12 @@
 #ifndef _NTNDK_
 #define _NTNDK_
 
+/* C Standard Headers */
+#include <stdarg.h>
+#include <excpt.h>
+
+/* Kernel-Mode NDK */
 #ifndef NTOS_MODE_USER
-    /* Kernel-Mode NDK */
     #include "kdtypes.h"    /* Kernel Debugger Types */
     #include "kdfuncs.h"    /* Kernel Debugger Functions */
     #include "cctypes.h"    /* Cache Manager Types */
index 601220f..f4d9454 100644 (file)
@@ -22,13 +22,13 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
 /* CONSTANTS *****************************************************************/
 
 /* These are not exposed to drivers normally */
-#ifndef _NTOS_MODE_USER
-    #define JOB_OBJECT_ASSIGN_PROCESS    (1)
-    #define JOB_OBJECT_SET_ATTRIBUTES    (2)
-    #define JOB_OBJECT_QUERY    (4)
-    #define JOB_OBJECT_TERMINATE    (8)
-    #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES    (16)
-    #define JOB_OBJECT_ALL_ACCESS    (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
+#ifndef NTOS_MODE_USER
+    #define JOB_OBJECT_ASSIGN_PROCESS           1
+    #define JOB_OBJECT_SET_ATTRIBUTES           2
+    #define JOB_OBJECT_QUERY                    4
+    #define JOB_OBJECT_TERMINATE                8
+    #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES  16
+    #define JOB_OBJECT_ALL_ACCESS               (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
 #endif
 
 #define THREAD_ALERT 0x4
@@ -36,12 +36,12 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
 #define USER_SHARED_DATA (0x7FFE0000)
 
 /* Process priority classes */
-#define PROCESS_PRIORITY_CLASS_HIGH    (4) /* FIXME */
-#define PROCESS_PRIORITY_CLASS_IDLE    (0) /* FIXME */
-#define PROCESS_PRIORITY_CLASS_NORMAL  (2) /* FIXME */
-#define PROCESS_PRIORITY_CLASS_REALTIME        (5) /* FIXME */
-#define PROCESS_PRIORITY_CLASS_BELOW_NORMAL (1) /* FIXME */
-#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL (3) /* FIXME */
+#define PROCESS_PRIORITY_CLASS_IDLE                0
+#define PROCESS_PRIORITY_CLASS_BELOW_NORMAL     1
+#define PROCESS_PRIORITY_CLASS_NORMAL          2
+#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL     3
+#define PROCESS_PRIORITY_CLASS_HIGH                4
+#define PROCESS_PRIORITY_CLASS_REALTIME                5
 
 /* Global Flags */
 #define FLG_STOP_ON_EXCEPTION          0x00000001
@@ -75,16 +75,16 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
 /* ENUMERATIONS **************************************************************/
 
 /* FUNCTION TYPES ************************************************************/
-typedef VOID (STDCALL *PPEBLOCKROUTINE)(PVOID);
+typedef VOID (NTAPI *PPEBLOCKROUTINE)(PVOID);
 
 typedef NTSTATUS
-(STDCALL *PW32_PROCESS_CALLBACK)(
+(NTAPI *PW32_PROCESS_CALLBACK)(
     struct _EPROCESS *Process,
     BOOLEAN Create
 );
 
 typedef NTSTATUS
-(STDCALL *PW32_THREAD_CALLBACK)(
+(NTAPI *PW32_THREAD_CALLBACK)(
     struct _ETHREAD *Thread,
     BOOLEAN Create
 );
index 0d613d9..357ad63 100644 (file)
@@ -12,7 +12,7 @@
 /* DEPENDENCIES **************************************************************/
 #include "rtltypes.h"
 #include "pstypes.h"
-#include <ddk/ntnls.h>
+#include <ntnls.h>
 
 /* PROTOTYPES ****************************************************************/
 
@@ -156,7 +156,7 @@ NTSTATUS
 STDCALL
 RtlAbsoluteToSelfRelativeSD(
     IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
-    IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+    IN OUT PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
     IN PULONG BufferLength
 );
 
@@ -322,7 +322,7 @@ RtlCreateSecurityDescriptor(
 NTSTATUS
 STDCALL
 RtlCreateSecurityDescriptorRelative(
-    PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+    PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
     ULONG Revision
 );
 
@@ -460,7 +460,7 @@ RtlQueryInformationAcl(
 NTSTATUS
 STDCALL
 RtlSelfRelativeToAbsoluteSD(
-    IN PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSD,
+    IN PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSD,
     OUT PSECURITY_DESCRIPTOR AbsoluteSD,
     IN PULONG AbsoluteSDSize,
     IN PACL Dacl,
@@ -547,7 +547,7 @@ RtlSubAuthoritySid(
 BOOLEAN
 STDCALL
 RtlValidRelativeSecurityDescriptor(
-    IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+    IN PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
     IN ULONG SecurityDescriptorLength,
     IN SECURITY_INFORMATION RequiredInformation
 );
@@ -1016,14 +1016,6 @@ RtlLookupAtomInAtomTable(
 /*
  * Memory Functions
  */
-SIZE_T
-STDCALL
-RtlCompareMemory(
-    IN const VOID *Source1,
-    IN const VOID *Source2,
-    IN SIZE_T Length
-);
-
 VOID
 STDCALL
 RtlFillMemoryUlong(
@@ -1727,75 +1719,4 @@ NTSTATUS
 STDCALL
 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
 
-/*
- * C Runtime Library Functions
- */
-char *_itoa (int value, char *string, int radix);
-wchar_t *_itow (int value, wchar_t *string, int radix);
-int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
-int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
-int _stricmp(const char *s1, const char *s2);
-char * _strlwr(char *x);
-int _strnicmp(const char *s1, const char *s2, size_t n);
-char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
-char * _strrev(char *s);
-char * _strset(char* szToFill, int szFill);
-char * _strupr(char *x);
-int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
-int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
-wchar_t * _wcslwr (wchar_t *x);
-int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
-wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
-wchar_t * _wcsrev(wchar_t *s);
-wchar_t *_wcsupr(wchar_t *x);
-int atoi(const char *str);
-long atol(const char *str);
-int isdigit(int c);
-int isalpha(int c);
-int islower(int c);
-int isprint(int c);
-int isspace(int c);
-int isupper(int c);
-int isxdigit(int c);
-size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
-int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
-void * memchr(const void *s, int c, size_t n);
-void * memcpy(void *to, const void *from, size_t count);
-void * memmove(void *dest,const void *src, size_t count);
-void * memset(void *src, int val, size_t count);
-int rand(void);
-int sprintf(char * buf, const char *fmt, ...);
-void srand(unsigned seed);
-char * strcat(char *s, const char *append);
-char * strchr(const char *s, int c);
-int strcmp(const char *s1, const char *s2);
-char * strcpy(char *to, const char *from);
-size_t strlen(const char *str);
-char * strncat(char *dst, const char *src, size_t n);
-int strncmp(const char *s1, const char *s2, size_t n);
-char *strncpy(char *dst, const char *src, size_t n);
-char *strrchr(const char *s, int c);
-size_t strspn(const char *s1, const char *s2);
-char *strstr(const char *s, const char *find);
-int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
-int tolower(int c);
-int toupper(int c);
-wchar_t towlower(wchar_t c);
-wchar_t towupper(wchar_t c);
-int vsprintf(char *buf, const char *fmt, va_list args);
-wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
-wchar_t * wcschr(const wchar_t *str, wchar_t ch);
-int wcscmp(const wchar_t *cs, const wchar_t *ct);
-wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
-size_t wcscspn(const wchar_t *str,const wchar_t *reject);
-size_t wcslen(const wchar_t *s);
-wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
-int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
-wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
-wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
-size_t wcsspn(const wchar_t *str,const wchar_t *accept);
-wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
-size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
-int wctomb (char *mbchar, wchar_t wchar);
-
 #endif
index c57f7c8..e1542ce 100644 (file)
@@ -11,6 +11,7 @@
 
 /* DEPENDENCIES **************************************************************/
 #include "zwtypes.h"
+#include "excpt.h"
 
 /* EXPORTED DATA *************************************************************/
 
 
 /* ENUMERATIONS **************************************************************/
 
-typedef enum
-{
-    ExceptionContinueExecution,
-    ExceptionContinueSearch,
-    ExceptionNestedException,
-    ExceptionCollidedUnwind
-} EXCEPTION_DISPOSITION;
-
 typedef enum
 {
     INVALID_PATH = 0,
@@ -102,16 +95,16 @@ typedef EXCEPTION_DISPOSITION
     PVOID
 );
 
-typedef LONG (STDCALL *PVECTORED_EXCEPTION_HANDLER)(
+typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER)(
     PEXCEPTION_POINTERS ExceptionPointers
 );
 
-typedef DWORD (STDCALL *PTHREAD_START_ROUTINE)(
+typedef DWORD (NTAPI *PTHREAD_START_ROUTINE)(
     LPVOID Parameter
 );
 
 typedef VOID
-(STDCALL *PRTL_BASE_PROCESS_START_ROUTINE)(
+(NTAPI *PRTL_BASE_PROCESS_START_ROUTINE)(
     PTHREAD_START_ROUTINE StartAddress,
     PVOID Parameter
 );
@@ -234,11 +227,13 @@ typedef struct _RTL_HEAP_DEFINITION
 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
 /* END REVIEW AREA */
 
+#ifdef _INC_EXCPT
 typedef struct _EXCEPTION_REGISTRATION
 {
     struct _EXCEPTION_REGISTRATION*    prev;
     PEXCEPTION_HANDLER        handler;
 } EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
+#endif
 
 typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
 typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
@@ -276,7 +271,7 @@ typedef struct _RTL_RANGE
 } RTL_RANGE, *PRTL_RANGE;
 
 typedef BOOLEAN
-(STDCALL *PRTL_CONFLICT_RANGE_CALLBACK) (
+(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
     PVOID Context,
     PRTL_RANGE Range
 );
@@ -357,7 +352,7 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS
     ULONG CountY;
     ULONG CountCharsX;
     ULONG CountCharsY;
-    ULONG FillAttribute;;
+    ULONG FillAttribute;
     ULONG WindowFlags;
     ULONG ShowWindowFlags;
     UNICODE_STRING WindowTitle;
@@ -405,7 +400,7 @@ typedef struct _RTL_ATOM_TABLE
 } RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
 
 /* Let Kernel Drivers use this */
-#ifndef _WINBASE_H
+#ifndef _WINBASE_
     typedef struct _SYSTEMTIME
     {
         WORD wYear;
index 04c1af2..b09a9d4 100644 (file)
-/*
- * PROJECT:         ReactOS Native Headers
- * FILE:            include/ndk/umtypes.h
- * PURPOSE:         Definitions needed for Native Headers if target is not Kernel-Mode.
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- *                  Created 06/10/04
- */
-
-#ifndef _UMTYPES_H
-#define _UMTYPES_H
-
-/* DEPENDENCIES **************************************************************/
-#include <winioctl.h>
-#include <ntstatus.h>
-#include <ddk/ntnls.h>
-#define STATIC static
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/* NTAPI/NTOSAPI Define */
-#define NTAPI __stdcall
-#define NTOSAPI
-
-/* 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 FIXME: Some are in w32api's psdk..,is that normal ?*/
-#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)
-
-/* 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)
-
-/* 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
-
-/* Device Charactertics */
-#define FILE_REMOVABLE_MEDIA            0x00000001
-#define FILE_REMOTE_DEVICE              0x00000010
-
-/* SID Constants */
-#define SID_MAX_SUB_AUTHORITIES     15
-
-/* 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 */
-typedef CONST int CINT;
-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)
-typedef struct _UNICODE_STRING
-{
-    USHORT Length;
-    USHORT MaximumLength;
-    PWSTR  Buffer;
-} UNICODE_STRING, *PUNICODE_STRING;
-typedef const UNICODE_STRING* PCUNICODE_STRING;
-
-typedef struct _STRING
-{
-    USHORT Length;
-    USHORT MaximumLength;
-    PCHAR  Buffer;
-} STRING, *PSTRING;
-
-typedef struct _OBJECT_ATTRIBUTES
-{
-    ULONG Length;
-    HANDLE RootDirectory;
-    PUNICODE_STRING ObjectName;
-    ULONG Attributes;
-    PVOID SecurityDescriptor;
-    PVOID SecurityQualityOfService;
-} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
-#endif
-
-typedef STRING ANSI_STRING;
-typedef PSTRING PANSI_STRING;
-typedef STRING OEM_STRING;
-typedef PSTRING POEM_STRING;
-
-typedef 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_ZERO_DATA_INFORMATION
-{
-    LARGE_INTEGER FileOffset;
-    LARGE_INTEGER BeyondFinalZero;
-} FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_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_ALLOCATED_RANGE_BUFFER
-{
-    LARGE_INTEGER FileOffset;
-    LARGE_INTEGER Length;
-} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER;
-
-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 STDCALL
-(*PRTL_AVL_MATCH_FUNCTION)(
-    struct _RTL_AVL_TABLE *Table,
-    PVOID UserData,
-    PVOID MatchData
-);
-
-typedef RTL_GENERIC_COMPARE_RESULTS STDCALL
-(*PRTL_AVL_COMPARE_ROUTINE) (
-    struct _RTL_AVL_TABLE *Table,
-    PVOID FirstStruct,
-    PVOID SecondStruct
-);
-
-typedef RTL_GENERIC_COMPARE_RESULTS STDCALL
-(*PRTL_GENERIC_COMPARE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    PVOID FirstStruct,
-    PVOID SecondStruct
-);
-
-typedef PVOID STDCALL
-(*PRTL_GENERIC_ALLOCATE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    LONG ByteSize
-);
-
-typedef VOID STDCALL
-(*PRTL_GENERIC_FREE_ROUTINE) (
-    struct _RTL_GENERIC_TABLE *Table,
-    PVOID Buffer
-);
-
-typedef VOID STDCALL
-(*PRTL_AVL_ALLOCATE_ROUTINE) (
-    struct _RTL_AVL_TABLE *Table,
-    LONG ByteSize
-);
-
-typedef VOID STDCALL
-(*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 STDCALL
-(*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;
-
-/* FIXME - need FAST_MUTEX and PHANDLE_TABLE for RTL_ATOM_TABLE in umode! */
-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
+/*\r
+ * PROJECT:         ReactOS Native Headers\r
+ * FILE:            include/ndk/umtypes.h\r
+ * PURPOSE:         Definitions needed for Native Headers if target is not Kernel-Mode.\r
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)\r
+ * UPDATE HISTORY:\r
+ *                  Created 06/10/04\r
+ */\r
+\r
+#ifndef _UMTYPES_H\r
+#define _UMTYPES_H\r
+\r
+/* DEPENDENCIES **************************************************************/\r
+#include <winioctl.h>\r
+#include <ntstatus.h>\r
+#include <ntnls.h>\r
+#define STATIC static\r
+\r
+/* EXPORTED DATA *************************************************************/\r
+\r
+/* CONSTANTS *****************************************************************/\r
+\r
+/* NTAPI/NTOSAPI Define */\r
+#define NTAPI __stdcall\r
+#define NTOSAPI\r
+#define FASTCALL __fastcall\r
+#define STDCALL __stdcall\r
+\r
+/* Definitions for Object Creation -- winternl.h */\r
+#define OBJ_INHERIT 2L\r
+#define OBJ_PERMANENT 16L\r
+#define OBJ_EXCLUSIVE 32L\r
+#define OBJ_CASE_INSENSITIVE 64L\r
+#define OBJ_OPENIF 128L\r
+#define OBJ_OPENLINK 256L\r
+#define OBJ_VALID_ATTRIBUTES 498L\r
+#define InitializeObjectAttributes(p,n,a,r,s) { \\r
+  (p)->Length = sizeof(OBJECT_ATTRIBUTES); \\r
+  (p)->RootDirectory = (r); \\r
+  (p)->Attributes = (a); \\r
+  (p)->ObjectName = (n); \\r
+  (p)->SecurityDescriptor = (s); \\r
+  (p)->SecurityQualityOfService = NULL; \\r
+}\r
+\r
+/* Native API Return Value Macros */\r
+#define NT_SUCCESS(x) ((x)>=0)\r
+#define NT_WARNING(x) ((ULONG)(x)>>30==2)\r
+#define NT_ERROR(x) ((ULONG)(x)>>30==3)\r
+\r
+/* Object Access Rights FIXME: Some are in w32api's psdk..,is that normal ?*/\r
+#define DIRECTORY_QUERY (0x0001)\r
+#define DIRECTORY_TRAVERSE (0x0002)\r
+#define DIRECTORY_CREATE_OBJECT (0x0004)\r
+#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)\r
+#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)\r
+#define EVENT_QUERY_STATE (0x0001)\r
+#define SEMAPHORE_QUERY_STATE (0x0001)\r
+#define SYMBOLIC_LINK_QUERY 0x0001\r
+#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)\r
+\r
+/* I/O Control Codes for communicating with Mailslots */\r
+#define FSCTL_MAILSLOT_PEEK             \\r
+    CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)\r
+\r
+/* I/O Control Codes for communicating with Pipes */\r
+#define FSCTL_PIPE_ASSIGN_EVENT         \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_DISCONNECT           \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_LISTEN               \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_PEEK                 \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)\r
+#define FSCTL_PIPE_QUERY_EVENT          \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_TRANSCEIVE           \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)\r
+#define FSCTL_PIPE_WAIT                 \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_IMPERSONATE          \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_SET_CLIENT_PROCESS   \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)\r
+#define FSCTL_PIPE_INTERNAL_READ        \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)\r
+#define FSCTL_PIPE_INTERNAL_WRITE       \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)\r
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)\r
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \\r
+    CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)\r
+\r
+/* I/O Control Codes for Communicating with Tapes */            \r
+#define IOCTL_TAPE_ERASE                \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
+#define IOCTL_TAPE_PREPARE              \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_WRITE_MARKS          \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
+#define IOCTL_TAPE_GET_POSITION         \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_SET_POSITION         \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_GET_DRIVE_PARAMS     \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_SET_DRIVE_PARAMS     \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
+#define IOCTL_TAPE_GET_MEDIA_PARAMS     \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_SET_MEDIA_PARAMS     \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_GET_STATUS           \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)\r
+#define IOCTL_TAPE_CREATE_PARTITION     \\r
+    CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)\r
+\r
+/* Macros for current Process/Thread built-in 'special' ID */\r
+#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )\r
+#define ZwCurrentProcess() NtCurrentProcess()\r
+#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )\r
+#define ZwCurrentThread() NtCurrentThread()\r
+\r
+/* Kernel Shared Data Constants */\r
+#define PROCESSOR_FEATURE_MAX 64\r
+#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)\r
+\r
+/* Paging Values on x86 */\r
+#define PAGE_SIZE                         0x1000\r
+#define PAGE_SHIFT                        12L\r
+\r
+/* Run-Time Library (RTL) Registry Constants */\r
+#define RTL_REGISTRY_ABSOLUTE       0\r
+#define RTL_REGISTRY_SERVICES       1\r
+#define RTL_REGISTRY_CONTROL        2\r
+#define RTL_REGISTRY_WINDOWS_NT     3\r
+#define RTL_REGISTRY_DEVICEMAP      4\r
+#define RTL_REGISTRY_USER           5\r
+#define RTL_REGISTRY_MAXIMUM        6\r
+#define RTL_REGISTRY_HANDLE         0x40000000\r
+#define RTL_REGISTRY_OPTIONAL       0x80000000\r
+#define RTL_QUERY_REGISTRY_SUBKEY   0x00000001\r
+#define RTL_QUERY_REGISTRY_TOPKEY   0x00000002\r
+#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004\r
+#define RTL_QUERY_REGISTRY_NOVALUE  0x00000008\r
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010\r
+#define RTL_QUERY_REGISTRY_DIRECT   0x00000020\r
+#define RTL_QUERY_REGISTRY_DELETE   0x00000040\r
+\r
+/* File Result Flags */\r
+#define FILE_SUPERSEDED                   0x00000000\r
+#define FILE_OPENED                       0x00000001\r
+#define FILE_CREATED                      0x00000002\r
+#define FILE_OVERWRITTEN                  0x00000003\r
+#define FILE_EXISTS                       0x00000004\r
+#define FILE_DOES_NOT_EXIST               0x00000005\r
+\r
+/* Pipe Flags */\r
+#define FILE_PIPE_BYTE_STREAM_MODE      0x00000000\r
+#define FILE_PIPE_MESSAGE_MODE          0x00000001\r
+#define FILE_PIPE_QUEUE_OPERATION       0x00000000\r
+#define FILE_PIPE_COMPLETE_OPERATION    0x00000001\r
+#define FILE_PIPE_INBOUND               0x00000000\r
+#define FILE_PIPE_OUTBOUND              0x00000001\r
+#define FILE_PIPE_FULL_DUPLEX           0x00000002\r
+#define FILE_PIPE_CLIENT_END            0x00000000\r
+#define FILE_PIPE_SERVER_END            0x00000001\r
+\r
+/* File Attributes */\r
+#define FILE_ATTRIBUTE_VALID_FLAGS             0x00007fb7\r
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS         0x000031a7\r
+\r
+/* File Flags */\r
+#define FILE_SUPERSEDE                 0x00000000\r
+#define FILE_OPEN                      0x00000001\r
+#define FILE_CREATE                    0x00000002\r
+#define FILE_OPEN_IF                   0x00000003\r
+#define FILE_OVERWRITE                 0x00000004\r
+#define FILE_OVERWRITE_IF              0x00000005\r
+#define FILE_MAXIMUM_DISPOSITION       0x00000005\r
+\r
+/* File Types */\r
+#define FILE_DIRECTORY_FILE            0x00000001\r
+#define FILE_WRITE_THROUGH             0x00000002\r
+#define FILE_SEQUENTIAL_ONLY           0x00000004\r
+#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008\r
+#define FILE_SYNCHRONOUS_IO_ALERT      0x00000010\r
+#define FILE_SYNCHRONOUS_IO_NONALERT   0x00000020\r
+#define FILE_NON_DIRECTORY_FILE                0x00000040\r
+#define FILE_CREATE_TREE_CONNECTION    0x00000080\r
+#define FILE_COMPLETE_IF_OPLOCKED      0x00000100\r
+#define FILE_NO_EA_KNOWLEDGE           0x00000200\r
+#define FILE_OPEN_FOR_RECOVERY         0x00000400\r
+#define FILE_RANDOM_ACCESS             0x00000800\r
+#define FILE_DELETE_ON_CLOSE           0x00001000\r
+#define FILE_OPEN_BY_FILE_ID           0x00002000\r
+#define FILE_OPEN_FOR_BACKUP_INTENT    0x00004000\r
+#define FILE_NO_COMPRESSION            0x00008000\r
+#define FILE_RESERVE_OPFILTER          0x00100000\r
+#define FILE_OPEN_REPARSE_POINT                0x00200000\r
+#define FILE_OPEN_NO_RECALL            0x00400000\r
+#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000\r
+\r
+/* Device Charactertics */\r
+#define FILE_REMOVABLE_MEDIA            0x00000001\r
+#define FILE_REMOTE_DEVICE              0x00000010\r
+\r
+/* Version Constants */\r
+#define VER_MINORVERSION                0x0000001\r
+#define VER_MAJORVERSION                0x0000002\r
+#define VER_BUILDNUMBER                 0x0000004\r
+#define VER_PLATFORMID                  0x0000008\r
+#define VER_SERVICEPACKMINOR            0x0000010\r
+#define VER_SERVICEPACKMAJOR            0x0000020\r
+#define VER_SUITENAME                   0x0000040\r
+#define VER_PRODUCT_TYPE                0x0000080\r
+#define VER_PLATFORM_WIN32s             0\r
+#define VER_PLATFORM_WIN32_WINDOWS      1\r
+#define VER_PLATFORM_WIN32_NT           2\r
+#define VER_EQUAL                       1\r
+#define VER_GREATER                     2\r
+#define VER_GREATER_EQUAL               3\r
+#define VER_LESS                        4\r
+#define VER_LESS_EQUAL                  5\r
+#define VER_AND                         6\r
+#define VER_OR                          7\r
+#define VER_CONDITION_MASK              7\r
+#define VER_NUM_BITS_PER_CONDITION_MASK 3\r
+\r
+/* RTL String Hash Algorithms */\r
+#define HASH_STRING_ALGORITHM_DEFAULT   0\r
+#define HASH_STRING_ALGORITHM_X65599    1\r
+#define HASH_STRING_ALGORITHM_INVALID   0xffffffff\r
+\r
+/* List Macros */\r
+static __inline\r
+VOID\r
+InitializeListHead(\r
+    IN PLIST_ENTRY  ListHead)\r
+{\r
+    ListHead->Flink = ListHead->Blink = ListHead;\r
+}\r
+\r
+static __inline\r
+VOID\r
+InsertHeadList(\r
+    IN PLIST_ENTRY  ListHead,\r
+    IN PLIST_ENTRY  Entry)\r
+{\r
+    PLIST_ENTRY OldFlink;\r
+    OldFlink = ListHead->Flink;\r
+    Entry->Flink = OldFlink;\r
+    Entry->Blink = ListHead;\r
+    OldFlink->Blink = Entry;\r
+    ListHead->Flink = Entry;\r
+}\r
+\r
+static __inline\r
+VOID\r
+InsertTailList(\r
+    IN PLIST_ENTRY  ListHead,\r
+    IN PLIST_ENTRY  Entry)\r
+{\r
+    PLIST_ENTRY OldBlink;\r
+    OldBlink = ListHead->Blink;\r
+    Entry->Flink = ListHead;\r
+    Entry->Blink = OldBlink;\r
+    OldBlink->Flink = Entry;\r
+    ListHead->Blink = Entry;\r
+}\r
+\r
+#define IsListEmpty(ListHead) \\r
+    ((ListHead)->Flink == (ListHead))\r
+\r
+#define PopEntryList(ListHead) \\r
+    (ListHead)->Next; \\r
+    { \\r
+        PSINGLE_LIST_ENTRY _FirstEntry; \\r
+        _FirstEntry = (ListHead)->Next; \\r
+        if (_FirstEntry != NULL) \\r
+            (ListHead)->Next = _FirstEntry->Next; \\r
+    }\r
+\r
+#define PushEntryList(_ListHead, _Entry) \\r
+    (_Entry)->Next = (_ListHead)->Next; \\r
+    (_ListHead)->Next = (_Entry); \\r
+\r
+static __inline\r
+BOOLEAN\r
+RemoveEntryList(\r
+    IN PLIST_ENTRY  Entry)\r
+{\r
+    PLIST_ENTRY OldFlink;\r
+    PLIST_ENTRY OldBlink;\r
+\r
+    OldFlink = Entry->Flink;\r
+    OldBlink = Entry->Blink;\r
+    OldFlink->Blink = OldBlink;\r
+    OldBlink->Flink = OldFlink;\r
+    return (OldFlink == OldBlink);\r
+}\r
+\r
+static __inline\r
+PLIST_ENTRY\r
+RemoveHeadList(\r
+    IN PLIST_ENTRY  ListHead)\r
+{\r
+    PLIST_ENTRY Flink;\r
+    PLIST_ENTRY Entry;\r
+\r
+    Entry = ListHead->Flink;\r
+    Flink = Entry->Flink;\r
+    ListHead->Flink = Flink;\r
+    Flink->Blink = ListHead;\r
+    return Entry;\r
+}\r
+\r
+static __inline\r
+PLIST_ENTRY\r
+RemoveTailList(\r
+    IN PLIST_ENTRY  ListHead)\r
+{\r
+    PLIST_ENTRY Blink;\r
+    PLIST_ENTRY Entry;\r
+\r
+    Entry = ListHead->Blink;\r
+    Blink = Entry->Blink;\r
+    ListHead->Blink = Blink;\r
+    Blink->Flink = ListHead;\r
+    return Entry;\r
+}\r
+\r
+#define IsFirstEntry(ListHead, Entry) \\r
+    ((ListHead)->Flink == Entry)\r
+\r
+#define IsLastEntry(ListHead, Entry) \\r
+    ((ListHead)->Blink == Entry)\r
+\r
+/*\r
+ * Constant String Macro\r
+ */\r
+#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \\r
+{ \\r
+ sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \\r
+ sizeof(__SOURCE_STRING__), \\r
+ (__SOURCE_STRING__) \\r
+}\r
+\r
+/* ENUMERATIONS **************************************************************/\r
+\r
+/* Kernel Shared Data Values */\r
+typedef enum _NT_PRODUCT_TYPE\r
+{\r
+    NtProductWinNt = 1,\r
+    NtProductLanManNt,\r
+    NtProductServer\r
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;\r
+\r
+typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE\r
+{\r
+    StandardDesign,\r
+    NEC98x86,\r
+    EndAlternatives\r
+} ALTERNATIVE_ARCHITECTURE_TYPE;\r
+\r
+/* Run-Time Library (RTL) Enumerations */\r
+typedef enum _TABLE_SEARCH_RESULT\r
+{\r
+    TableEmptyTree,\r
+    TableFoundNode,\r
+    TableInsertAsLeft,\r
+    TableInsertAsRight\r
+} TABLE_SEARCH_RESULT;\r
+\r
+typedef enum _RTL_GENERIC_COMPARE_RESULTS\r
+{\r
+    GenericLessThan,\r
+    GenericGreaterThan,\r
+    GenericEqual\r
+} RTL_GENERIC_COMPARE_RESULTS;\r
+\r
+/* Kernel or Native Enumerations used by Native API */\r
+typedef enum _SECTION_INHERIT\r
+{\r
+    ViewShare = 1,\r
+    ViewUnmap = 2\r
+} SECTION_INHERIT;\r
+\r
+typedef enum _POOL_TYPE\r
+{\r
+    NonPagedPool,\r
+    PagedPool,\r
+    NonPagedPoolMustSucceed,\r
+    DontUseThisType,\r
+    NonPagedPoolCacheAligned,\r
+    PagedPoolCacheAligned,\r
+    NonPagedPoolCacheAlignedMustS,\r
+    MaxPoolType,\r
+    NonPagedPoolSession = 32,\r
+    PagedPoolSession,\r
+    NonPagedPoolMustSucceedSession,\r
+    DontUseThisTypeSession,\r
+    NonPagedPoolCacheAlignedSession,\r
+    PagedPoolCacheAlignedSession,\r
+    NonPagedPoolCacheAlignedMustSSession\r
+} POOL_TYPE;\r
+\r
+typedef enum _EVENT_TYPE\r
+{\r
+    NotificationEvent,\r
+    SynchronizationEvent\r
+} EVENT_TYPE;\r
+\r
+typedef enum _TIMER_TYPE\r
+{\r
+    NotificationTimer,\r
+    SynchronizationTimer\r
+} TIMER_TYPE;\r
+\r
+typedef enum _WAIT_TYPE\r
+{\r
+    WaitAll,\r
+    WaitAny\r
+} WAIT_TYPE;\r
+\r
+typedef enum _INTERFACE_TYPE\r
+{\r
+    InterfaceTypeUndefined = -1,\r
+    Internal,\r
+    Isa,\r
+    Eisa,\r
+    MicroChannel,\r
+    TurboChannel,\r
+    PCIBus,\r
+    VMEBus,\r
+    NuBus,\r
+    PCMCIABus,\r
+    CBus,\r
+    MPIBus,\r
+    MPSABus,\r
+    ProcessorInternal,\r
+    InternalPowerBus,\r
+    PNPISABus,\r
+    PNPBus,\r
+    MaximumInterfaceType\r
+}INTERFACE_TYPE, *PINTERFACE_TYPE;\r
+\r
+typedef enum _MODE\r
+{\r
+    KernelMode,\r
+    UserMode,\r
+    MaximumMode\r
+} MODE;\r
+\r
+typedef enum _KWAIT_REASON\r
+{\r
+    Executive,\r
+    FreePage,\r
+    PageIn,\r
+    PoolAllocation,\r
+    DelayExecution,\r
+    Suspended,\r
+    UserRequest,\r
+    WrExecutive,\r
+    WrFreePage,\r
+    WrPageIn,\r
+    WrPoolAllocation,\r
+    WrDelayExecution,\r
+    WrSuspended,\r
+    WrUserRequest,\r
+    WrEventPair,\r
+    WrQueue,\r
+    WrLpcReceive,\r
+    WrLpcReply,\r
+    WrVirtualMemory,\r
+    WrPageOut,\r
+    WrRendezvous,\r
+    Spare2,\r
+    WrGuardedMutex,\r
+    Spare4,\r
+    Spare5,\r
+    Spare6,\r
+    WrKernel,\r
+    WrResource,\r
+    WrPushLock,\r
+    WrMutex,\r
+    WrQuantumEnd,\r
+    WrDispatchInt,\r
+    WrPreempted,\r
+    WrYieldExecution,\r
+    MaximumWaitReason\r
+} KWAIT_REASON;\r
+\r
+typedef enum _KPROFILE_SOURCE\r
+{\r
+    ProfileTime,\r
+    ProfileAlignmentFixup,\r
+    ProfileTotalIssues,\r
+    ProfilePipelineDry,\r
+    ProfileLoadInstructions,\r
+    ProfilePipelineFrozen,\r
+    ProfileBranchInstructions,\r
+    ProfileTotalNonissues,\r
+    ProfileDcacheMisses,\r
+    ProfileIcacheMisses,\r
+    ProfileCacheMisses,\r
+    ProfileBranchMispredictions,\r
+    ProfileStoreInstructions,\r
+    ProfileFpInstructions,\r
+    ProfileIntegerInstructions,\r
+    Profile2Issue,\r
+    Profile3Issue,\r
+    Profile4Issue,\r
+    ProfileSpecialInstructions,\r
+    ProfileTotalCycles,\r
+    ProfileIcacheIssues,\r
+    ProfileDcacheAccesses,\r
+    ProfileMemoryBarrierCycles,\r
+    ProfileLoadLinkedIssues,\r
+    ProfileMaximum\r
+} KPROFILE_SOURCE;\r
+\r
+/**** Information Classes ****/\r
+\r
+/*\r
+ * File\r
+ */\r
+typedef enum _FILE_INFORMATION_CLASS\r
+{\r
+    FileDirectoryInformation = 1,\r
+    FileFullDirectoryInformation,\r
+    FileBothDirectoryInformation,\r
+    FileBasicInformation,\r
+    FileStandardInformation,\r
+    FileInternalInformation,\r
+    FileEaInformation,\r
+    FileAccessInformation,\r
+    FileNameInformation,\r
+    FileRenameInformation,\r
+    FileLinkInformation,\r
+    FileNamesInformation,\r
+    FileDispositionInformation,\r
+    FilePositionInformation,\r
+    FileFullEaInformation,\r
+    FileModeInformation,\r
+    FileAlignmentInformation,\r
+    FileAllInformation,\r
+    FileAllocationInformation,\r
+    FileEndOfFileInformation,\r
+    FileAlternateNameInformation,\r
+    FileStreamInformation,\r
+    FilePipeInformation,\r
+    FilePipeLocalInformation,\r
+    FilePipeRemoteInformation,\r
+    FileMailslotQueryInformation,\r
+    FileMailslotSetInformation,\r
+    FileCompressionInformation,\r
+    FileObjectIdInformation,\r
+    FileCompletionInformation,\r
+    FileMoveClusterInformation,\r
+    FileQuotaInformation,\r
+    FileReparsePointInformation,\r
+    FileNetworkOpenInformation,\r
+    FileAttributeTagInformation,\r
+    FileTrackingInformation,\r
+    FileIdBothDirectoryInformation,\r
+    FileIdFullDirectoryInformation,\r
+    FileValidDataLengthInformation,\r
+    FileShortNameInformation,\r
+    FileMaximumInformation\r
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;\r
+\r
+/*\r
+ * File System\r
+ */\r
+typedef enum _FSINFOCLASS\r
+{\r
+    FileFsVolumeInformation = 1,\r
+    FileFsLabelInformation,\r
+    FileFsSizeInformation,\r
+    FileFsDeviceInformation,\r
+    FileFsAttributeInformation,\r
+    FileFsControlInformation,\r
+    FileFsFullSizeInformation,\r
+    FileFsObjectIdInformation,\r
+    FileFsDriverPathInformation,\r
+    FileFsMaximumInformation\r
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;\r
+\r
+/*\r
+ * Registry Key\r
+ */\r
+typedef enum _KEY_INFORMATION_CLASS\r
+{\r
+    KeyBasicInformation,\r
+    KeyNodeInformation,\r
+    KeyFullInformation,\r
+    KeyNameInformation,\r
+    KeyCachedInformation,\r
+    KeyFlagsInformation\r
+} KEY_INFORMATION_CLASS;\r
+\r
+/*\r
+ * Registry Key Value\r
+ */\r
+typedef enum _KEY_VALUE_INFORMATION_CLASS\r
+{\r
+    KeyValueBasicInformation,\r
+    KeyValueFullInformation,\r
+    KeyValuePartialInformation,\r
+    KeyValueFullInformationAlign64,\r
+    KeyValuePartialInformationAlign64\r
+} KEY_VALUE_INFORMATION_CLASS;\r
+\r
+/*\r
+ * Registry Key Set\r
+ */\r
+typedef enum _KEY_SET_INFORMATION_CLASS\r
+{\r
+    KeyWriteTimeInformation,\r
+    KeyUserFlagsInformation,\r
+    MaxKeySetInfoClass\r
+} KEY_SET_INFORMATION_CLASS;\r
+\r
+/*\r
+ * Process\r
+ */\r
+typedef enum _PROCESSINFOCLASS\r
+{\r
+    ProcessBasicInformation,\r
+    ProcessQuotaLimits,\r
+    ProcessIoCounters,\r
+    ProcessVmCounters,\r
+    ProcessTimes,\r
+    ProcessBasePriority,\r
+    ProcessRaisePriority,\r
+    ProcessDebugPort,\r
+    ProcessExceptionPort,\r
+    ProcessAccessToken,\r
+    ProcessLdtInformation,\r
+    ProcessLdtSize,\r
+    ProcessDefaultHardErrorMode,\r
+    ProcessIoPortHandlers,\r
+    ProcessPooledUsageAndLimits,\r
+    ProcessWorkingSetWatch,\r
+    ProcessUserModeIOPL,\r
+    ProcessEnableAlignmentFaultFixup,\r
+    ProcessPriorityClass,\r
+    ProcessWx86Information,\r
+    ProcessHandleCount,\r
+    ProcessAffinityMask,\r
+    ProcessPriorityBoost,\r
+    ProcessDeviceMap,\r
+    ProcessSessionInformation,\r
+    ProcessForegroundInformation,\r
+    ProcessWow64Information,\r
+    ProcessImageFileName,\r
+    ProcessLUIDDeviceMapsEnabled,\r
+    ProcessBreakOnTermination,\r
+    ProcessDebugObjectHandle,\r
+    ProcessDebugFlags,\r
+    ProcessHandleTracing,\r
+    MaxProcessInfoClass\r
+} PROCESSINFOCLASS;\r
+\r
+/*\r
+ * Thread\r
+ */\r
+typedef enum _THREADINFOCLASS\r
+{\r
+    ThreadBasicInformation,\r
+    ThreadTimes,\r
+    ThreadPriority,\r
+    ThreadBasePriority,\r
+    ThreadAffinityMask,\r
+    ThreadImpersonationToken,\r
+    ThreadDescriptorTableEntry,\r
+    ThreadEnableAlignmentFaultFixup,\r
+    ThreadEventPair_Reusable,\r
+    ThreadQuerySetWin32StartAddress,\r
+    ThreadZeroTlsCell,\r
+    ThreadPerformanceCount,\r
+    ThreadAmILastThread,\r
+    ThreadIdealProcessor,\r
+    ThreadPriorityBoost,\r
+    ThreadSetTlsArrayAddress,\r
+    ThreadIsIoPending,\r
+    ThreadHideFromDebugger,\r
+    ThreadBreakOnTermination,\r
+    MaxThreadInfoClass\r
+} THREADINFOCLASS;\r
+\r
+/* TYPES *********************************************************************/\r
+\r
+/* Basic Types that aren't defined in User-Mode Headers */\r
+typedef CONST int CINT;\r
+typedef CONST char *PCSZ;\r
+typedef short CSHORT;\r
+typedef CSHORT *PCSHORT;\r
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;\r
+\r
+/* Kernel Types used by Native APIs */\r
+typedef LONG KPRIORITY;\r
+typedef LONG NTSTATUS, *PNTSTATUS;\r
+typedef UCHAR KIRQL, *PKIRQL;\r
+typedef ULONG KAFFINITY, *PKAFFINITY;\r
+typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;\r
+typedef struct _PEB *PPEB;\r
+typedef ULONG KPROCESSOR_MODE;\r
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;\r
+struct _ETHREAD;\r
+struct _CSR_API_MESSAGE;\r
+typedef ULONG EXECUTION_STATE;\r
+\r
+/* Basic NT Types */\r
+#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)\r
+typedef struct _UNICODE_STRING\r
+{\r
+    USHORT Length;\r
+    USHORT MaximumLength;\r
+    PWSTR  Buffer;\r
+} UNICODE_STRING, *PUNICODE_STRING;\r
+typedef const UNICODE_STRING* PCUNICODE_STRING;\r
+\r
+typedef struct _STRING\r
+{\r
+    USHORT Length;\r
+    USHORT MaximumLength;\r
+    PCHAR  Buffer;\r
+} STRING, *PSTRING;\r
+\r
+typedef struct _OBJECT_ATTRIBUTES\r
+{\r
+    ULONG Length;\r
+    HANDLE RootDirectory;\r
+    PUNICODE_STRING ObjectName;\r
+    ULONG Attributes;\r
+    PVOID SecurityDescriptor;\r
+    PVOID SecurityQualityOfService;\r
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;\r
+#endif\r
+\r
+typedef STRING ANSI_STRING;\r
+typedef PSTRING PANSI_STRING;\r
+typedef STRING OEM_STRING;\r
+typedef PSTRING POEM_STRING;\r
+\r
+typedef struct _IO_STATUS_BLOCK\r
+{\r
+    union\r
+    {\r
+        NTSTATUS  Status;\r
+        PVOID  Pointer;\r
+    };\r
+    ULONG_PTR  Information;\r
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;\r
+\r
+typedef VOID\r
+(NTAPI *PIO_APC_ROUTINE)(\r
+    IN PVOID ApcContext,\r
+    IN PIO_STATUS_BLOCK IoStatusBlock,\r
+    IN ULONG Reserved);\r
+\r
+typedef VOID\r
+(NTAPI *PKNORMAL_ROUTINE)(\r
+    IN PVOID  NormalContext,\r
+    IN PVOID  SystemArgument1,\r
+    IN PVOID  SystemArgument2);\r
+\r
+typedef VOID\r
+(NTAPI *PTIMER_APC_ROUTINE)(\r
+    IN PVOID  TimerContext,\r
+    IN ULONG  TimerLowValue,\r
+    IN LONG  TimerHighValue);\r
+\r
+/* Kernel Types which are returned or used by Native API */\r
+typedef struct _OBJECT_NAME_INFORMATION\r
+{\r
+    UNICODE_STRING Name;\r
+} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;\r
+\r
+typedef struct _IO_ERROR_LOG_PACKET\r
+{\r
+    UCHAR MajorFunctionCode;\r
+    UCHAR RetryCount;\r
+    USHORT DumpDataSize;\r
+    USHORT NumberOfStrings;\r
+    USHORT StringOffset;\r
+    USHORT EventCategory;\r
+    NTSTATUS ErrorCode;\r
+    ULONG UniqueErrorValue;\r
+    NTSTATUS FinalStatus;\r
+    ULONG SequenceNumber;\r
+    ULONG IoControlCode;\r
+    LARGE_INTEGER DeviceOffset;\r
+    ULONG DumpData[1];\r
+}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;\r
+\r
+typedef struct _IO_ERROR_LOG_MESSAGE\r
+{\r
+    USHORT Type;\r
+    USHORT Size;\r
+    USHORT DriverNameLength;\r
+    LARGE_INTEGER TimeStamp;\r
+    ULONG DriverNameOffset;\r
+    IO_ERROR_LOG_PACKET EntryData;\r
+} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;\r
+\r
+typedef struct _CLIENT_ID\r
+{\r
+    HANDLE  UniqueProcess;\r
+    HANDLE  UniqueThread;\r
+} CLIENT_ID, *PCLIENT_ID;\r
+\r
+typedef struct _KSYSTEM_TIME\r
+{\r
+    ULONG LowPart;\r
+    LONG High1Time;\r
+    LONG High2Time;\r
+} KSYSTEM_TIME, *PKSYSTEM_TIME;\r
+\r
+typedef struct _TIME_FIELDS\r
+{\r
+    CSHORT Year;\r
+    CSHORT Month;\r
+    CSHORT Day;\r
+    CSHORT Hour;\r
+    CSHORT Minute;\r
+    CSHORT Second;\r
+    CSHORT Milliseconds;\r
+    CSHORT Weekday;\r
+} TIME_FIELDS, *PTIME_FIELDS;\r
+\r
+typedef struct _VM_COUNTERS\r
+{\r
+    SIZE_T PeakVirtualSize;\r
+    SIZE_T VirtualSize;\r
+    ULONG PageFaultCount;\r
+    SIZE_T PeakWorkingSetSize;\r
+    SIZE_T WorkingSetSize;\r
+    SIZE_T QuotaPeakPagedPoolUsage;\r
+    SIZE_T QuotaPagedPoolUsage;\r
+    SIZE_T QuotaPeakNonPagedPoolUsage;\r
+    SIZE_T QuotaNonPagedPoolUsage;\r
+    SIZE_T PagefileUsage;\r
+    SIZE_T PeakPagefileUsage;\r
+} VM_COUNTERS, *PVM_COUNTERS;\r
+\r
+typedef struct _VM_COUNTERS_EX\r
+{\r
+    SIZE_T PeakVirtualSize;\r
+    SIZE_T VirtualSize;\r
+    ULONG PageFaultCount;\r
+    SIZE_T PeakWorkingSetSize;\r
+    SIZE_T WorkingSetSize;\r
+    SIZE_T QuotaPeakPagedPoolUsage;\r
+    SIZE_T QuotaPagedPoolUsage;\r
+    SIZE_T QuotaPeakNonPagedPoolUsage;\r
+    SIZE_T QuotaNonPagedPoolUsage;\r
+    SIZE_T PagefileUsage;\r
+    SIZE_T PeakPagefileUsage;\r
+    SIZE_T PrivateUsage;\r
+} VM_COUNTERS_EX, *PVM_COUNTERS_EX;\r
+\r
+/**** Information Types ****/\r
+\r
+/*\r
+ * Registry Key Set\r
+ */\r
+\r
+/* Class 0 */\r
+typedef struct _KEY_WRITE_TIME_INFORMATION\r
+{\r
+    LARGE_INTEGER LastWriteTime;\r
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;\r
+\r
+/* Class 1 */\r
+typedef struct _KEY_USER_FLAGS_INFORMATION\r
+{\r
+    ULONG UserFlags;\r
+} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;\r
+\r
+typedef struct _KEY_FULL_INFORMATION\r
+{\r
+    LARGE_INTEGER LastWriteTime;\r
+    ULONG TitleIndex;\r
+    ULONG ClassOffset;\r
+    ULONG ClassLength;\r
+    ULONG SubKeys;\r
+    ULONG MaxNameLen;\r
+    ULONG MaxClassLen;\r
+    ULONG Values;\r
+    ULONG MaxValueNameLen;\r
+    ULONG MaxValueDataLen;\r
+    WCHAR Class[1];\r
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;\r
+\r
+typedef struct _KEY_NODE_INFORMATION\r
+{\r
+    LARGE_INTEGER LastWriteTime;\r
+    ULONG TitleIndex;\r
+    ULONG ClassOffset;\r
+    ULONG ClassLength;\r
+    ULONG NameLength;\r
+    WCHAR Name[1];\r
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;\r
+\r
+/*\r
+ * File\r
+ */\r
+\r
+/* Class 1 */\r
+typedef struct _FILE_BASIC_INFORMATION\r
+{\r
+    LARGE_INTEGER CreationTime;\r
+    LARGE_INTEGER LastAccessTime;\r
+    LARGE_INTEGER LastWriteTime;\r
+    LARGE_INTEGER ChangeTime;\r
+    ULONG FileAttributes;\r
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;\r
+\r
+/* Class 2 */\r
+typedef struct _FILE_STANDARD_INFORMATION\r
+{\r
+    LARGE_INTEGER AllocationSize;\r
+    LARGE_INTEGER EndOfFile;\r
+    ULONG NumberOfLinks;\r
+    BOOLEAN DeletePending;\r
+    BOOLEAN Directory;\r
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;\r
+\r
+typedef struct _FILE_NETWORK_OPEN_INFORMATION\r
+{\r
+    LARGE_INTEGER CreationTime;\r
+    LARGE_INTEGER LastAccessTime;\r
+    LARGE_INTEGER LastWriteTime;\r
+    LARGE_INTEGER ChangeTime;\r
+    LARGE_INTEGER AllocationSize;\r
+    LARGE_INTEGER EndOfFile;\r
+    ULONG FileAttributes;\r
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;\r
+\r
+typedef struct _FILE_EA_INFORMATION\r
+{\r
+    ULONG EaSize;\r
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;\r
+\r
+typedef struct _FILE_COMPRESSION_INFORMATION\r
+{\r
+    LARGE_INTEGER   CompressedFileSize;\r
+    USHORT          CompressionFormat;\r
+    UCHAR           CompressionUnitShift;\r
+    UCHAR           ChunkShift;\r
+    UCHAR           ClusterShift;\r
+    UCHAR           Reserved[3];\r
+} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;\r
+\r
+typedef struct _FILE_POSITION_INFORMATION\r
+{\r
+  LARGE_INTEGER  CurrentByteOffset;\r
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;\r
+\r
+typedef struct _FILE_DISPOSITION_INFORMATION\r
+{\r
+    BOOLEAN  DeleteFile;\r
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;\r
+\r
+typedef struct _FILE_FULL_EA_INFORMATION\r
+{\r
+    ULONG NextEntryOffset;\r
+    UCHAR Flags;\r
+    UCHAR EaNameLength;\r
+    USHORT EaValueLength;\r
+    CHAR EaName[1];\r
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;\r
+\r
+typedef struct _FILE_QUOTA_INFORMATION\r
+{\r
+    ULONG NextEntryOffset;\r
+    ULONG SidLength;\r
+    LARGE_INTEGER ChangeTime;\r
+    LARGE_INTEGER QuotaUsed;\r
+    LARGE_INTEGER QuotaThreshold;\r
+    LARGE_INTEGER QuotaLimit;\r
+    SID Sid;\r
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;\r
+\r
+typedef struct _FILE_INTERNAL_INFORMATION\r
+{\r
+    LARGE_INTEGER IndexNumber;\r
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;\r
+\r
+typedef struct _FILE_RENAME_INFORMATION\r
+{\r
+    BOOLEAN ReplaceIfExists;\r
+    HANDLE  RootDirectory;\r
+    ULONG   FileNameLength;\r
+    WCHAR   FileName[1];\r
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;\r
+\r
+typedef struct _FILE_PIPE_INFORMATION\r
+{\r
+    ULONG ReadMode;\r
+    ULONG CompletionMode;\r
+} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;\r
+\r
+typedef struct _FILE_PIPE_LOCAL_INFORMATION\r
+{\r
+    ULONG NamedPipeType;\r
+    ULONG NamedPipeConfiguration;\r
+    ULONG MaximumInstances;\r
+    ULONG CurrentInstances;\r
+    ULONG InboundQuota;\r
+    ULONG ReadDataAvailable;\r
+    ULONG OutboundQuota;\r
+    ULONG WriteQuotaAvailable;\r
+    ULONG NamedPipeState;\r
+    ULONG NamedPipeEnd;\r
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;\r
+\r
+typedef struct _FILE_PIPE_REMOTE_INFORMATION\r
+{\r
+    LARGE_INTEGER   CollectDataTime;\r
+    ULONG           MaximumCollectionCount;\r
+} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;\r
+\r
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION\r
+{\r
+    ULONG           MaximumMessageSize;\r
+    ULONG           MailslotQuota;\r
+    ULONG           NextMessageSize;\r
+    ULONG           MessagesAvailable;\r
+    LARGE_INTEGER   ReadTimeout;\r
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;\r
+\r
+typedef struct _FILE_MAILSLOT_SET_INFORMATION\r
+{\r
+    LARGE_INTEGER ReadTimeout;\r
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;\r
+\r
+typedef struct _FILE_BOTH_DIR_INFORMATION\r
+{\r
+    ULONG NextEntryOffset;\r
+    ULONG FileIndex;\r
+    LARGE_INTEGER CreationTime;\r
+    LARGE_INTEGER LastAccessTime;\r
+    LARGE_INTEGER LastWriteTime;\r
+    LARGE_INTEGER ChangeTime;\r
+    LARGE_INTEGER EndOfFile;\r
+    LARGE_INTEGER AllocationSize;\r
+    ULONG FileAttributes;\r
+    ULONG FileNameLength;\r
+    ULONG EaSize;\r
+    CCHAR ShortNameLength;\r
+    WCHAR ShortName[12];\r
+    WCHAR FileName[1];\r
+} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;\r
+\r
+typedef struct _FILE_COMPLETION_INFORMATION\r
+{\r
+    HANDLE Port;\r
+    PVOID Key;\r
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;\r
+\r
+typedef struct _FILE_LINK_INFORMATION\r
+{\r
+    BOOLEAN ReplaceIfExists;\r
+    HANDLE RootDirectory;\r
+    ULONG FileNameLength;\r
+    WCHAR FileName[1];\r
+} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;\r
+\r
+typedef struct _FILE_NAME_INFORMATION\r
+{\r
+    ULONG FileNameLength;\r
+    WCHAR FileName[1];\r
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;\r
+\r
+typedef struct _FILE_ALLOCATION_INFORMATION\r
+{\r
+    LARGE_INTEGER AllocationSize;\r
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;\r
+\r
+typedef struct _FILE_END_OF_FILE_INFORMATION\r
+{\r
+    LARGE_INTEGER EndOfFile;\r
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;\r
+\r
+typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION\r
+{\r
+    LARGE_INTEGER ValidDataLength;\r
+} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;\r
+\r
+/*\r
+ * File System\r
+ */\r
+typedef struct _FILE_FS_DEVICE_INFORMATION\r
+{\r
+    DEVICE_TYPE DeviceType;\r
+    ULONG Characteristics;\r
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;\r
+\r
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION\r
+{\r
+    ULONG FileSystemAttributes;\r
+    ULONG MaximumComponentNameLength;\r
+    ULONG FileSystemNameLength;\r
+    WCHAR FileSystemName[1];\r
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;\r
+\r
+typedef struct _FILE_FS_SIZE_INFORMATION\r
+{\r
+    LARGE_INTEGER TotalAllocationUnits;\r
+    LARGE_INTEGER AvailableAllocationUnits;\r
+    ULONG SectorsPerAllocationUnit;\r
+    ULONG BytesPerSector;\r
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;\r
+\r
+typedef struct _FILE_FS_LABEL_INFORMATION\r
+{\r
+    ULONG VolumeLabelLength;\r
+    WCHAR VolumeLabel[1];\r
+} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;\r
+\r
+typedef struct _FILE_FS_VOLUME_INFORMATION\r
+{\r
+    LARGE_INTEGER VolumeCreationTime;\r
+    ULONG VolumeSerialNumber;\r
+    ULONG VolumeLabelLength;\r
+    BOOLEAN SupportsObjects;\r
+    WCHAR VolumeLabel[1];\r
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;\r
+\r
+/*\r
+ * Registry Key Value\r
+ */\r
+\r
+/* Class 0 */\r
+typedef struct _KEY_VALUE_ENTRY\r
+{\r
+    PUNICODE_STRING ValueName;\r
+    ULONG DataLength;\r
+    ULONG DataOffset;\r
+    ULONG Type;\r
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;\r
+\r
+/* Class 1 */\r
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION\r
+{\r
+    ULONG TitleIndex;\r
+    ULONG Type;\r
+    ULONG DataLength;\r
+    UCHAR Data[1];\r
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;\r
+\r
+/* Class 2 */\r
+typedef struct _KEY_VALUE_BASIC_INFORMATION\r
+{\r
+    ULONG TitleIndex;\r
+    ULONG Type;\r
+    ULONG NameLength;\r
+    WCHAR Name[1];\r
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;\r
+\r
+/* Class 3 */\r
+typedef struct _KEY_VALUE_FULL_INFORMATION\r
+{\r
+    ULONG TitleIndex;\r
+    ULONG Type;\r
+    ULONG DataOffset;\r
+    ULONG DataLength;\r
+    ULONG NameLength;\r
+    WCHAR Name[1];\r
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;\r
+\r
+/*\r
+ * Registry Key\r
+ */\r
+\r
+/* Class 0 */\r
+typedef struct _KEY_BASIC_INFORMATION\r
+{\r
+    LARGE_INTEGER LastWriteTime;\r
+    ULONG TitleIndex;\r
+    ULONG NameLength;\r
+    WCHAR Name[1];\r
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;\r
+\r
+/* File Pipe Structures for the FSCTLs */\r
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER\r
+{\r
+    LARGE_INTEGER   Timeout;\r
+    ULONG           NameLength;\r
+    BOOLEAN         TimeoutSpecified;\r
+    WCHAR           Name[1];\r
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;\r
+\r
+typedef struct _FILE_PIPE_PEEK_BUFFER\r
+{\r
+    ULONG NamedPipeState;\r
+    ULONG ReadDataAvailable;\r
+    ULONG NumberOfMessages;\r
+    ULONG MessageLength;\r
+    CHAR Data[1];\r
+} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;\r
+\r
+/* The Kerner/User Shared Data Structure */\r
+typedef struct _KUSER_SHARED_DATA\r
+{\r
+    ULONG TickCountLowDeprecated;\r
+    ULONG TickCountMultiplier;\r
+    volatile KSYSTEM_TIME InterruptTime;\r
+    volatile KSYSTEM_TIME SystemTime;\r
+    volatile KSYSTEM_TIME TimeZoneBias;\r
+    USHORT ImageNumberLow;\r
+    USHORT ImageNumberHigh;\r
+    WCHAR NtSystemRoot[260];\r
+    ULONG MaxStackTraceDepth;\r
+    ULONG CryptoExponent;\r
+    ULONG TimeZoneId;\r
+    ULONG LargePageMinimum;\r
+    ULONG Reserved2[7];\r
+    NT_PRODUCT_TYPE NtProductType;\r
+    BOOLEAN ProductTypeIsValid;\r
+    ULONG NtMajorVersion;\r
+    ULONG NtMinorVersion;\r
+    BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];\r
+    ULONG Reserved1;\r
+    ULONG Reserved3;\r
+    volatile ULONG TimeSlip;\r
+    ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;\r
+    LARGE_INTEGER SystemExpirationDate;\r
+    ULONG SuiteMask;\r
+    BOOLEAN KdDebuggerEnabled;\r
+    volatile ULONG ActiveConsoleId;\r
+    volatile ULONG DismountCount;\r
+    ULONG ComPlusPackage;\r
+    ULONG LastSystemRITEventTickCount;\r
+    ULONG NumberOfPhysicalPages;\r
+    BOOLEAN SafeBootMode;\r
+    ULONG TraceLogging;\r
+    ULONGLONG Fill0;\r
+    ULONGLONG SystemCall[4];\r
+    union {\r
+        volatile KSYSTEM_TIME TickCount;\r
+        volatile ULONG64 TickCountQuad;\r
+    };\r
+} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;\r
+\r
+/* Run-Time Library (RTL) Types */\r
+typedef struct _RTL_BITMAP\r
+{\r
+    ULONG SizeOfBitMap;\r
+    PULONG Buffer;\r
+} RTL_BITMAP, *PRTL_BITMAP;\r
+\r
+typedef struct _RTL_BITMAP_RUN\r
+{\r
+    ULONG StartingIndex;\r
+    ULONG NumberOfBits;\r
+} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;\r
+\r
+typedef struct _COMPRESSED_DATA_INFO\r
+{\r
+    USHORT  CompressionFormatAndEngine;\r
+    UCHAR   CompressionUnitShift;\r
+    UCHAR   ChunkShift;\r
+    UCHAR   ClusterShift;\r
+    UCHAR   Reserved;\r
+    USHORT  NumberOfChunks;\r
+    ULONG   CompressedChunkSizes[ANYSIZE_ARRAY];\r
+} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;\r
+\r
+typedef struct _GENERATE_NAME_CONTEXT\r
+{\r
+    USHORT  Checksum;\r
+    BOOLEAN CheckSumInserted;\r
+    UCHAR   NameLength;\r
+    WCHAR   NameBuffer[8];\r
+    ULONG   ExtensionLength;\r
+    WCHAR   ExtensionBuffer[4];\r
+    ULONG   LastIndexValue;\r
+} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;\r
+\r
+typedef struct _RTL_SPLAY_LINKS\r
+{\r
+    struct _RTL_SPLAY_LINKS *Parent;\r
+    struct _RTL_SPLAY_LINKS *LeftChild;\r
+    struct _RTL_SPLAY_LINKS *RightChild;\r
+} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;\r
+\r
+struct _RTL_AVL_TABLE;\r
+struct _RTL_GENERIC_TABLE;\r
+\r
+typedef NTSTATUS\r
+(NTAPI *PRTL_AVL_MATCH_FUNCTION)(\r
+    struct _RTL_AVL_TABLE *Table,\r
+    PVOID UserData,\r
+    PVOID MatchData\r
+);\r
+\r
+typedef RTL_GENERIC_COMPARE_RESULTS\r
+(NTAPI *PRTL_AVL_COMPARE_ROUTINE) (\r
+    struct _RTL_AVL_TABLE *Table,\r
+    PVOID FirstStruct,\r
+    PVOID SecondStruct\r
+);\r
+\r
+typedef RTL_GENERIC_COMPARE_RESULTS\r
+(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (\r
+    struct _RTL_GENERIC_TABLE *Table,\r
+    PVOID FirstStruct,\r
+    PVOID SecondStruct\r
+);\r
+\r
+typedef PVOID\r
+(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (\r
+    struct _RTL_GENERIC_TABLE *Table,\r
+    LONG ByteSize\r
+);\r
+\r
+typedef VOID\r
+(NTAPI *PRTL_GENERIC_FREE_ROUTINE) (\r
+    struct _RTL_GENERIC_TABLE *Table,\r
+    PVOID Buffer\r
+);\r
+\r
+typedef VOID\r
+(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (\r
+    struct _RTL_AVL_TABLE *Table,\r
+    LONG ByteSize\r
+);\r
+\r
+typedef VOID\r
+(NTAPI *PRTL_AVL_FREE_ROUTINE) (\r
+    struct _RTL_AVL_TABLE *Table,\r
+    PVOID Buffer\r
+);\r
+\r
+typedef struct _RTL_GENERIC_TABLE\r
+{\r
+    PRTL_SPLAY_LINKS TableRoot;\r
+    LIST_ENTRY InsertOrderList;\r
+    PLIST_ENTRY OrderedPointer;\r
+    ULONG WhichOrderedElement;\r
+    ULONG NumberGenericTableElements;\r
+    PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;\r
+    PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;\r
+    PRTL_GENERIC_FREE_ROUTINE FreeRoutine;\r
+    PVOID TableContext;\r
+} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;\r
+\r
+typedef struct _RTL_BALANCED_LINKS\r
+{\r
+    struct _RTL_BALANCED_LINKS *Parent;\r
+    struct _RTL_BALANCED_LINKS *LeftChild;\r
+    struct _RTL_BALANCED_LINKS *RightChild;\r
+    CHAR Balance;\r
+    UCHAR Reserved[3];\r
+} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;\r
+\r
+typedef struct _RTL_AVL_TABLE\r
+{\r
+    RTL_BALANCED_LINKS BalancedRoot;\r
+    PVOID OrderedPointer;\r
+    ULONG WhichOrderedElement;\r
+    ULONG NumberGenericTableElements;\r
+    ULONG DepthOfTree;\r
+    PRTL_BALANCED_LINKS RestartKey;\r
+    ULONG DeleteCount;\r
+    PRTL_AVL_COMPARE_ROUTINE CompareRoutine;\r
+    PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;\r
+    PRTL_AVL_FREE_ROUTINE FreeRoutine;\r
+    PVOID TableContext;\r
+} RTL_AVL_TABLE, *PRTL_AVL_TABLE;\r
+\r
+typedef NTSTATUS\r
+(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(\r
+    IN PWSTR ValueName,\r
+    IN ULONG ValueType,\r
+    IN PVOID ValueData,\r
+    IN ULONG ValueLength,\r
+    IN PVOID Context,\r
+    IN PVOID EntryContext\r
+);\r
+\r
+typedef struct _RTL_QUERY_REGISTRY_TABLE\r
+{\r
+    PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;\r
+    ULONG Flags;\r
+    PWSTR Name;\r
+    PVOID EntryContext;\r
+    ULONG DefaultType;\r
+    PVOID DefaultData;\r
+    ULONG DefaultLength;\r
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;\r
+\r
+typedef struct _UNICODE_PREFIX_TABLE_ENTRY\r
+{\r
+    CSHORT NodeTypeCode;\r
+    CSHORT NameLength;\r
+    struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;\r
+    struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;\r
+    RTL_SPLAY_LINKS Links;\r
+    PUNICODE_STRING Prefix;\r
+} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;\r
+\r
+typedef struct _UNICODE_PREFIX_TABLE\r
+{\r
+    CSHORT NodeTypeCode;\r
+    CSHORT NameLength;\r
+    PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;\r
+    PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;\r
+} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;\r
+\r
+/* FIXME - need FAST_MUTEX and PHANDLE_TABLE for RTL_ATOM_TABLE in umode! */\r
+typedef void *FAST_MUTEX;\r
+typedef void *PHANDLE_TABLE;\r
+\r
+typedef OSVERSIONINFOW RTL_OSVERSIONINFOW;\r
+typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;\r
+typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;\r
+typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;\r
+\r
+#endif\r
index 0a19fbb..fc0992c 100644 (file)
@@ -4025,7 +4025,7 @@ ZwYieldExecution(
 );\r
 \r
 \r
-static inline struct _PEB * NtCurrentPeb(void)\r
+static __inline struct _PEB* NtCurrentPeb (void) \r
 {\r
     struct _PEB * pPeb;\r
 \r
index 2f1ab2c..dab53c5 100644 (file)
@@ -11,7 +11,7 @@
 
 /* DEPENDENCIES **************************************************************/
 #include "rtltypes.h"
-#include <ddk/cfg.h>
+#include <cfg.h>
 
 /* EXPORTED DATA *************************************************************/
 
@@ -820,6 +820,7 @@ typedef struct _SYSTEM_RESOURCE_LOCK_INFO
 /* Class 13 */
 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
 {
+    ULONG Dummy;
     /* FIXME */
 } SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY;
 
index 6d29b2f..ba038e4 100644 (file)
@@ -63,7 +63,7 @@
 #endif
 
 #ifndef NDEBUG
-#define DPRINT(args...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0);
+#define DPRINT(...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(__VA_ARGS__); } while(0);
 #define CHECKPOINT do { DbgPrint("%s:%d\n",__FILE__,__LINE__); } while(0);
 #else
 #ifdef __GNUC__
index 6266959..0a9c72d 100644 (file)
@@ -41,7 +41,8 @@
 #define SECONDS_TO_100NS(seconds) (((LONGLONG)(seconds)) * MILLIS_TO_100NS(1000))
 #define MINUTES_TO_100NS(minutes) (((LONGLONG)(minutes)) * SECONDS_TO_100NS(60))
 #define HOURS_TO_100NS(hours) (((LONGLONG)(hours)) * MINUTES_TO_100NS(60))
-#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
+#define UNICODIZE1(x) L##x\r
+#define UNICODIZE(x) UNICODIZE1(x)
 #define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
 {\
   PLIST_ENTRY current;\
index c0c576b..c7737f8 100644 (file)
@@ -22,10 +22,11 @@ typedef ULONG CSR_API_NUMBER;
 
 #define CSR_CSRSS_SECTION_SIZE          (65536)
 
-typedef __declspec(noreturn) VOID CALLBACK(*PCONTROLDISPATCHER)(DWORD);
+typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
 
 typedef struct
 {
+    ULONG Dummy;
 } CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
 
 typedef struct
@@ -40,6 +41,7 @@ typedef struct
 
 typedef struct
 {
+    ULONG Dummy;
 } CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
 
 typedef struct
@@ -80,6 +82,7 @@ typedef struct
 
 typedef struct
 {
+    ULONG Dummy;
 } CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
 
 typedef struct
index 465f9fa..b0035cc 100644 (file)
@@ -16,7 +16,7 @@ unsigned long DbgPrint(char *Format,...);
 #ifdef DBG
 #define DPRINT1 DbgPrint("(%s:%d:%s) ",__FILE__,__LINE__,__FUNCTION__), DbgPrint
 #else
-#define DPRINT1(args...)
+#define DPRINT1(...)
 #endif
 
 #if !defined(DBG) || !defined(YDEBUG)
index 32955f4..c0e9f94 100644 (file)
 #define WINE_UNICODE_API __attribute__((dllimport))
 #endif
 
-static inline WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
+static __inline WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
 {
     for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)str;
     return NULL;
 }
 
-static inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+static __inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
 {
     const WCHAR *end;
     for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)ptr;
     return NULL;
 }
 
-static inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+static __inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
 {
     const WCHAR *end, *ret = NULL;
     for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) ret = ptr;
index ac37127..72be294 100644 (file)
@@ -8,6 +8,9 @@
 
 /* INCLUDES ******************************************************************/
 
+/* C Headers */
+#include <stdio.h>
+
 /* PSDK/NDK Headers */
 #include <windows.h>
 #include <ntsecapi.h>
index c672d9a..e8790e3 100644 (file)
@@ -245,7 +245,7 @@ MakeAbsoluteSD (
 {
        NTSTATUS Status;
 
-       Status = RtlSelfRelativeToAbsoluteSD ((PSECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor,
+       Status = RtlSelfRelativeToAbsoluteSD ((PISECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor,
                                              pAbsoluteSecurityDescriptor,
                                              lpdwAbsoluteSecurityDescriptorSize,
                                              pDacl,
@@ -280,7 +280,7 @@ MakeSelfRelativeSD (
        NTSTATUS Status;
 
        Status = RtlAbsoluteToSelfRelativeSD (pAbsoluteSecurityDescriptor,
-                                             (PSECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor,
+                                             (PISECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor,
                                              (PULONG)lpdwBufferLength);
        if (!NT_SUCCESS(Status))
        {
index e7f41a5..fc97571 100644 (file)
@@ -1,3 +1,4 @@
+#include <ctype.h>
 #include <windows.h>
 #include <winerror.h>
 #include <windns.h>
index 107869a..c91b62f 100644 (file)
@@ -16,7 +16,7 @@
 /*
  * @implemented
  */
-BOOL WINAPI DebugBreakProcess(HANDLE Process)
+WINBASEAPI BOOL WINAPI DebugBreakProcess(HANDLE Process)
 {
  NTSTATUS nErrCode = DbgUiIssueRemoteBreakin(Process);
 
index a29b1f2..e46bf48 100644 (file)
@@ -169,8 +169,8 @@ FindNextChangeNotification (
 }
 
 
-extern VOID STDCALL
-(ApcRoutine)(PVOID ApcContext,
+extern VOID
+(STDCALL ApcRoutine)(PVOID ApcContext,
       struct _IO_STATUS_BLOCK* IoStatusBlock,
       ULONG Reserved);
 
index 7859ec5..6255ed4 100644 (file)
@@ -166,7 +166,7 @@ GetTempPathW (
    WCHAR tmp_full_path[MAX_PATH];
    UINT ret;
 
-   DPRINT("GetTempPathW(%lu,%p)\n", nBufferLength, lpBuffer);
+   DPRINT("GetTempPathW(%lu,%p)\n", count, path);
 
    if (!(ret = GetEnvironmentVariableW( L"TMP", tmp_path, MAX_PATH )))
      if (!(ret = GetEnvironmentVariableW( L"TEMP", tmp_path, MAX_PATH )))
index 6adf65c..5913ba4 100644 (file)
@@ -60,13 +60,8 @@ CreateIoCompletionPort(
 
    if ( FileHandle != INVALID_HANDLE_VALUE )
    {
-#ifdef __USE_W32API
       CompletionInformation.Port = CompletionPort;
       CompletionInformation.Key  = (PVOID)CompletionKey;
-#else
-      CompletionInformation.IoCompletionHandle = CompletionPort;
-      CompletionInformation.CompletionKey  = CompletionKey;
-#endif
 
       errCode = NtSetInformationFile(FileHandle,
                                      &IoStatusBlock,
index 21bdbcf..495520b 100644 (file)
@@ -4,14 +4,18 @@
 #define UNIMPLEMENTED DbgPrint("%s at %s:%d is unimplemented\n",__FUNCTION__,__FILE__,__LINE__);
 
 #ifdef NDEBUG
+#ifdef __GNUC__
 #define DPRINT(args...)
+#else
+#define DPRINT
+#endif
 #define CHECKPOINT
 #ifdef ASSERT
 #undef ASSERT
 #endif
 #define ASSERT(x)
 #else
-#define DPRINT(args...) do { DbgPrint("(KERNEL32:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0);
+#define DPRINT(...) do { DbgPrint("(KERNEL32:%s:%d) ",__FILE__,__LINE__); DbgPrint(__VA_ARGS__); } while(0);
 #define CHECKPOINT do { DbgPrint("(KERNEL32:%s:%d) Checkpoint\n",__FILE__,__LINE__); } while(0);
 #ifdef ASSERT
 #undef ASSERT
@@ -19,7 +23,7 @@
 #define ASSERT(x) do { if(!x) RtlAssert("#x", __FILE__,__LINE__, ""); } while(0);
 #endif
 
-#define DPRINT1(args...) do { DbgPrint("(KERNEL32:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0);
+#define DPRINT1(...) do { DbgPrint("(KERNEL32:%s:%d) ",__FILE__,__LINE__); DbgPrint(__VA_ARGS__); } while(0);
 #define CHECKPOINT1 do { DbgPrint("(KERNEL32:%s:%d) Checkpoint\n",__FILE__,__LINE__); } while(0);
 
 #endif /* ndef _KERNEL32_INCLUDE_DEBUG_H */
index f11728e..eb9af71 100755 (executable)
@@ -9,20 +9,23 @@
 /* INCLUDES ******************************************************************/
 
 /* PSDK/NDK Headers */
-#include <windows.h>
 #define NTOS_MODE_USER
+#define _KERNEL32_
+#define _WMIKM_
+#include <windows.h>
 #include <ndk/ntndk.h>
 
 /* CSRSS Header */
 #include <csrss/csrss.h>
 
 /* C Headers */
+#include <ctype.h>
+#include <stdio.h>
 #include <wchar.h>
 
 /* DDK Driver Headers */
-#include <ddk/ntddbeep.h>
-#include <ddk/ntddser.h>
-#include <ddk/ntddtape.h>
+#include <ntddbeep.h>
+#include <ntddser.h>
 
 /* Internal Kernel32 Header */
 #include "include/kernel32.h"
index 3cc67b3..b782d9f 100644 (file)
@@ -4,6 +4,7 @@
 #define REACTOS_STR_ORIGINAL_FILENAME  "kernel32.dll\0"
 #include <reactos/version.rc>
 
+#include "windows.h"
 #include "errcodes.rc"
 
 #include "locale_rc.rc"
index 3bb5f72..d549ecc 100644 (file)
@@ -574,7 +574,7 @@ COMMDCB_PARAM_HANDLER(xon)
 /* FUNCTIONS */
 #define COMMDCB_PARAM(__P__) \
  { \
-  RTL_CONSTANT_STRING( L""#__P__ ), \
+  RTL_CONSTANT_STRING(L""#__P__ ), \
   (ULONG_PTR)&COMMDCB_ ## __P__ ## Param \
  }
 
index 16e4a73..8513443 100644 (file)
@@ -516,13 +516,14 @@ GetConsoleFontInfo (DWORD Unknown0,
 /*
  * @unimplemented
  */
-DWORD STDCALL
+COORD STDCALL
 GetConsoleFontSize(HANDLE hConsoleOutput,
                   DWORD nFont)
 {
+  COORD Empty = {0, 0};
   DPRINT1("GetConsoleFontSize(0x%x, 0x%x) UNIMPLEMENTED!\n", hConsoleOutput, nFont);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
+  return Empty ;
 }
 
 
index 1909036..ce53a1c 100644 (file)
@@ -33,7 +33,7 @@
 
 /* strdup macros */
 /* DO NOT USE IT!!  it will go away soon */
-inline static LPSTR HEAP_strdupWtoA( HANDLE heap, DWORD flags, LPCWSTR str )
+__inline static LPSTR HEAP_strdupWtoA( HANDLE heap, DWORD flags, LPCWSTR str )
 {
     LPSTR ret;
     INT len;
index bf8b079..66f0baf 100644 (file)
@@ -769,7 +769,7 @@ GetLocaleInfoW (
  *
  * Retrieve the ANSI codepage for a given locale.
  */
-inline static UINT get_lcid_codepage( LCID lcid )
+__inline static UINT get_lcid_codepage( LCID lcid )
 {
     UINT ret;
     if (!GetLocaleInfoW( lcid, LOCALE_IDEFAULTANSICODEPAGE|LOCALE_RETURN_NUMBER, (WCHAR *)&ret,
index 4c3ff31..9bb8c89 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
  *
  */
-#include <windows.h>
+#include <k32.h>
 
 
 /***********************************************************************
index 6a1dbde..da88fd7 100755 (executable)
@@ -879,7 +879,7 @@ GetOEMCP (VOID)
     return OemCodePage.CodePageTable.CodePage;
 }
 
-static inline BOOL
+static __inline BOOL
 IntIsLeadByte(PCPTABLEINFO TableInfo, UCHAR Ch)
 {
   if(TableInfo->MaximumCharacterSize == 2)
index f380cc6..f124dd5 100644 (file)
@@ -22,7 +22,7 @@
 #include <k32.h>
 
 #define NDEBUG
-#include "debug.h"
+#include "../include/debug.h"
 
 
 static const char bom_utf8[] = {0xEF,0xBB,0xBF};
@@ -84,7 +84,7 @@ static RTL_CRITICAL_SECTION PROFILE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0
 static const char hex[16] = "0123456789ABCDEF";
 
 
-static inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+static __inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
 {
     const WCHAR *end;
     for (end = ptr + n; ptr < end; ptr++)
@@ -93,7 +93,7 @@ static inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
     return NULL;
 }
 
-static inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+static __inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
 {
     const WCHAR *end, *ret = NULL;
     for (end = ptr + n; ptr < end; ptr++)
@@ -129,7 +129,7 @@ static void PROFILE_CopyEntry( LPWSTR buffer, LPCWSTR value, int len,
 
 
 /* byte-swaps shorts in-place in a buffer. len is in WCHARs */
-static inline void PROFILE_ByteSwapShortBuffer(WCHAR * buffer, int len)
+static __inline void PROFILE_ByteSwapShortBuffer(WCHAR * buffer, int len)
 {
     int i;
     USHORT * shortbuffer = (USHORT *)buffer;
@@ -139,7 +139,7 @@ static inline void PROFILE_ByteSwapShortBuffer(WCHAR * buffer, int len)
 
 
 /* writes any necessary encoding marker to the file */
-static inline void PROFILE_WriteMarker(HANDLE hFile, ENCODING encoding)
+static __inline void PROFILE_WriteMarker(HANDLE hFile, ENCODING encoding)
 {
     DWORD dwBytesWritten;
     DWORD bom;
@@ -288,7 +288,7 @@ static void PROFILE_Free( PROFILESECTION *section )
 
 
 /* returns 1 if a character white space else 0 */
-static inline int PROFILE_isspaceW(WCHAR c)
+static __inline int PROFILE_isspaceW(WCHAR c)
 {
    if (iswspace(c))
        return 1;
@@ -299,7 +299,7 @@ static inline int PROFILE_isspaceW(WCHAR c)
 }
 
 
-static inline ENCODING PROFILE_DetectTextEncoding(const void * buffer, int * len)
+static __inline ENCODING PROFILE_DetectTextEncoding(const void * buffer, int * len)
 {
     DWORD flags = IS_TEXT_UNICODE_SIGNATURE |
                   IS_TEXT_UNICODE_REVERSE_SIGNATURE |
index eb7b7d2..1db661d 100644 (file)
@@ -11,7 +11,7 @@
 #include <k32.h>
 
 #define NDEBUG
-#include <debug.h>
+#include "../include/debug.h"
 
 /* FUNCTIONS ****************************************************************/
 
index 61c4987..2f8db08 100644 (file)
@@ -43,7 +43,6 @@ GetVersion(VOID)
   return nVersion;
 }
 
-
 /*
  * @implemented
  */
@@ -83,7 +82,7 @@ GetVersionExW(
       PWCHAR szVer = lpVersionInformation->szCSDVersion + ln;
       RtlZeroMemory(szVer, (maxlen - ln + 1) * sizeof(WCHAR));
       wcsncpy(szVer,
-              L"ReactOS " KERNEL_VERSION_STR L" (Build " KERNEL_VERSION_BUILD_STR L")",
+              L"ReactOS " UNICODIZE(KERNEL_VERSION_STR) L" (Build " UNICODIZE(KERNEL_VERSION_BUILD_STR) L")",
               maxlen - ln);
     }
 
index 8681759..e493670 100644 (file)
@@ -1,5 +1,4 @@
-#include <windows.h>
-#include "regtests.h"
+#include <k32.h>
 
 int
 mainCRTStartup(int argc, char *argv[])
index 4dc153d..def5133 100644 (file)
@@ -1,6 +1,7 @@
-#include "../../k32.h"
-#include "regtests.h"
+#include <k32.h>
 
+#ifdef __GNUC__
+#include "regtests.h"
 #define NDEBUG
 #include "../../include/debug.h"
 
@@ -124,3 +125,5 @@ static void RunTest()
 }
 
 _Dispatcher(CreatefileTest, "CreateFileW")
+
+#endif
index 5d86b05..2ce97e4 100644 (file)
@@ -8,6 +8,10 @@
 
 /* INCLUDES ******************************************************************/
 
+/* C Headers */
+#include <stdio.h>
+#include <ctype.h>
+
 /* SDK/DDK/NDK Headers. */
 #include <windows.h>
 #define NTOS_MODE_USER
index 38ce211..4871621 100644 (file)
@@ -8,6 +8,9 @@
 
 /* INCLUDES ******************************************************************/
 
+/* C Headers */
+#include <stdio.h>
+
 /* PSDK/NDK Headers */
 #include <windows.h>
 #define NTOS_MODE_USER
index 836e7ba..19a4ee5 100644 (file)
@@ -28,7 +28,7 @@ RtlpQuerySecurityDescriptorPointers(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
 {
   if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
   {
-    PSECURITY_DESCRIPTOR_RELATIVE RelSD = (PSECURITY_DESCRIPTOR_RELATIVE)SecurityDescriptor;
+    PISECURITY_DESCRIPTOR_RELATIVE RelSD = (PISECURITY_DESCRIPTOR_RELATIVE)SecurityDescriptor;
     if(Owner != NULL)
     {
       *Owner = ((RelSD->Owner != 0) ? (PSID)((ULONG_PTR)RelSD + RelSD->Owner) : NULL);
@@ -134,7 +134,7 @@ RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
 
 
 NTSTATUS STDCALL
-RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+RtlCreateSecurityDescriptorRelative (PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
                                     ULONG Revision)
 {
    PAGED_CODE_RTL();
@@ -429,7 +429,7 @@ RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
  */
 NTSTATUS STDCALL
 RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
-                     PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+                     PISECURITY_DESCRIPTOR_RELATIVE RelSD,
                      PULONG BufferLength)
 {
    PSID Owner;
@@ -514,7 +514,7 @@ RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
  */
 NTSTATUS STDCALL
 RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
-                            PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+                            PISECURITY_DESCRIPTOR_RELATIVE RelSD,
                             PULONG BufferLength)
 {
    PAGED_CODE_RTL();
@@ -655,7 +655,7 @@ RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
  * @implemented
  */
 NTSTATUS STDCALL
-RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+RtlSelfRelativeToAbsoluteSD(PISECURITY_DESCRIPTOR_RELATIVE RelSD,
                             PSECURITY_DESCRIPTOR AbsSD,
                             PDWORD AbsSDSize,
                             PACL Dacl,
@@ -732,7 +732,7 @@ RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR_RELATIVE RelSD,
  * @unimplemented
  */
 NTSTATUS STDCALL
-RtlSelfRelativeToAbsoluteSD2(PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+RtlSelfRelativeToAbsoluteSD2(PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
                              PULONG BufferSize)
 {
    UNIMPLEMENTED;
@@ -744,7 +744,7 @@ RtlSelfRelativeToAbsoluteSD2(PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityD
  * @implemented
  */
 BOOLEAN STDCALL
-RtlValidRelativeSecurityDescriptor(IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+RtlValidRelativeSecurityDescriptor(IN PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
                                    IN ULONG SecurityDescriptorLength,
                                    IN SECURITY_INFORMATION RequiredInformation)
 {
index e57d0a2..62bc4cc 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index 904ed69..bf0b862 100644 (file)
@@ -176,6 +176,7 @@ typedef struct _MEMORY_AREA
   } Data;
 } MEMORY_AREA, *PMEMORY_AREA;
 
+#ifndef _MMTYPES_H
 typedef struct _MADDRESS_SPACE
 {
   PMEMORY_AREA MemoryAreaRoot;
@@ -185,6 +186,7 @@ typedef struct _MADDRESS_SPACE
   PUSHORT PageTableRefCountTable;
   ULONG PageTableRefCountTableSize;
 } MADDRESS_SPACE, *PMADDRESS_SPACE;
+#endif
 
 typedef struct
 {
index 7ac2948..e7aef11 100755 (executable)
@@ -11,9 +11,6 @@
 /* We are the Kernel */
 #define NTKERNELAPI
 
-/* include the ntoskrnl config.h file */
-#include "config.h"
-
 /* DDK/IFS/NDK Headers */
 #include <ddk/ntddk.h>
 #include <ddk/ntifs.h>
@@ -37,6 +34,8 @@
 #include <diskdump/diskdump.h>
 
 /* C Headers */
+#include <stdio.h>
+#include <ctype.h>
 #include <malloc.h>
 #include <wchar.h>
 
@@ -48,3 +47,4 @@
 
 /* Internal Headers */
 #include "internal/ntoskrnl.h"
+#include "config.h"
index 404744a..2da705f 100644 (file)
@@ -404,7 +404,7 @@ SeCaptureSecurityDescriptor(
                      sizeof(ULONG));
         if(DescriptorCopy.Control & SE_SELF_RELATIVE)
         {
-          PSECURITY_DESCRIPTOR_RELATIVE RelSD = (PSECURITY_DESCRIPTOR_RELATIVE)OriginalSecurityDescriptor;
+          PISECURITY_DESCRIPTOR_RELATIVE RelSD = (PISECURITY_DESCRIPTOR_RELATIVE)OriginalSecurityDescriptor;
 
           DescriptorCopy.Owner = (PSID)RelSD->Owner;
           DescriptorCopy.Group = (PSID)RelSD->Group;
@@ -455,7 +455,7 @@ SeCaptureSecurityDescriptor(
                         sizeof(SECURITY_DESCRIPTOR_RELATIVE) : sizeof(SECURITY_DESCRIPTOR));
       if(DescriptorCopy.Control & SE_SELF_RELATIVE)
       {
-        PSECURITY_DESCRIPTOR_RELATIVE RelSD = (PSECURITY_DESCRIPTOR_RELATIVE)OriginalSecurityDescriptor;
+        PISECURITY_DESCRIPTOR_RELATIVE RelSD = (PISECURITY_DESCRIPTOR_RELATIVE)OriginalSecurityDescriptor;
 
         DescriptorCopy.Owner = (PSID)RelSD->Owner;
         DescriptorCopy.Group = (PSID)RelSD->Group;
@@ -675,7 +675,7 @@ SeQuerySecurityDescriptorInfo(IN PSECURITY_INFORMATION SecurityInformation,
                              IN PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor OPTIONAL)
 {
   PSECURITY_DESCRIPTOR ObjectSd;
-  PSECURITY_DESCRIPTOR_RELATIVE RelSD;
+  PISECURITY_DESCRIPTOR_RELATIVE RelSD;
   PSID Owner = NULL;
   PSID Group = NULL;
   PACL Dacl = NULL;
@@ -688,7 +688,7 @@ SeQuerySecurityDescriptorInfo(IN PSECURITY_INFORMATION SecurityInformation,
   ULONG_PTR Current;
   ULONG SdLength;
 
-  RelSD = (PSECURITY_DESCRIPTOR_RELATIVE)SecurityDescriptor;
+  RelSD = (PISECURITY_DESCRIPTOR_RELATIVE)SecurityDescriptor;
 
   if (*ObjectsSecurityDescriptor == NULL)
     {
index 0993301..ae6788e 100644 (file)
@@ -29,6 +29,7 @@
 
 #define UNICODE
 
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index 7bc5e6d..d920d30 100644 (file)
@@ -1,4 +1,5 @@
 /* PSDK/NDK Headers */
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index d988b95..797c0d2 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _SMSS_H_INCLUDED_
 #define _SMSS_H_INCLUDED_
 
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index 0f71365..e869450 100644 (file)
@@ -27,6 +27,7 @@
 
 /* INCLUDES *****************************************************************/
 
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index c11a017..d2847f5 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdio.h>
 #include <windows.h>
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
index da6925d..50ce7b8 100644 (file)
@@ -3442,7 +3442,7 @@ NTSTATUS
 NTAPI
 RtlAbsoluteToSelfRelativeSD (
     IN PSECURITY_DESCRIPTOR              AbsoluteSecurityDescriptor,
-    IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+    IN OUT PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
     IN PULONG                            BufferLength
 );
 
index 3e7d82b..10257ac 100644 (file)
@@ -5640,7 +5640,7 @@ NTOSAPI
 BOOLEAN
 DDKAPI
 RtlValidRelativeSecurityDescriptor(
-  IN PSECURITY_DESCRIPTOR_RELATIVE  SecurityDescriptorInput,
+  IN PISECURITY_DESCRIPTOR_RELATIVE  SecurityDescriptorInput,
   IN ULONG  SecurityDescriptorLength,
   IN SECURITY_INFORMATION  RequiredInformation);
 
index 087e1a3..030fe18 100644 (file)
@@ -72,4 +72,5 @@ typedef struct _OBJECT_ATTRIBUTES {
 #endif
 #define NOTHING
 #define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s }
+#define TYPE_ALIGNMENT( t ) FIELD_OFFSET( struct { char x; t test; }, test )
 #endif /* _NTDEF_H */
index 5e2e649..dd1d10b 100644 (file)
@@ -1,12 +1,15 @@
-#ifndef _WINBASE_H
-#define _WINBASE_H
+#ifndef _WINBASE_
+#define _WINBASE_
 #if __GNUC__ >= 3
 #pragma GCC system_header
 #endif
 
-#ifndef WINBASEAPI
+#if !defined(_KERNEL32_)
 #define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
 #endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
index dde83a3..6b89013 100644 (file)
@@ -44,6 +44,7 @@
 #include <winresrc.h>
 #else
 
+#include <excpt.h>
 #include <stdarg.h>
 #include <windef.h>
 #include <wincon.h>
index 29d698b..a756f7e 100644 (file)
@@ -399,6 +399,7 @@ typedef DWORD FLONG;
  * a  SID_IDENTIFIER_AUTHORITY, eg.
  * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
  */
+#define SID_MAX_SUB_AUTHORITIES     15
 #define SECURITY_NULL_SID_AUTHORITY    {0,0,0,0,0,0}
 #define SECURITY_WORLD_SID_AUTHORITY   {0,0,0,0,0,1}
 #define SECURITY_LOCAL_SID_AUTHORITY   {0,0,0,0,0,2}
@@ -2170,14 +2171,14 @@ typedef struct _SECURITY_DESCRIPTOR {
        PACL Dacl;
 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
 typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
-       UCHAR  Revision;
-       UCHAR  Sbz1;
-       SECURITY_DESCRIPTOR_CONTROL Control;
-       ULONG Owner;
-       ULONG Group;
-       ULONG Sacl;
-       ULONG Dacl;
-} SECURITY_DESCRIPTOR_RELATIVE, *PSECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
+    BYTE Revision;
+    BYTE Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    DWORD Owner;
+    DWORD Group;
+    DWORD Sacl;
+    DWORD Dacl;
+} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
 typedef enum _TOKEN_INFORMATION_CLASS {
        TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
        TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
@@ -3021,6 +3022,13 @@ typedef union _FILE_SEGMENT_ELEMENT {
 #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT   9
 #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT       10
 
+#define JOB_OBJECT_ASSIGN_PROCESS           1
+#define JOB_OBJECT_SET_ATTRIBUTES           2
+#define JOB_OBJECT_QUERY                    4
+#define JOB_OBJECT_TERMINATE                8
+#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES  16
+#define JOB_OBJECT_ALL_ACCESS               (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
+
 typedef enum _JOBOBJECTINFOCLASS {
        JobObjectBasicAccountingInformation = 1,
        JobObjectBasicLimitInformation,
@@ -3095,7 +3103,6 @@ typedef struct _JOBOBJECT_JOBSET_INFORMATION {
 
 /* Fixme: Making these defines conditional on WINVER will break ddk includes */
 #if 1 /* (WINVER >= 0x0500) */
-#include <pshpack4.h>
 
 #define ES_SYSTEM_REQUIRED                0x00000001
 #define ES_DISPLAY_REQUIRED               0x00000002
@@ -3387,7 +3394,6 @@ typedef struct _ADMINISTRATOR_POWER_POLICY {
        ULONG  MinSpindownTimeout;
        ULONG  MaxSpindownTimeout;
 } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
-#include <poppack.h>
 #endif /* WINVER >= 0x0500 */
 
 typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN);
@@ -3404,6 +3410,14 @@ typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
 ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
 #endif
 
+SIZE_T
+STDCALL
+RtlCompareMemory (
+    const VOID *Source1,
+    const VOID *Source2,
+    SIZE_T Length
+    );
+
 #if defined(__GNUC__)
 
 static __inline__ PVOID GetCurrentFiber(void)