ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

winternl.h
Go to the documentation of this file.
00001 /*
00002  * Internal NT APIs and data structures
00003  *
00004  * Copyright (C) the Wine project
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00019  */
00020 
00021 #ifndef __WINE_WINTERNL_H
00022 #define __WINE_WINTERNL_H
00023 
00024 #include <windef.h>
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif /* defined(__cplusplus) */
00029 
00030 
00031 /**********************************************************************
00032  * Fundamental types and data structures
00033  */
00034 
00035 typedef LONG NTSTATUS, *PNTSTATUS;
00036 
00037 typedef CONST char *PCSZ;
00038 
00039 typedef short CSHORT;
00040 typedef CSHORT *PCSHORT;
00041 
00042 typedef struct _STRING {
00043   USHORT Length;
00044   USHORT MaximumLength;
00045   PCHAR Buffer;
00046 } STRING, *PSTRING;
00047 
00048 typedef STRING ANSI_STRING;
00049 typedef PSTRING PANSI_STRING;
00050 typedef const STRING *PCANSI_STRING;
00051 
00052 typedef STRING OEM_STRING;
00053 typedef PSTRING POEM_STRING;
00054 typedef const STRING *PCOEM_STRING;
00055 
00056 typedef struct _UNICODE_STRING {
00057   USHORT Length;        /* bytes */
00058   USHORT MaximumLength; /* bytes */
00059   PWSTR  Buffer;
00060 } UNICODE_STRING, *PUNICODE_STRING;
00061 
00062 typedef const UNICODE_STRING *PCUNICODE_STRING;
00063 
00064 #ifndef _FILETIME_
00065 #define _FILETIME_
00066 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
00067 typedef struct _FILETIME
00068 {
00069 #ifdef WORDS_BIGENDIAN
00070   DWORD  dwHighDateTime;
00071   DWORD  dwLowDateTime;
00072 #else
00073   DWORD  dwLowDateTime;
00074   DWORD  dwHighDateTime;
00075 #endif
00076 } FILETIME, *PFILETIME, *LPFILETIME;
00077 #endif /* _FILETIME_ */
00078 
00079 /*
00080  * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
00081  * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
00082  * in winbase.h, however we need to define them seperately so
00083  * winternl.h doesn't depend on winbase.h.  They are used by
00084  * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
00085  * The names are guessed; if anybody knows the real names, let me know.
00086  */
00087 typedef struct _RTL_SYSTEM_TIME {
00088     WORD wYear;
00089     WORD wMonth;
00090     WORD wDayOfWeek;
00091     WORD wDay;
00092     WORD wHour;
00093     WORD wMinute;
00094     WORD wSecond;
00095     WORD wMilliseconds;
00096 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
00097 
00098 typedef struct _RTL_TIME_ZONE_INFORMATION {
00099     LONG Bias;
00100     WCHAR StandardName[32];
00101     RTL_SYSTEM_TIME StandardDate;
00102     LONG StandardBias;
00103     WCHAR DaylightName[32];
00104     RTL_SYSTEM_TIME DaylightDate;
00105     LONG DaylightBias;
00106 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
00107 
00108 typedef struct _CLIENT_ID
00109 {
00110    HANDLE UniqueProcess;
00111    HANDLE UniqueThread;
00112 } CLIENT_ID, *PCLIENT_ID;
00113 
00114 typedef struct _CURDIR
00115 {
00116     UNICODE_STRING DosPath;
00117     PVOID Handle;
00118 } CURDIR, *PCURDIR;
00119 
00120 typedef struct RTL_DRIVE_LETTER_CURDIR
00121 {
00122     USHORT              Flags;
00123     USHORT              Length;
00124     ULONG               TimeStamp;
00125     UNICODE_STRING      DosPath;
00126 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
00127 
00128 typedef struct tagRTL_BITMAP {
00129     ULONG  SizeOfBitMap; /* Number of bits in the bitmap */
00130     PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
00131 } RTL_BITMAP, *PRTL_BITMAP;
00132 
00133 typedef const RTL_BITMAP *PCRTL_BITMAP;
00134 
00135 typedef struct tagRTL_BITMAP_RUN {
00136     ULONG StartingIndex; /* Bit position at which run starts */
00137     ULONG NumberOfBits;  /* Size of the run in bits */
00138 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
00139 
00140 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
00141 
00142 typedef struct _RTL_USER_PROCESS_PARAMETERS
00143 {
00144     ULONG               AllocationSize;
00145     ULONG               Size;
00146     ULONG               Flags;
00147     ULONG               DebugFlags;
00148     HANDLE              ConsoleHandle;
00149     ULONG               ConsoleFlags;
00150     HANDLE              hStdInput;
00151     HANDLE              hStdOutput;
00152     HANDLE              hStdError;
00153     CURDIR              CurrentDirectory;
00154     UNICODE_STRING      DllPath;
00155     UNICODE_STRING      ImagePathName;
00156     UNICODE_STRING      CommandLine;
00157     PWSTR               Environment;
00158     ULONG               dwX;
00159     ULONG               dwY;
00160     ULONG               dwXSize;
00161     ULONG               dwYSize;
00162     ULONG               dwXCountChars;
00163     ULONG               dwYCountChars;
00164     ULONG               dwFillAttribute;
00165     ULONG               dwFlags;
00166     ULONG               wShowWindow;
00167     UNICODE_STRING      WindowTitle;
00168     UNICODE_STRING      Desktop;
00169     UNICODE_STRING      ShellInfo;
00170     UNICODE_STRING      RuntimeInfo;
00171     RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
00172 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
00173 
00174 /* value for Flags field (FIXME: not the correct name) */
00175 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
00176 
00177 typedef struct _PEB_LDR_DATA
00178 {
00179     ULONG               Length;
00180     BOOLEAN             Initialized;
00181     PVOID               SsHandle;
00182     LIST_ENTRY          InLoadOrderModuleList;
00183     LIST_ENTRY          InMemoryOrderModuleList;
00184     LIST_ENTRY          InInitializationOrderModuleList;
00185 } PEB_LDR_DATA, *PPEB_LDR_DATA;
00186 
00187 typedef struct _GDI_TEB_BATCH
00188 {
00189     ULONG  Offset;
00190     HANDLE HDC;
00191     ULONG  Buffer[0x136];
00192 } GDI_TEB_BATCH;
00193 
00194 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
00195 {
00196     struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
00197     struct _ACTIVATION_CONTEXT                 *ActivationContext;
00198     ULONG                                       Flags;
00199 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
00200 
00201 typedef struct _ACTIVATION_CONTEXT_STACK
00202 {
00203     ULONG                               Flags;
00204     ULONG                               NextCookieSequenceNumber;
00205     RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
00206     LIST_ENTRY                          FrameListCache;
00207 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
00208 
00209 /***********************************************************************
00210  * PEB data structure
00211  */
00212 typedef struct _PEB
00213 {
00214     BOOLEAN                      InheritedAddressSpace;             /*  00 */
00215     BOOLEAN                      ReadImageFileExecOptions;          /*  01 */
00216     BOOLEAN                      BeingDebugged;                     /*  02 */
00217     BOOLEAN                      SpareBool;                         /*  03 */
00218     HANDLE                       Mutant;                            /*  04 */
00219     HMODULE                      ImageBaseAddress;                  /*  08 */
00220     PPEB_LDR_DATA                LdrData;                           /*  0c */
00221     RTL_USER_PROCESS_PARAMETERS *ProcessParameters;                 /*  10 */
00222     PVOID                        SubSystemData;                     /*  14 */
00223     HANDLE                       ProcessHeap;                       /*  18 */
00224     PRTL_CRITICAL_SECTION        FastPebLock;                       /*  1c */
00225     PVOID /*PPEBLOCKROUTINE*/    FastPebLockRoutine;                /*  20 */
00226     PVOID /*PPEBLOCKROUTINE*/    FastPebUnlockRoutine;              /*  24 */
00227     ULONG                        EnvironmentUpdateCount;            /*  28 */
00228     PVOID                        KernelCallbackTable;               /*  2c */
00229     PVOID                        EventLogSection;                   /*  30 */
00230     PVOID                        EventLog;                          /*  34 */
00231     PVOID /*PPEB_FREE_BLOCK*/    FreeList;                          /*  38 */
00232     ULONG                        TlsExpansionCounter;               /*  3c */
00233     PRTL_BITMAP                  TlsBitmap;                         /*  40 */
00234     ULONG                        TlsBitmapBits[2];                  /*  44 */
00235     PVOID                        ReadOnlySharedMemoryBase;          /*  4c */
00236     PVOID                        ReadOnlySharedMemoryHeap;          /*  50 */
00237     PVOID                       *ReadOnlyStaticServerData;          /*  54 */
00238     PVOID                        AnsiCodePageData;                  /*  58 */
00239     PVOID                        OemCodePageData;                   /*  5c */
00240     PVOID                        UnicodeCaseTableData;              /*  60 */
00241     ULONG                        NumberOfProcessors;                /*  64 */
00242     ULONG                        NtGlobalFlag;                      /*  68 */
00243     BYTE                         Spare2[4];                         /*  6c */
00244     LARGE_INTEGER                CriticalSectionTimeout;            /*  70 */
00245     ULONG                        HeapSegmentReserve;                /*  78 */
00246     ULONG                        HeapSegmentCommit;                 /*  7c */
00247     ULONG                        HeapDeCommitTotalFreeThreshold;    /*  80 */
00248     ULONG                        HeapDeCommitFreeBlockThreshold;    /*  84 */
00249     ULONG                        NumberOfHeaps;                     /*  88 */
00250     ULONG                        MaximumNumberOfHeaps;              /*  8c */
00251     PVOID                       *ProcessHeaps;                      /*  90 */
00252     PVOID                        GdiSharedHandleTable;              /*  94 */
00253     PVOID                        ProcessStarterHelper;              /*  98 */
00254     PVOID                        GdiDCAttributeList;                /*  9c */
00255     PVOID                        LoaderLock;                        /*  a0 */
00256     ULONG                        OSMajorVersion;                    /*  a4 */
00257     ULONG                        OSMinorVersion;                    /*  a8 */
00258     ULONG                        OSBuildNumber;                     /*  ac */
00259     ULONG                        OSPlatformId;                      /*  b0 */
00260     ULONG                        ImageSubSystem;                    /*  b4 */
00261     ULONG                        ImageSubSystemMajorVersion;        /*  b8 */
00262     ULONG                        ImageSubSystemMinorVersion;        /*  bc */
00263     ULONG                        ImageProcessAffinityMask;          /*  c0 */
00264     ULONG                        GdiHandleBuffer[34];               /*  c4 */
00265     ULONG                        PostProcessInitRoutine;            /* 14c */
00266     PRTL_BITMAP                  TlsExpansionBitmap;                /* 150 */
00267     ULONG                        TlsExpansionBitmapBits[32];        /* 154 */
00268     ULONG                        SessionId;                         /* 1d4 */
00269 } PEB, *PPEB;
00270 
00271 
00272 /***********************************************************************
00273  * TEB data structure
00274  */
00275 #ifndef WINE_NO_TEB  /* don't define TEB if included from thread.h */
00276 # ifndef WINE_TEB_DEFINED
00277 # define WINE_TEB_DEFINED
00278 typedef struct _TEB
00279 {
00280     NT_TIB          Tib;                        /* 000 */
00281     PVOID           EnvironmentPointer;         /* 01c */
00282     CLIENT_ID       ClientId;                   /* 020 */
00283     PVOID           ActiveRpcHandle;            /* 028 */
00284     PVOID           ThreadLocalStoragePointer;  /* 02c */
00285     PPEB            Peb;                        /* 030 */
00286     ULONG           LastErrorValue;             /* 034 */
00287     ULONG           CountOfOwnedCriticalSections;/* 038 */
00288     PVOID           CsrClientThread;            /* 03c */
00289     PVOID           Win32ThreadInfo;            /* 040 */
00290     ULONG           Win32ClientInfo[31];        /* 044 used for user32 private data in Wine */
00291     PVOID           WOW32Reserved;              /* 0c0 */
00292     ULONG           CurrentLocale;              /* 0c4 */
00293     ULONG           FpSoftwareStatusRegister;   /* 0c8 */
00294     PVOID           SystemReserved1[54];        /* 0cc used for kernel32 private data in Wine */
00295     PVOID           Spare1;                     /* 1a4 */
00296     LONG            ExceptionCode;              /* 1a8 */
00297     PACTIVATION_CONTEXT_STACK     ActivationContextStackPointer;            /* 1a8/02c8 */
00298     BYTE            SpareBytes1[36];            /* 1ac */
00299     PVOID           SystemReserved2[10];        /* 1d4 used for ntdll private data in Wine */
00300     GDI_TEB_BATCH   GdiTebBatch;                /* 1fc */
00301     ULONG           gdiRgn;                     /* 6dc */
00302     ULONG           gdiPen;                     /* 6e0 */
00303     ULONG           gdiBrush;                   /* 6e4 */
00304     CLIENT_ID       RealClientId;               /* 6e8 */
00305     HANDLE          GdiCachedProcessHandle;     /* 6f0 */
00306     ULONG           GdiClientPID;               /* 6f4 */
00307     ULONG           GdiClientTID;               /* 6f8 */
00308     PVOID           GdiThreadLocaleInfo;        /* 6fc */
00309     PVOID           UserReserved[5];            /* 700 */
00310     PVOID           glDispatchTable[280];        /* 714 */
00311     ULONG           glReserved1[26];            /* b74 */
00312     PVOID           glReserved2;                /* bdc */
00313     PVOID           glSectionInfo;              /* be0 */
00314     PVOID           glSection;                  /* be4 */
00315     PVOID           glTable;                    /* be8 */
00316     PVOID           glCurrentRC;                /* bec */
00317     PVOID           glContext;                  /* bf0 */
00318     ULONG           LastStatusValue;            /* bf4 */
00319     UNICODE_STRING  StaticUnicodeString;        /* bf8 used by advapi32 */
00320     WCHAR           StaticUnicodeBuffer[261];   /* c00 used by advapi32 */
00321     PVOID           DeallocationStack;          /* e0c */
00322     PVOID           TlsSlots[64];               /* e10 */
00323     LIST_ENTRY      TlsLinks;                   /* f10 */
00324     PVOID           Vdm;                        /* f18 */
00325     PVOID           ReservedForNtRpc;           /* f1c */
00326     PVOID           DbgSsReserved[2];           /* f20 */
00327     ULONG           HardErrorDisabled;          /* f28 */
00328     PVOID           Instrumentation[16];        /* f2c */
00329     PVOID           WinSockData;                /* f6c */
00330     ULONG           GdiBatchCount;              /* f70 */
00331     ULONG           Spare2;                     /* f74 */
00332     ULONG           Spare3;                     /* f78 */
00333     ULONG           Spare4;                     /* f7c */
00334     PVOID           ReservedForOle;             /* f80 */
00335     ULONG           WaitingOnLoaderLock;        /* f84 */
00336     PVOID           Reserved5[3];               /* f88 */
00337     PVOID          *TlsExpansionSlots;          /* f94 */
00338 } TEB, *PTEB;
00339 # endif /* WINE_TEB_DEFINED */
00340 #endif  /* WINE_NO_TEB */
00341 
00342 /***********************************************************************
00343  * Enums
00344  */
00345 
00346 typedef enum _FILE_INFORMATION_CLASS {
00347     FileDirectoryInformation = 1,
00348     FileFullDirectoryInformation,
00349     FileBothDirectoryInformation,
00350     FileBasicInformation,
00351     FileStandardInformation,
00352     FileInternalInformation,
00353     FileEaInformation,
00354     FileAccessInformation,
00355     FileNameInformation,
00356     FileRenameInformation,
00357     FileLinkInformation,
00358     FileNamesInformation,
00359     FileDispositionInformation,
00360     FilePositionInformation,
00361     FileFullEaInformation,
00362     FileModeInformation,
00363     FileAlignmentInformation,
00364     FileAllInformation,
00365     FileAllocationInformation,
00366     FileEndOfFileInformation,
00367     FileAlternateNameInformation,
00368     FileStreamInformation,
00369     FilePipeInformation,
00370     FilePipeLocalInformation,
00371     FilePipeRemoteInformation,
00372     FileMailslotQueryInformation,
00373     FileMailslotSetInformation,
00374     FileCompressionInformation,
00375     FileObjectIdInformation,
00376     FileCompletionInformation,
00377     FileMoveClusterInformation,
00378     FileQuotaInformation,
00379     FileReparsePointInformation,
00380     FileNetworkOpenInformation,
00381     FileAttributeTagInformation,
00382     FileTrackingInformation,
00383     FileIdBothDirectoryInformation,
00384     FileIdFullDirectoryInformation,
00385     FileValidDataLengthInformation,
00386     FileShortNameInformation = 40,
00387     /* 41, 42, 43 undocumented */
00388     FileSfioReserveInformation = 44,
00389     FileSfioVolumeInformation = 45,
00390     FileHardLinkInformation = 46,
00391     /* 47 undocumented */
00392     FileNormalizedNameInformation = 48,
00393     /* 49 undocumented */
00394     FileIdGlobalTxDirectoryInformation = 50,
00395     /* 51, 52, 53 undocumented */
00396     FileStandardLinkInformation = 54,
00397     FileMaximumInformation
00398 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
00399 
00400 typedef struct _FILE_DIRECTORY_INFORMATION {
00401     ULONG               NextEntryOffset;
00402     ULONG               FileIndex;
00403     LARGE_INTEGER       CreationTime;
00404     LARGE_INTEGER       LastAccessTime;
00405     LARGE_INTEGER       LastWriteTime;
00406     LARGE_INTEGER       ChangeTime;
00407     LARGE_INTEGER       EndOfFile;
00408     LARGE_INTEGER       AllocationSize;
00409     ULONG               FileAttributes;
00410     ULONG               FileNameLength;
00411     WCHAR               FileName[ANYSIZE_ARRAY];
00412 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
00413 
00414 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
00415     ULONG               NextEntryOffset;
00416     ULONG               FileIndex;
00417     LARGE_INTEGER       CreationTime;
00418     LARGE_INTEGER       LastAccessTime;
00419     LARGE_INTEGER       LastWriteTime;
00420     LARGE_INTEGER       ChangeTime;
00421     LARGE_INTEGER       EndOfFile;
00422     LARGE_INTEGER       AllocationSize;
00423     ULONG               FileAttributes;
00424     ULONG               FileNameLength;
00425     ULONG               EaSize;
00426     WCHAR               FileName[ANYSIZE_ARRAY];
00427 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
00428   FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
00429 
00430 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
00431     ULONG               NextEntryOffset;
00432     ULONG               FileIndex;
00433     LARGE_INTEGER       CreationTime;
00434     LARGE_INTEGER       LastAccessTime;
00435     LARGE_INTEGER       LastWriteTime;
00436     LARGE_INTEGER       ChangeTime;
00437     LARGE_INTEGER       EndOfFile;
00438     LARGE_INTEGER       AllocationSize;
00439     ULONG               FileAttributes;
00440     ULONG               FileNameLength;
00441     ULONG               EaSize;
00442     LARGE_INTEGER       FileId;
00443     WCHAR               FileName[ANYSIZE_ARRAY];
00444 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
00445 
00446 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
00447     ULONG               NextEntryOffset;
00448     ULONG               FileIndex;
00449     LARGE_INTEGER       CreationTime;
00450     LARGE_INTEGER       LastAccessTime;
00451     LARGE_INTEGER       LastWriteTime;
00452     LARGE_INTEGER       ChangeTime;
00453     LARGE_INTEGER       EndOfFile;
00454     LARGE_INTEGER       AllocationSize;
00455     ULONG               FileAttributes;
00456     ULONG               FileNameLength;
00457     ULONG               EaSize;
00458     CHAR                ShortNameLength;
00459     WCHAR               ShortName[12];
00460     WCHAR               FileName[ANYSIZE_ARRAY];
00461 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
00462   FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
00463 
00464 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
00465     ULONG               NextEntryOffset;
00466     ULONG               FileIndex;
00467     LARGE_INTEGER       CreationTime;
00468     LARGE_INTEGER       LastAccessTime;
00469     LARGE_INTEGER       LastWriteTime;
00470     LARGE_INTEGER       ChangeTime;
00471     LARGE_INTEGER       EndOfFile;
00472     LARGE_INTEGER       AllocationSize;
00473     ULONG               FileAttributes;
00474     ULONG               FileNameLength;
00475     ULONG               EaSize;
00476     CHAR                ShortNameLength;
00477     WCHAR               ShortName[12];
00478     LARGE_INTEGER       FileId;
00479     WCHAR               FileName[ANYSIZE_ARRAY];
00480 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
00481 
00482 typedef struct _FILE_BASIC_INFORMATION {
00483     LARGE_INTEGER CreationTime;
00484     LARGE_INTEGER LastAccessTime;
00485     LARGE_INTEGER LastWriteTime;
00486     LARGE_INTEGER ChangeTime;
00487     ULONG FileAttributes;
00488 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
00489 
00490 typedef struct _FILE_STANDARD_INFORMATION {
00491     LARGE_INTEGER AllocationSize;
00492     LARGE_INTEGER EndOfFile;
00493     ULONG NumberOfLinks;
00494     BOOLEAN DeletePending;
00495     BOOLEAN Directory;
00496 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
00497 
00498 typedef struct _FILE_INTERNAL_INFORMATION {
00499     LARGE_INTEGER IndexNumber;
00500 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
00501 
00502 typedef struct _FILE_EA_INFORMATION {
00503     ULONG EaSize;
00504 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
00505 
00506 typedef struct _FILE_ACCESS_INFORMATION {
00507     ACCESS_MASK AccessFlags;
00508 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
00509 
00510 typedef struct _FILE_NAME_INFORMATION {
00511     ULONG FileNameLength;
00512     WCHAR FileName[1];
00513 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
00514 
00515 typedef struct _FILE_RENAME_INFORMATION {
00516     BOOLEAN Replace;
00517     HANDLE RootDir;
00518     ULONG FileNameLength;
00519     WCHAR FileName[1];
00520 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
00521 
00522 typedef struct _FILE_NAMES_INFORMATION {
00523     ULONG NextEntryOffset;
00524     ULONG FileIndex;
00525     ULONG FileNameLength;
00526     WCHAR FileName[1];
00527 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
00528 
00529 typedef struct _FILE_DISPOSITION_INFORMATION {
00530     BOOLEAN DoDeleteFile;
00531 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
00532 
00533 typedef struct _FILE_POSITION_INFORMATION {
00534     LARGE_INTEGER CurrentByteOffset;
00535 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
00536 
00537 typedef struct _FILE_ALIGNMENT_INFORMATION {
00538     ULONG AlignmentRequirement;
00539 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
00540 
00541 typedef struct _FILE_ALLOCATION_INFORMATION {
00542     LARGE_INTEGER AllocationSize;
00543 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
00544 
00545 typedef struct _FILE_END_OF_FILE_INFORMATION {
00546     LARGE_INTEGER EndOfFile;
00547 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
00548 
00549 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
00550     LARGE_INTEGER CreationTime;
00551     LARGE_INTEGER LastAccessTime;
00552     LARGE_INTEGER LastWriteTime;
00553     LARGE_INTEGER ChangeTime;
00554     LARGE_INTEGER AllocationSize;
00555     LARGE_INTEGER EndOfFile;
00556     ULONG FileAttributes;
00557 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
00558 
00559 typedef struct _FILE_FULL_EA_INFORMATION {
00560     ULONG NextEntryOffset;
00561     UCHAR Flags;
00562     UCHAR EaNameLength;
00563     USHORT EaValueLength;
00564     CHAR EaName[1];
00565 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
00566 
00567 typedef struct _FILE_MODE_INFORMATION {
00568     ULONG Mode;
00569 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
00570 
00571 typedef struct _FILE_STREAM_INFORMATION
00572 {
00573     ULONG NextEntryOffset;
00574     ULONG StreamNameLength;
00575     LARGE_INTEGER StreamSize;
00576     LARGE_INTEGER StreamAllocationSize;
00577     WCHAR StreamName[1];
00578 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
00579 
00580 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
00581 {
00582     ULONG FileAttributes;
00583     ULONG ReparseTag;
00584 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
00585 
00586 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
00587     ULONG MaximumMessageSize;
00588     ULONG MailslotQuota;
00589     ULONG NextMessageSize;
00590     ULONG MessagesAvailable;
00591     LARGE_INTEGER ReadTimeout;
00592 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
00593 
00594 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
00595     LARGE_INTEGER ReadTimeout;
00596 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
00597 
00598 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
00599     ULONG NamedPipeType;
00600     ULONG NamedPipeConfiguration;
00601     ULONG MaximumInstances;
00602     ULONG CurrentInstances;
00603     ULONG InboundQuota;
00604     ULONG ReadDataAvailable;
00605     ULONG OutboundQuota;
00606     ULONG WriteQuotaAvailable;
00607     ULONG NamedPipeState;
00608     ULONG NamedPipeEnd;
00609 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
00610 
00611 typedef struct _FILE_ALL_INFORMATION {
00612     FILE_BASIC_INFORMATION     BasicInformation;
00613     FILE_STANDARD_INFORMATION  StandardInformation;
00614     FILE_INTERNAL_INFORMATION  InternalInformation;
00615     FILE_EA_INFORMATION        EaInformation;
00616     FILE_ACCESS_INFORMATION    AccessInformation;
00617     FILE_POSITION_INFORMATION  PositionInformation;
00618     FILE_MODE_INFORMATION      ModeInformation;
00619     FILE_ALIGNMENT_INFORMATION AlignmentInformation;
00620     FILE_NAME_INFORMATION      NameInformation;
00621 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
00622 
00623 typedef enum _FSINFOCLASS {
00624     FileFsVolumeInformation = 1,
00625     FileFsLabelInformation,
00626     FileFsSizeInformation,
00627     FileFsDeviceInformation,
00628     FileFsAttributeInformation,
00629     FileFsControlInformation,
00630     FileFsFullSizeInformation,
00631     FileFsObjectIdInformation,
00632     FileFsMaximumInformation
00633 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
00634 
00635 typedef enum _KEY_INFORMATION_CLASS {
00636     KeyBasicInformation,
00637     KeyNodeInformation,
00638     KeyFullInformation
00639 } KEY_INFORMATION_CLASS;
00640 
00641 typedef enum _KEY_VALUE_INFORMATION_CLASS {
00642     KeyValueBasicInformation,
00643     KeyValueFullInformation,
00644     KeyValuePartialInformation,
00645     KeyValueFullInformationAlign64,
00646     KeyValuePartialInformationAlign64
00647 } KEY_VALUE_INFORMATION_CLASS;
00648 
00649 typedef enum _OBJECT_INFORMATION_CLASS {
00650     ObjectBasicInformation,
00651     ObjectNameInformation,
00652     ObjectTypeInformation,
00653     ObjectAllInformation,
00654     ObjectDataInformation
00655 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
00656 
00657 typedef enum _PROCESSINFOCLASS {
00658     ProcessBasicInformation = 0,
00659     ProcessQuotaLimits = 1,
00660     ProcessIoCounters = 2,
00661     ProcessVmCounters = 3,
00662     ProcessTimes = 4,
00663     ProcessBasePriority = 5,
00664     ProcessRaisePriority = 6,
00665     ProcessDebugPort = 7,
00666     ProcessExceptionPort = 8,
00667     ProcessAccessToken = 9,
00668     ProcessLdtInformation = 10,
00669     ProcessLdtSize = 11,
00670     ProcessDefaultHardErrorMode = 12,
00671     ProcessIoPortHandlers = 13,
00672     ProcessPooledUsageAndLimits = 14,
00673     ProcessWorkingSetWatch = 15,
00674     ProcessUserModeIOPL = 16,
00675     ProcessEnableAlignmentFaultFixup = 17,
00676     ProcessPriorityClass = 18,
00677     ProcessWx86Information = 19,
00678     ProcessHandleCount = 20,
00679     ProcessAffinityMask = 21,
00680     ProcessPriorityBoost = 22,
00681     ProcessDeviceMap = 23,
00682     ProcessSessionInformation = 24,
00683     ProcessForegroundInformation = 25,
00684     ProcessWow64Information = 26,
00685     ProcessImageFileName = 27,
00686     ProcessLUIDDeviceMapsEnabled = 28,
00687     ProcessBreakOnTermination = 29,
00688     ProcessDebugObjectHandle = 30,
00689     ProcessDebugFlags = 31,
00690     ProcessHandleTracing = 32,
00691     ProcessExecuteFlags = 34,
00692     MaxProcessInfoClass
00693 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
00694 
00695 #define MEM_EXECUTE_OPTION_DISABLE   0x01
00696 #define MEM_EXECUTE_OPTION_ENABLE    0x02
00697 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
00698 
00699 typedef enum _SECTION_INHERIT {
00700     ViewShare = 1,
00701     ViewUnmap = 2
00702 } SECTION_INHERIT;
00703 
00704 typedef enum _SYSTEM_INFORMATION_CLASS {
00705     SystemBasicInformation = 0,
00706     SystemCpuInformation = 1,
00707     SystemPerformanceInformation = 2,
00708     SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
00709     Unknown4,
00710     SystemProcessInformation = 5,
00711     Unknown6,
00712     Unknown7,
00713     SystemProcessorPerformanceInformation = 8,
00714     Unknown9,
00715     Unknown10,
00716     SystemModuleInformation = 11,
00717     Unknown12,
00718     Unknown13,
00719     Unknown14,
00720     Unknown15,
00721     SystemHandleInformation = 16,
00722     Unknown17,
00723     SystemPageFileInformation = 18,
00724     Unknown19,
00725     Unknown20,
00726     SystemCacheInformation = 21,
00727     Unknown22,
00728     SystemInterruptInformation = 23,
00729     SystemDpcBehaviourInformation = 24,
00730     SystemFullMemoryInformation = 25,
00731     SystemNotImplemented6 = 25,
00732     SystemLoadImage = 26,
00733     SystemUnloadImage = 27,
00734     SystemTimeAdjustmentInformation = 28,
00735     SystemTimeAdjustment = 28,
00736     SystemSummaryMemoryInformation = 29,
00737     SystemNotImplemented7 = 29,
00738     SystemNextEventIdInformation = 30,
00739     SystemNotImplemented8 = 30,
00740     SystemEventIdsInformation = 31,
00741     SystemCrashDumpInformation = 32,
00742     SystemExceptionInformation = 33,
00743     SystemCrashDumpStateInformation = 34,
00744     SystemKernelDebuggerInformation = 35,
00745     SystemContextSwitchInformation = 36,
00746     SystemRegistryQuotaInformation = 37,
00747     SystemCurrentTimeZoneInformation = 44,
00748     SystemTimeZoneInformation = 44,
00749     SystemLookasideInformation = 45,
00750     SystemSetTimeSlipEvent = 46,
00751     SystemCreateSession = 47,
00752     SystemDeleteSession = 48,
00753     SystemInvalidInfoClass4 = 49,
00754     SystemRangeStartInformation = 50,
00755     SystemVerifierInformation = 51,
00756     SystemAddVerifier = 52,
00757     SystemSessionProcessesInformation   = 53,
00758     SystemInformationClassMax
00759 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
00760 
00761 typedef enum _TIMER_TYPE {
00762     NotificationTimer,
00763     SynchronizationTimer
00764 } TIMER_TYPE;
00765 
00766 typedef enum _THREADINFOCLASS {
00767     ThreadBasicInformation,
00768     ThreadTimes,
00769     ThreadPriority,
00770     ThreadBasePriority,
00771     ThreadAffinityMask,
00772     ThreadImpersonationToken,
00773     ThreadDescriptorTableEntry,
00774     ThreadEnableAlignmentFaultFixup,
00775     ThreadEventPair_Reusable,
00776     ThreadQuerySetWin32StartAddress,
00777     ThreadZeroTlsCell,
00778     ThreadPerformanceCount,
00779     ThreadAmILastThread,
00780     ThreadIdealProcessor,
00781     ThreadPriorityBoost,
00782     ThreadSetTlsArrayAddress,
00783     ThreadIsIoPending,
00784     MaxThreadInfoClass
00785 } THREADINFOCLASS;
00786 
00787 typedef struct _THREAD_BASIC_INFORMATION
00788 {
00789     NTSTATUS  ExitStatus;
00790     PVOID     TebBaseAddress;
00791     CLIENT_ID ClientId;
00792     ULONG_PTR AffinityMask;
00793     LONG      Priority;
00794     LONG      BasePriority;
00795 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
00796 
00797 typedef struct _KERNEL_USER_TIMES {
00798     LARGE_INTEGER  CreateTime;
00799     LARGE_INTEGER  ExitTime;
00800     LARGE_INTEGER  KernelTime;
00801     LARGE_INTEGER  UserTime;
00802 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
00803 
00804 typedef enum _WINSTATIONINFOCLASS {
00805     WinStationInformation = 8
00806 } WINSTATIONINFOCLASS;
00807 
00808 typedef enum _MEMORY_INFORMATION_CLASS {
00809     MemoryBasicInformation,
00810     MemoryWorkingSetList,
00811     MemorySectionName,
00812     MemoryBasicVlmInformation
00813 } MEMORY_INFORMATION_CLASS;
00814 
00815 typedef enum _MUTANT_INFORMATION_CLASS
00816 {
00817     MutantBasicInformation
00818 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
00819 
00820 typedef struct _MUTANT_BASIC_INFORMATION {
00821     LONG        CurrentCount;
00822     BOOLEAN     OwnedByCaller;
00823     BOOLEAN     AbandonedState;
00824 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
00825 
00826 typedef enum _TIMER_INFORMATION_CLASS
00827 {
00828     TimerBasicInformation = 0
00829 } TIMER_INFORMATION_CLASS;
00830 
00831 typedef struct _TIMER_BASIC_INFORMATION
00832 {
00833     LARGE_INTEGER RemainingTime;
00834     BOOLEAN       TimerState;
00835 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
00836 
00837 
00838 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
00839 typedef enum
00840 {
00841     INVALID_PATH = 0,
00842     UNC_PATH,              /* "//foo" */
00843     ABSOLUTE_DRIVE_PATH,   /* "c:/foo" */
00844     RELATIVE_DRIVE_PATH,   /* "c:foo" */
00845     ABSOLUTE_PATH,         /* "/foo" */
00846     RELATIVE_PATH,         /* "foo" */
00847     DEVICE_PATH,           /* "//./foo" */
00848     UNC_DOT_PATH           /* "//." */
00849 } DOS_PATHNAME_TYPE;
00850 
00851 /***********************************************************************
00852  * IA64 specific types and data structures
00853  */
00854 
00855 #ifdef __ia64__
00856 
00857 typedef struct _FRAME_POINTERS {
00858   ULONGLONG MemoryStackFp;
00859   ULONGLONG BackingStoreFp;
00860 } FRAME_POINTERS, *PFRAME_POINTERS;
00861 
00862 #define UNWIND_HISTORY_TABLE_SIZE 12
00863 
00864 typedef struct _RUNTIME_FUNCTION {
00865   ULONG BeginAddress;
00866   ULONG EndAddress;
00867   ULONG UnwindInfoAddress;
00868 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
00869 
00870 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
00871   ULONG64 ImageBase;
00872   ULONG64 Gp;
00873   PRUNTIME_FUNCTION FunctionEntry;
00874 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
00875 
00876 typedef struct _UNWIND_HISTORY_TABLE {
00877   ULONG Count;
00878   UCHAR Search;
00879   ULONG64 LowAddress;
00880   ULONG64 HighAddress;
00881   UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
00882 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
00883 
00884 #endif /* defined(__ia64__) */
00885 
00886 /***********************************************************************
00887  * Types and data structures
00888  */
00889 
00890 /* This is used by NtQuerySystemInformation */
00891 typedef struct _SYSTEM_THREAD_INFORMATION
00892 {                                    /* win32/win64 */
00893     LARGE_INTEGER KernelTime;          /* 00/00 */
00894     LARGE_INTEGER UserTime;            /* 08/08 */
00895     LARGE_INTEGER CreateTime;          /* 10/10 */
00896     DWORD         dwTickCount;         /* 18/18 */
00897     LPVOID        StartAddress;        /* 1c/20 */
00898     CLIENT_ID     ClientId;            /* 20/28 */
00899     DWORD         dwCurrentPriority;   /* 28/38 */
00900     DWORD         dwBasePriority;      /* 2c/3c */
00901     DWORD         dwContextSwitches;   /* 30/40 */
00902     DWORD         dwThreadState;       /* 34/44 */
00903     DWORD         dwWaitReason;        /* 38/48 */
00904     DWORD         dwUnknown;           /* 3c/4c */
00905 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
00906 
00907 typedef struct _IO_STATUS_BLOCK {
00908   union {
00909     NTSTATUS Status;
00910     PVOID Pointer;
00911   } DUMMYUNIONNAME;
00912 
00913   ULONG_PTR Information;
00914 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
00915 
00916 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
00917 
00918 typedef struct _KEY_BASIC_INFORMATION {
00919     LARGE_INTEGER LastWriteTime;
00920     ULONG         TitleIndex;
00921     ULONG         NameLength;
00922     WCHAR         Name[1];
00923 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
00924 
00925 typedef struct _KEY_NODE_INFORMATION
00926 {
00927     LARGE_INTEGER LastWriteTime;
00928     ULONG         TitleIndex;
00929     ULONG         ClassOffset;
00930     ULONG         ClassLength;
00931     ULONG         NameLength;
00932     WCHAR         Name[1];
00933    /* Class[1]; */
00934 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
00935 
00936 typedef struct _KEY_FULL_INFORMATION
00937 {
00938     LARGE_INTEGER LastWriteTime;
00939     ULONG         TitleIndex;
00940     ULONG         ClassOffset;
00941     ULONG         ClassLength;
00942     ULONG         SubKeys;
00943     ULONG         MaxNameLen;
00944     ULONG         MaxClassLen;
00945     ULONG         Values;
00946     ULONG         MaxValueNameLen;
00947     ULONG         MaxValueDataLen;
00948     WCHAR         Class[1];
00949 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
00950 
00951 typedef struct _KEY_VALUE_ENTRY
00952 {
00953     PUNICODE_STRING ValueName;
00954     ULONG           DataLength;
00955     ULONG           DataOffset;
00956     ULONG           Type;
00957 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
00958 
00959 typedef struct _KEY_VALUE_BASIC_INFORMATION {
00960     ULONG TitleIndex;
00961     ULONG Type;
00962     ULONG NameLength;
00963     WCHAR Name[1];
00964 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
00965 
00966 typedef struct _KEY_VALUE_FULL_INFORMATION {
00967     ULONG TitleIndex;
00968     ULONG Type;
00969     ULONG DataOffset;
00970     ULONG DataLength;
00971     ULONG NameLength;
00972     WCHAR Name[1];
00973 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
00974 
00975 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
00976     ULONG TitleIndex;
00977     ULONG Type;
00978     ULONG DataLength;
00979     UCHAR Data[1];
00980 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
00981 
00982 typedef struct _OBJECT_ATTRIBUTES {
00983   ULONG Length;
00984   HANDLE RootDirectory;
00985   PUNICODE_STRING ObjectName;
00986   ULONG Attributes;
00987   PVOID SecurityDescriptor;       /* type SECURITY_DESCRIPTOR */
00988   PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
00989 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
00990 
00991 typedef struct _OBJECT_DATA_INFORMATION {
00992     BOOLEAN InheritHandle;
00993     BOOLEAN ProtectFromClose;
00994 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
00995 
00996 typedef struct _OBJECT_BASIC_INFORMATION {
00997     ULONG  Attributes;
00998     ACCESS_MASK  GrantedAccess;
00999     ULONG  HandleCount;
01000     ULONG  PointerCount;
01001     ULONG  PagedPoolUsage;
01002     ULONG  NonPagedPoolUsage;
01003     ULONG  Reserved[3];
01004     ULONG  NameInformationLength;
01005     ULONG  TypeInformationLength;
01006     ULONG  SecurityDescriptorLength;
01007     LARGE_INTEGER  CreateTime;
01008 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
01009 
01010 typedef struct _OBJECT_NAME_INFORMATION {
01011     UNICODE_STRING Name;
01012 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
01013 
01014 typedef struct __OBJECT_TYPE_INFORMATION {
01015     UNICODE_STRING TypeName;
01016     ULONG Reserved [22];
01017 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
01018 
01019 typedef struct _PROCESS_BASIC_INFORMATION {
01020 #ifdef __WINESRC__
01021     DWORD_PTR ExitStatus;
01022     PPEB PebBaseAddress;
01023     DWORD_PTR AffinityMask;
01024     DWORD_PTR BasePriority;
01025     ULONG_PTR UniqueProcessId;
01026     ULONG_PTR InheritedFromUniqueProcessId;
01027 #else
01028     PVOID Reserved1;
01029     PPEB PebBaseAddress;
01030     PVOID Reserved2[2];
01031     ULONG_PTR UniqueProcessId;
01032     PVOID Reserved3;
01033 #endif
01034 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
01035 
01036 typedef struct _RTL_HEAP_DEFINITION {
01037     ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
01038 
01039     ULONG Unknown[11];
01040 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
01041 
01042 typedef struct _RTL_RWLOCK {
01043     RTL_CRITICAL_SECTION rtlCS;
01044 
01045     HANDLE hSharedReleaseSemaphore;
01046     UINT   uSharedWaiters;
01047 
01048     HANDLE hExclusiveReleaseSemaphore;
01049     UINT   uExclusiveWaiters;
01050 
01051     INT    iNumberActive;
01052     HANDLE hOwningThreadId;
01053     DWORD  dwTimeoutBoost;
01054     PVOID  pDebugInfo;
01055 } RTL_RWLOCK, *LPRTL_RWLOCK;
01056 
01057 /* System Information Class 0x00 */
01058 
01059 typedef struct _SYSTEM_BASIC_INFORMATION {
01060 #ifdef __WINESRC__
01061     DWORD dwUnknown1;
01062     ULONG uKeMaximumIncrement;
01063     ULONG uPageSize;
01064     ULONG uMmNumberOfPhysicalPages;
01065     ULONG uMmLowestPhysicalPage;
01066     ULONG uMmHighestPhysicalPage;
01067     ULONG uAllocationGranularity;
01068     PVOID pLowestUserAddress;
01069     PVOID pMmHighestUserAddress;
01070     ULONG uKeActiveProcessors;
01071     BYTE bKeNumberProcessors;
01072     BYTE bUnknown2;
01073     WORD wUnknown3;
01074 #else
01075     BYTE Reserved1[24];
01076     PVOID Reserved2[4];
01077     CCHAR NumberOfProcessors;
01078 #endif
01079 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
01080 
01081 /* System Information Class 0x01 */
01082 
01083 typedef struct _SYSTEM_CPU_INFORMATION {
01084     WORD Architecture;
01085     WORD Level;
01086     WORD Revision;       /* combination of CPU model and stepping */
01087     WORD Reserved;       /* always zero */
01088     DWORD FeatureSet;    /* see bit flags below */
01089 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
01090 
01091 /* definitions of bits in the Feature set for the x86 processors */
01092 #define CPU_FEATURE_VME    0x00000005   /* Virtual 86 Mode Extensions */
01093 #define CPU_FEATURE_TSC    0x00000002   /* Time Stamp Counter available */
01094 #define CPU_FEATURE_CMOV   0x00000008   /* Conditional Move instruction*/
01095 #define CPU_FEATURE_PGE    0x00000014   /* Page table Entry Global bit */
01096 #define CPU_FEATURE_PSE    0x00000024   /* Page Size Extension */
01097 #define CPU_FEATURE_MTRR   0x00000040   /* Memory Type Range Registers */
01098 #define CPU_FEATURE_CX8    0x00000080   /* Compare and eXchange 8 byte instr. */
01099 #define CPU_FEATURE_MMX    0x00000100   /* Multi Media eXtensions */
01100 #define CPU_FEATURE_X86    0x00000200   /* seems to be alway ON, on the '86 */
01101 #define CPU_FEATURE_PAT    0x00000400   /* Page Attribute Table */
01102 #define CPU_FEATURE_FXSR   0x00000800   /* FXSAVE and FXSTORE instructions */
01103 #define CPU_FEATURE_SEP    0x00001000   /* SYSENTER and SYSEXIT instructions */
01104 #define CPU_FEATURE_SSE    0x00002000   /* SSE extenstions (ext. MMX) */
01105 #define CPU_FEATURE_3DNOW  0x00008000   /* 3DNOW instructions available
01106                                            (FIXME: needs to be confirmed) */
01107 #define CPU_FEATURE_SSE2   0x00010000   /* SSE2 extensions (XMMI64) */
01108 #define CPU_FEATURE_DS     0x00020000   /* Debug Store */
01109 #define CPU_FEATURE_HTT    0x00040000   /* Hyper Threading Technology */
01110 
01111 /* System Information Class 0x02 */
01112 
01113 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
01114     BYTE Reserved1[312];
01115 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
01116 
01117 /* System Information Class 0x03 */
01118 
01119 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
01120 #ifdef __WINESRC__
01121     LARGE_INTEGER liKeBootTime;
01122     LARGE_INTEGER liKeSystemTime;
01123     LARGE_INTEGER liExpTimeZoneBias;
01124     ULONG uCurrentTimeZoneId;
01125     DWORD dwUnknown1[5];
01126 #else
01127     BYTE Reserved1[48];
01128 #endif
01129 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
01130 
01131 /* System Information Class 0x08 */
01132 
01133 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
01134 #ifdef __WINESRC__
01135     LARGE_INTEGER liIdleTime;
01136     LARGE_INTEGER liKernelTime;
01137     LARGE_INTEGER liUserTime;
01138     DWORD dwSpare[5];
01139 #else
01140     LARGE_INTEGER IdleTime;
01141     LARGE_INTEGER KernelTime;
01142     LARGE_INTEGER UserTime;
01143     LARGE_INTEGER Reserved1[2];
01144     ULONG Reserved2;
01145 #endif
01146 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
01147 
01148 /* System Information Class 0x0b */
01149 
01150 typedef struct _SYSTEM_DRIVER_INFORMATION {
01151     PVOID pvAddress;
01152     DWORD dwUnknown1;
01153     DWORD dwUnknown2;
01154     DWORD dwEntryIndex;
01155     DWORD dwUnknown3;
01156     char szName[MAX_PATH + 1];
01157 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
01158 
01159 /* System Information Class 0x10 */
01160 
01161 typedef struct _SYSTEM_HANDLE_ENTRY {
01162     ULONG  OwnerPid;
01163     BYTE   ObjectType;
01164     BYTE   HandleFlags;
01165     USHORT HandleValue;
01166     PVOID  ObjectPointer;
01167     ULONG  AccessMask;
01168 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
01169 
01170 typedef struct _SYSTEM_HANDLE_INFORMATION {
01171     ULONG               Count;
01172     SYSTEM_HANDLE_ENTRY Handle[1];
01173 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
01174 
01175 /* System Information Class 0x15 */
01176 
01177 typedef struct _SYSTEM_CACHE_INFORMATION {
01178     ULONG CurrentSize;
01179     ULONG PeakSize;
01180     ULONG PageFaultCount;
01181     ULONG MinimumWorkingSet;
01182     ULONG MaximumWorkingSet;
01183     ULONG unused[4];
01184 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
01185 
01186 /* System Information Class 0x17 */
01187 
01188 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
01189     BYTE Reserved1[24];
01190 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
01191 
01192 typedef struct _SYSTEM_CONFIGURATION_INFO {
01193     union {
01194         ULONG   OemId;
01195         struct {
01196         WORD ProcessorArchitecture;
01197         WORD Reserved;
01198     } tag1;
01199     } tag2;
01200     ULONG PageSize;
01201     PVOID MinimumApplicationAddress;
01202     PVOID MaximumApplicationAddress;
01203     ULONG ActiveProcessorMask;
01204     ULONG NumberOfProcessors;
01205     ULONG ProcessorType;
01206     ULONG AllocationGranularity;
01207     WORD  ProcessorLevel;
01208     WORD  ProcessorRevision;
01209 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
01210 
01211 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
01212     BYTE Reserved1[16];
01213 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
01214 
01215 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
01216     BYTE Reserved1[32];
01217 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
01218 
01219 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
01220     BOOLEAN  DebuggerEnabled;
01221     BOOLEAN  DebuggerNotPresent;
01222 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
01223 
01224 /* System Information Class 0x05 */
01225 
01226 typedef struct _VM_COUNTERS_ {
01227     SIZE_T PeakVirtualSize;
01228     SIZE_T VirtualSize;
01229     ULONG  PageFaultCount;
01230     SIZE_T PeakWorkingSetSize;
01231     SIZE_T WorkingSetSize;
01232     SIZE_T QuotaPeakPagedPoolUsage;
01233     SIZE_T QuotaPagedPoolUsage;
01234     SIZE_T QuotaPeakNonPagedPoolUsage;
01235     SIZE_T QuotaNonPagedPoolUsage;
01236     SIZE_T PagefileUsage;
01237     SIZE_T PeakPagefileUsage;
01238     SIZE_T PrivatePageCount;
01239 } VM_COUNTERS, *PVM_COUNTERS;
01240 
01241 typedef struct _SYSTEM_PROCESS_INFORMATION {
01242 #ifdef __WINESRC__                  /* win32/win64 */
01243     ULONG NextEntryOffset;             /* 00/00 */
01244     DWORD dwThreadCount;               /* 04/04 */
01245     DWORD dwUnknown1[6];               /* 08/08 */
01246     LARGE_INTEGER CreationTime;        /* 20/20 */
01247     LARGE_INTEGER UserTime;            /* 28/28 */
01248     LARGE_INTEGER KernelTime;          /* 30/30 */
01249     UNICODE_STRING ProcessName;        /* 38/38 */
01250     DWORD dwBasePriority;              /* 40/48 */
01251     HANDLE UniqueProcessId;            /* 44/50 */
01252     HANDLE ParentProcessId;            /* 48/58 */
01253     ULONG HandleCount;                 /* 4c/60 */
01254     DWORD dwUnknown3;                  /* 50/64 */
01255     DWORD dwUnknown4;                  /* 54/68 */
01256     VM_COUNTERS vmCounters;            /* 58/70 */
01257     IO_COUNTERS ioCounters;            /* 88/d0 */
01258     SYSTEM_THREAD_INFORMATION ti[1];   /* b8/100 */
01259 #else
01260     ULONG NextEntryOffset;             /* 00/00 */
01261     BYTE Reserved1[52];                /* 04/04 */
01262     PVOID Reserved2[3];                /* 38/38 */
01263     HANDLE UniqueProcessId;            /* 44/50 */
01264     PVOID Reserved3;                   /* 48/58 */
01265     ULONG HandleCount;                 /* 4c/60 */
01266     BYTE Reserved4[4];                 /* 50/64 */
01267     PVOID Reserved5[11];               /* 54/68 */
01268     SIZE_T PeakPagefileUsage;          /* 80/c0 */
01269     SIZE_T PrivatePageCount;           /* 84/c8 */
01270     LARGE_INTEGER Reserved6[6];        /* 88/d0 */
01271 #endif
01272 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
01273 
01274 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
01275     ULONG RegistryQuotaAllowed;
01276     ULONG RegistryQuotaUsed;
01277     PVOID Reserved1;
01278 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
01279 
01280 typedef struct _SYSTEM_TIME_ADJUSTMENT {
01281     ULONG   TimeAdjustment;
01282     BOOLEAN TimeAdjustmentDisabled;
01283 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
01284 
01285 typedef struct _TIME_FIELDS
01286 {   CSHORT Year;
01287     CSHORT Month;
01288     CSHORT Day;
01289     CSHORT Hour;
01290     CSHORT Minute;
01291     CSHORT Second;
01292     CSHORT Milliseconds;
01293     CSHORT Weekday;
01294 } TIME_FIELDS, *PTIME_FIELDS;
01295 
01296 typedef struct _WINSTATIONINFORMATIONW {
01297   BYTE Reserved2[70];
01298   ULONG LogonId;
01299   BYTE Reserved3[1140];
01300 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
01301 
01302 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
01303 
01304 typedef struct _LDR_RESOURCE_INFO
01305 {
01306     ULONG Type;
01307     ULONG Name;
01308     ULONG Language;
01309 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
01310 
01311 
01312 /* debug buffer definitions */
01313 
01314 typedef struct _DEBUG_BUFFER {
01315   HANDLE SectionHandle;
01316   PVOID  SectionBase;
01317   PVOID  RemoteSectionBase;
01318   ULONG  SectionBaseDelta;
01319   HANDLE EventPairHandle;
01320   ULONG  Unknown[2];
01321   HANDLE RemoteThreadHandle;
01322   ULONG  InfoClassMask;
01323   ULONG  SizeOfInfo;
01324   ULONG  AllocatedSize;
01325   ULONG  SectionSize;
01326   PVOID  ModuleInformation;
01327   PVOID  BackTraceInformation;
01328   PVOID  HeapInformation;
01329   PVOID  LockInformation;
01330   PVOID  Reserved[8];
01331 } DEBUG_BUFFER, *PDEBUG_BUFFER;
01332 
01333 #define PDI_MODULES                       0x01
01334 #define PDI_BACKTRACE                     0x02
01335 #define PDI_HEAPS                         0x04
01336 #define PDI_HEAP_TAGS                     0x08
01337 #define PDI_HEAP_BLOCKS                   0x10
01338 #define PDI_LOCKS                         0x20
01339 
01340 typedef struct _DEBUG_MODULE_INFORMATION {
01341   ULONG  Reserved[2];
01342   ULONG  Base;
01343   ULONG  Size;
01344   ULONG  Flags;
01345   USHORT Index;
01346   USHORT Unknown;
01347   USHORT LoadCount;
01348   USHORT ModuleNameOffset;
01349   CHAR   ImageName[256];
01350 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
01351 
01352 typedef struct _DEBUG_HEAP_INFORMATION {
01353   ULONG  Base;
01354   ULONG  Flags;
01355   USHORT Granularity;
01356   USHORT Unknown;
01357   ULONG  Allocated;
01358   ULONG  Committed;
01359   ULONG  TagCount;
01360   ULONG  BlockCount;
01361   ULONG  Reserved[7];
01362   PVOID  Tags;
01363   PVOID  Blocks;
01364 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
01365 
01366 typedef struct _DEBUG_LOCK_INFORMATION {
01367   PVOID  Address;
01368   USHORT Type;
01369   USHORT CreatorBackTraceIndex;
01370   ULONG  OwnerThreadId;
01371   ULONG  ActiveCount;
01372   ULONG  ContentionCount;
01373   ULONG  EntryCount;
01374   ULONG  RecursionCount;
01375   ULONG  NumberOfSharedWaiters;
01376   ULONG  NumberOfExclusiveWaiters;
01377 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
01378 
01379 typedef struct _PORT_MESSAGE_HEADER {
01380   USHORT DataSize;
01381   USHORT MessageSize;
01382   USHORT MessageType;
01383   USHORT VirtualRangesOffset;
01384   CLIENT_ID ClientId;
01385   ULONG MessageId;
01386   ULONG SectionSize;
01387 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
01388 
01389 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
01390 
01391 /* Wine doesn't implement atom table as NT does:
01392  * - in NT, atom tables are user space tables, which ntdll directly accesses
01393  * - on Wine, (even local) atom tables are wineserver object, hence a HANDLE
01394  */
01395 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
01396 
01397 typedef enum _ATOM_INFORMATION_CLASS {
01398    AtomBasicInformation         = 0,
01399    AtomTableInformation         = 1,
01400 } ATOM_INFORMATION_CLASS;
01401 
01402 typedef struct _ATOM_BASIC_INFORMATION {
01403    USHORT       ReferenceCount;
01404    USHORT       Pinned;
01405    USHORT       NameLength;
01406    WCHAR        Name[1];
01407 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
01408 
01409 /* FIXME: names probably not correct */
01410 typedef struct _RTL_HANDLE
01411 {
01412     struct _RTL_HANDLE * Next;
01413 } RTL_HANDLE;
01414 
01415 /* FIXME: names probably not correct */
01416 typedef struct _RTL_HANDLE_TABLE
01417 {
01418     ULONG MaxHandleCount;  /* 0x00 */
01419     ULONG HandleSize;      /* 0x04 */
01420     ULONG Unused[2];       /* 0x08-0x0c */
01421     PVOID NextFree;        /* 0x10 */
01422     PVOID FirstHandle;     /* 0x14 */
01423     PVOID ReservedMemory;  /* 0x18 */
01424     PVOID MaxHandle;       /* 0x1c */
01425 } RTL_HANDLE_TABLE;
01426 
01427 /***********************************************************************
01428  * Defines
01429  */
01430 
01431 /* flags for NtCreateFile and NtOpenFile */
01432 #define FILE_DIRECTORY_FILE             0x00000001
01433 #define FILE_WRITE_THROUGH              0x00000002
01434 #define FILE_SEQUENTIAL_ONLY            0x00000004
01435 #define FILE_NO_INTERMEDIATE_BUFFERING  0x00000008
01436 #define FILE_SYNCHRONOUS_IO_ALERT       0x00000010
01437 #define FILE_SYNCHRONOUS_IO_NONALERT    0x00000020
01438 #define FILE_NON_DIRECTORY_FILE         0x00000040
01439 #define FILE_CREATE_TREE_CONNECTION     0x00000080
01440 #define FILE_COMPLETE_IF_OPLOCKED       0x00000100
01441 #define FILE_NO_EA_KNOWLEDGE            0x00000200
01442 #define FILE_OPEN_REMOTE_INSTANCE       0x00000400
01443 #define FILE_RANDOM_ACCESS              0x00000800
01444 #define FILE_DELETE_ON_CLOSE            0x00001000
01445 #define FILE_OPEN_BY_FILE_ID            0x00002000
01446 #define FILE_OPEN_FOR_BACKUP_INTENT     0x00004000
01447 #define FILE_NO_COMPRESSION             0x00008000
01448 #define FILE_RESERVE_OPFILTER           0x00100000
01449 #define FILE_TRANSACTED_MODE            0x00200000
01450 #define FILE_OPEN_OFFLINE_FILE          0x00400000
01451 #define FILE_OPEN_FOR_FREE_SPACE_QUERY  0x00800000
01452 
01453 #define FILE_ATTRIBUTE_VALID_FLAGS      0x00007fb7
01454 #define FILE_ATTRIBUTE_VALID_SET_FLAGS  0x000031a7
01455 
01456 /* status for NtCreateFile or NtOpenFile */
01457 #define FILE_SUPERSEDED                 0
01458 #define FILE_OPENED                     1
01459 #define FILE_CREATED                    2
01460 #define FILE_OVERWRITTEN                3
01461 #define FILE_EXISTS                     4
01462 #define FILE_DOES_NOT_EXIST             5
01463 
01464 /* disposition for NtCreateFile */
01465 #define FILE_SUPERSEDE                  0
01466 #define FILE_OPEN                       1
01467 #define FILE_CREATE                     2
01468 #define FILE_OPEN_IF                    3
01469 #define FILE_OVERWRITE                  4
01470 #define FILE_OVERWRITE_IF               5
01471 #define FILE_MAXIMUM_DISPOSITION        5
01472 
01473 /* Characteristics of a File System */
01474 #define FILE_REMOVABLE_MEDIA            0x00000001
01475 #define FILE_READ_ONLY_DEVICE           0x00000002
01476 #define FILE_FLOPPY_DISKETTE            0x00000004
01477 #define FILE_WRITE_ONE_MEDIA            0x00000008
01478 #define FILE_REMOTE_DEVICE              0x00000010
01479 #define FILE_DEVICE_IS_MOUNTED          0x00000020
01480 #define FILE_VIRTUAL_VOLUME             0x00000040
01481 #define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
01482 #define FILE_DEVICE_SECURE_OPEN         0x00000100
01483 
01484 /* options for NtCreateNamedPipeFile */
01485 #define FILE_PIPE_INBOUND               0x00000000
01486 #define FILE_PIPE_OUTBOUND              0x00000001
01487 #define FILE_PIPE_FULL_DUPLEX           0x00000002
01488 
01489 #if (_WIN32_WINNT >= 0x0501)
01490 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
01491 #endif /* (_WIN32_WINNT >= 0x0501) */
01492 
01493 #define LOGONID_CURRENT    ((ULONG)-1)
01494 
01495 #define OBJ_INHERIT          0x00000002L
01496 #define OBJ_PERMANENT        0x00000010L
01497 #define OBJ_EXCLUSIVE        0x00000020L
01498 #define OBJ_CASE_INSENSITIVE 0x00000040L
01499 #define OBJ_OPENIF           0x00000080L
01500 #define OBJ_OPENLINK         0x00000100L
01501 #define OBJ_KERNEL_HANDLE    0x00000200L
01502 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
01503 
01504 #define SERVERNAME_CURRENT ((HANDLE)NULL)
01505 
01506 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
01507 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
01508 
01509 
01510 /* DbgPrintEx default levels */
01511 #define DPFLTR_ERROR_LEVEL     0
01512 #define DPFLTR_WARNING_LEVEL   1
01513 #define DPFLTR_TRACE_LEVEL     2
01514 #define DPFLTR_INFO_LEVEL      3
01515 #define DPFLTR_MASK    0x8000000
01516 
01517 /* Well-known LUID values */
01518 #define SE_MIN_WELL_KNOWN_PRIVILEGE       2L
01519 #define SE_CREATE_TOKEN_PRIVILEGE         2L
01520 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE   3L
01521 #define SE_LOCK_MEMORY_PRIVILEGE          4L
01522 #define SE_INCREASE_QUOTA_PRIVILEGE       5L
01523 #define SE_UNSOLICITED_INPUT_PRIVILEGE    6L /* obsolete */
01524 #define SE_MACHINE_ACCOUNT_PRIVILEGE      6L
01525 #define SE_TCB_PRIVILEGE                  7L
01526 #define SE_SECURITY_PRIVILEGE             8L
01527 #define SE_TAKE_OWNERSHIP_PRIVILEGE       9L
01528 #define SE_LOAD_DRIVER_PRIVILEGE         10L
01529 #define SE_SYSTEM_PROFILE_PRIVILEGE      11L
01530 #define SE_SYSTEMTIME_PRIVILEGE          12L
01531 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
01532 #define SE_INC_BASE_PRIORITY_PRIVILEGE   14L
01533 #define SE_CREATE_PAGEFILE_PRIVILEGE     15L
01534 #define SE_CREATE_PERMANENT_PRIVILEGE    16L
01535 #define SE_BACKUP_PRIVILEGE              17L
01536 #define SE_RESTORE_PRIVILEGE             18L
01537 #define SE_SHUTDOWN_PRIVILEGE            19L
01538 #define SE_DEBUG_PRIVILEGE               20L
01539 #define SE_AUDIT_PRIVILEGE               21L
01540 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE  22L
01541 #define SE_CHANGE_NOTIFY_PRIVILLEGE      23L
01542 #define SE_REMOTE_SHUTDOWN_PRIVILEGE     24L
01543 #define SE_UNDOCK_PRIVILEGE              25L
01544 #define SE_SYNC_AGENT_PRIVILEGE          26L
01545 #define SE_ENABLE_DELEGATION_PRIVILEGE   27L
01546 #define SE_MANAGE_VOLUME_PRIVILEGE       28L
01547 #define SE_IMPERSONATE_PRIVILEGE         29L
01548 #define SE_CREATE_GLOBAL_PRIVILEGE       30L
01549 #define SE_MAX_WELL_KNOWN_PRIVILEGE      SE_CREATE_GLOBAL_PRIVILEGE
01550 
01551 /* NtGlobalFlag bits */
01552 #define FLG_STOP_ON_EXCEPTION            0x00000001
01553 #define FLG_SHOW_LDR_SNAPS               0x00000002
01554 #define FLG_DEBUG_INITIAL_COMMAND        0x00000004
01555 #define FLG_STOP_ON_HUNG_GUI             0x00000008
01556 #define FLG_HEAP_ENABLE_TAIL_CHECK       0x00000010
01557 #define FLG_HEAP_ENABLE_FREE_CHECK       0x00000020
01558 #define FLG_HEAP_VALIDATE_PARAMETERS     0x00000040
01559 #define FLG_HEAP_VALIDATE_ALL            0x00000080
01560 #define FLG_APPLICATION_VERIFIER         0x00000100
01561 #define FLG_POOL_ENABLE_TAGGING          0x00000400
01562 #define FLG_HEAP_ENABLE_TAGGING          0x00000800
01563 #define FLG_USER_STACK_TRACE_DB          0x00001000
01564 #define FLG_KERNEL_STACK_TRACE_DB        0x00002000
01565 #define FLG_MAINTAIN_OBJECT_TYPELIST     0x00004000
01566 #define FLG_HEAP_ENABLE_TAG_BY_DLL       0x00008000
01567 #define FLG_DISABLE_STACK_EXTENSION      0x00010000
01568 #define FLG_ENABLE_CSRDEBUG              0x00020000
01569 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD    0x00040000
01570 #define FLG_DISABLE_PAGE_KERNEL_STACKS   0x00080000
01571 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS    0x00100000
01572 #define FLG_HEAP_DISABLE_COALESCING      0x00200000
01573 #define FLG_ENABLE_CLOSE_EXCEPTIONS      0x00400000
01574 #define FLG_ENABLE_EXCEPTION_LOGGING     0x00800000
01575 #define FLG_ENABLE_HANDLE_TYPE_TAGGING   0x01000000
01576 #define FLG_HEAP_PAGE_ALLOCS             0x02000000
01577 #define FLG_DEBUG_INITIAL_COMMAND_EX     0x04000000
01578 #define FLG_DISABLE_DBGPRINT             0x08000000
01579 #define FLG_CRITSEC_EVENT_CREATION       0x10000000
01580 #define FLG_LDR_TOP_DOWN                 0x20000000
01581 #define FLG_ENABLE_HANDLE_EXCEPTIONS     0x40000000
01582 #define FLG_DISABLE_PROTDLLS             0x80000000
01583 
01584 /* Rtl*Registry* functions structs and defines */
01585 #define RTL_REGISTRY_ABSOLUTE             0
01586 #define RTL_REGISTRY_SERVICES             1
01587 #define RTL_REGISTRY_CONTROL              2
01588 #define RTL_REGISTRY_WINDOWS_NT           3
01589 #define RTL_REGISTRY_DEVICEMAP            4
01590 #define RTL_REGISTRY_USER                 5
01591 
01592 #define RTL_REGISTRY_HANDLE       0x40000000
01593 #define RTL_REGISTRY_OPTIONAL     0x80000000
01594 
01595 #define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
01596 #define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
01597 #define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
01598 #define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
01599 #define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
01600 #define RTL_QUERY_REGISTRY_DIRECT         0x00000020
01601 #define RTL_QUERY_REGISTRY_DELETE         0x00000040
01602 
01603 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
01604                                                         ULONG  ValueType,
01605                                                         PVOID  ValueData,
01606                                                         ULONG  ValueLength,
01607                                                         PVOID  Context,
01608                                                         PVOID  EntryContext);
01609 
01610 typedef struct _RTL_QUERY_REGISTRY_TABLE
01611 {
01612   PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
01613   ULONG  Flags;
01614   PWSTR  Name;
01615   PVOID  EntryContext;
01616   ULONG  DefaultType;
01617   PVOID  DefaultData;
01618   ULONG  DefaultLength;
01619 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
01620 
01621 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
01622 {
01623   PUNICODE_STRING ValueName;
01624   ULONG DataLength;
01625   ULONG DataOffset;
01626   ULONG Type;
01627 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
01628 
01629 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
01630 
01631 typedef enum _EVENT_TYPE {
01632   NotificationEvent,
01633   SynchronizationEvent
01634 } EVENT_TYPE, *PEVENT_TYPE;
01635 
01636 typedef enum _EVENT_INFORMATION_CLASS {
01637   EventBasicInformation
01638 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
01639 
01640 typedef struct _EVENT_BASIC_INFORMATION {
01641   EVENT_TYPE EventType;
01642   LONG EventState;
01643 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
01644 
01645 typedef enum _SEMAPHORE_INFORMATION_CLASS {
01646   SemaphoreBasicInformation
01647 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
01648 
01649 typedef struct _SEMAPHORE_BASIC_INFORMATION {
01650   ULONG CurrentCount;
01651   ULONG MaximumCount;
01652 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
01653 
01654 typedef enum _SECTION_INFORMATION_CLASS
01655 {
01656   SectionBasicInformation,
01657   SectionImageInformation,
01658 } SECTION_INFORMATION_CLASS;
01659 
01660 typedef struct _SECTION_BASIC_INFORMATION {
01661   ULONG BaseAddress;
01662   ULONG Attributes;
01663   LARGE_INTEGER Size;
01664 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
01665 
01666 typedef struct _SECTION_IMAGE_INFORMATION {
01667   PVOID EntryPoint;
01668   ULONG StackZeroBits;
01669   ULONG StackReserved;
01670   ULONG StackCommit;
01671   ULONG ImageSubsystem;
01672   WORD SubsystemVersionLow;
01673   WORD SubsystemVersionHigh;
01674   ULONG Unknown1;
01675   ULONG ImageCharacteristics;
01676   ULONG ImageMachineType;
01677   ULONG Unknown2[3];
01678 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
01679 
01680 typedef struct _LPC_SECTION_WRITE {
01681   ULONG Length;
01682   HANDLE SectionHandle;
01683   ULONG SectionOffset;
01684   ULONG ViewSize;
01685   PVOID ViewBase;
01686   PVOID TargetViewBase;
01687 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
01688 
01689 typedef struct _LPC_SECTION_READ {
01690   ULONG Length;
01691   ULONG ViewSize;
01692   PVOID ViewBase;
01693 } LPC_SECTION_READ, *PLPC_SECTION_READ;
01694 
01695 typedef struct _LPC_MESSAGE {
01696   USHORT DataSize;
01697   USHORT MessageSize;
01698   USHORT MessageType;
01699   USHORT VirtualRangesOffset;
01700   CLIENT_ID ClientId;
01701   ULONG MessageId;
01702   ULONG SectionSize;
01703   UCHAR Data[ANYSIZE_ARRAY];
01704 } LPC_MESSAGE, *PLPC_MESSAGE;
01705 
01706 typedef enum _SHUTDOWN_ACTION {
01707   ShutdownNoReboot,
01708   ShutdownReboot,
01709   ShutdownPowerOff
01710 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
01711 
01712 typedef enum _KPROFILE_SOURCE {
01713   ProfileTime,
01714   ProfileAlignmentFixup,
01715   ProfileTotalIssues,
01716   ProfilePipelineDry,
01717   ProfileLoadInstructions,
01718   ProfilePipelineFrozen,
01719   ProfileBranchInstructions,
01720   ProfileTotalNonissues,
01721   ProfileDcacheMisses,
01722   ProfileIcacheMisses,
01723   ProfileCacheMisses,
01724   ProfileBranchMispredictions,
01725   ProfileStoreInstructions,
01726   ProfileFpInstructions,
01727   ProfileIntegerInstructions,
01728   Profile2Issue,
01729   Profile3Issue,
01730   Profile4Issue,
01731   ProfileSpecialInstructions,
01732   ProfileTotalCycles,
01733   ProfileIcacheIssues,
01734   ProfileDcacheAccesses,
01735   ProfileMemoryBarrierCycles,
01736   ProfileLoadLinkedIssues,
01737   ProfileMaximum
01738 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
01739 
01740 typedef struct _OBJDIR_INFORMATION {
01741   UNICODE_STRING ObjectName;
01742   UNICODE_STRING ObjectTypeName;
01743   BYTE Data[1];
01744 } OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
01745 
01746 typedef struct _INITIAL_TEB {
01747   PVOID StackBase;
01748   PVOID StackLimit;
01749   PVOID StackCommit;
01750   PVOID StackCommitMax;
01751   PVOID StackReserved;
01752 } INITIAL_TEB, *PINITIAL_TEB;
01753 
01754 typedef enum _PORT_INFORMATION_CLASS {
01755   PortNoInformation
01756 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
01757 
01758 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
01759   IoCompletionBasicInformation
01760 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
01761 
01762 typedef struct _FILE_COMPLETION_INFORMATION {
01763     HANDLE CompletionPort;
01764     ULONG_PTR CompletionKey;
01765 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
01766 
01767 typedef enum _HARDERROR_RESPONSE_OPTION {
01768   OptionAbortRetryIgnore,
01769   OptionOk,
01770   OptionOkCancel,
01771   OptionRetryCancel,
01772   OptionYesNo,
01773   OptionYesNoCancel,
01774   OptionShutdownSystem
01775 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
01776 
01777 typedef enum _HARDERROR_RESPONSE {
01778   ResponseReturnToCaller,
01779   ResponseNotHandled,
01780   ResponseAbort,
01781   ResponseCancel,
01782   ResponseIgnore,
01783   ResponseNo,
01784   ResponseOk,
01785   ResponseRetry,
01786   ResponseYes
01787 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
01788 
01789 typedef enum _SYSDBG_COMMAND {
01790   SysDbgQueryModuleInformation,
01791   SysDbgQueryTraceInformation,
01792   SysDbgSetTracepoint,
01793   SysDbgSetSpecialCall,
01794   SysDbgClearSpecialCalls,
01795   SysDbgQuerySpecialCalls
01796 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
01797 
01798 /***********************************************************************
01799  * Function declarations
01800  */
01801 
01802 #if defined(__i386__) && defined(__GNUC__)
01803 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
01804 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
01805 #else  /* __i386__ && __GNUC__ */
01806 void WINAPI DbgBreakPoint(void);
01807 void WINAPI DbgUserBreakPoint(void);
01808 #endif  /* __i386__ && __GNUC__ */
01809 //NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
01810 NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
01811 
01812 NTSTATUS  WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
01813 NTSTATUS  WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
01814 NTSTATUS  WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
01815 NTSTATUS  WINAPI LdrGetDllHandle(ULONG, ULONG, const UNICODE_STRING*, HMODULE*);
01816 NTSTATUS  WINAPI LdrGetDllHandleEx(ULONG,PWSTR,PULONG,PUNICODE_STRING,PVOID);
01817 NTSTATUS  WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
01818 void      WINAPI LdrInitializeThunk(HANDLE,ULONG,ULONG,ULONG);
01819 NTSTATUS  WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
01820 void      WINAPI LdrShutdownProcess(void);
01821 void      WINAPI LdrShutdownThread(void);
01822 NTSTATUS  WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
01823 NTSTATUS  WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
01824 NTSTATUS  WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PULONG,PULONG,PBOOLEAN);
01825 NTSTATUS  WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
01826 NTSTATUS  WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
01827 NTSTATUS  WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
01828 NTSTATUS  WINAPI NtAlertResumeThread(HANDLE,PULONG);
01829 NTSTATUS  WINAPI NtAlertThread(HANDLE ThreadHandle);
01830 NTSTATUS  WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
01831 NTSTATUS  WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
01832 NTSTATUS  WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
01833 NTSTATUS  WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
01834 NTSTATUS  WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
01835 NTSTATUS  WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
01836 NTSTATUS  WINAPI NtClearEvent(HANDLE);
01837 NTSTATUS  WINAPI NtClose(HANDLE);
01838 NTSTATUS  WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
01839 NTSTATUS  WINAPI NtCompleteConnectPort(HANDLE);
01840 NTSTATUS  WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
01841 NTSTATUS  WINAPI NtContinue(PCONTEXT,BOOLEAN);
01842 NTSTATUS  WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01843 NTSTATUS  WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
01844 NTSTATUS  WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01845 NTSTATUS  WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
01846 NTSTATUS  WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
01847 NTSTATUS  WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
01848 NTSTATUS  WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
01849 NTSTATUS  WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
01850 NTSTATUS  WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
01851 NTSTATUS  WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
01852 NTSTATUS  WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
01853 NTSTATUS  WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
01854 //NTSTATUS  WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
01855 NTSTATUS  WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
01856 NTSTATUS  WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
01857 NTSTATUS  WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
01858 NTSTATUS  WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
01859 NTSTATUS  WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
01860 NTSTATUS  WINAPI NtCreateToken(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,TOKEN_TYPE,PLUID,PLARGE_INTEGER,PTOKEN_USER,PTOKEN_GROUPS,PTOKEN_PRIVILEGES,PTOKEN_OWNER,PTOKEN_PRIMARY_GROUP,PTOKEN_DEFAULT_DACL,PTOKEN_SOURCE);
01861 NTSTATUS  WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
01862 NTSTATUS  WINAPI NtDeleteAtom(RTL_ATOM);
01863 NTSTATUS  WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
01864 NTSTATUS  WINAPI NtDeleteKey(HANDLE);
01865 NTSTATUS  WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
01866 NTSTATUS  WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
01867 NTSTATUS  WINAPI NtDisplayString(PUNICODE_STRING);
01868 NTSTATUS  WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
01869 NTSTATUS  WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
01870 NTSTATUS  WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
01871 NTSTATUS  WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01872 NTSTATUS  WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
01873 NTSTATUS  WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
01874 NTSTATUS  WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
01875 NTSTATUS  WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
01876 NTSTATUS  WINAPI NtFlushKey(HANDLE);
01877 NTSTATUS  WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,PIO_STATUS_BLOCK);
01878 NTSTATUS  WINAPI NtFlushWriteBuffer(VOID);
01879 NTSTATUS  WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
01880 NTSTATUS  WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
01881 NTSTATUS  WINAPI NtGetContextThread(HANDLE,CONTEXT*);
01882 NTSTATUS  WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
01883 ULONG     WINAPI NtGetTickCount(VOID);
01884 NTSTATUS  WINAPI NtImpersonateAnonymousToken(HANDLE);
01885 NTSTATUS  WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
01886 NTSTATUS  WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
01887 NTSTATUS  WINAPI NtInitializeRegistry(BOOLEAN);
01888 NTSTATUS  WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
01889 NTSTATUS  WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
01890 NTSTATUS  WINAPI NtLoadDriver(const UNICODE_STRING *);
01891 NTSTATUS  WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
01892 NTSTATUS  WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
01893 NTSTATUS  WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
01894 NTSTATUS  WINAPI NtMakeTemporaryObject(HANDLE);
01895 NTSTATUS  WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
01896 NTSTATUS  WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
01897 NTSTATUS  WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
01898 NTSTATUS  WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01899 NTSTATUS  WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
01900 NTSTATUS  WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01901 NTSTATUS  WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
01902 NTSTATUS  WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01903 NTSTATUS  WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
01904 NTSTATUS  WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
01905 NTSTATUS  WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
01906 NTSTATUS  WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
01907 NTSTATUS  WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
01908 NTSTATUS  WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
01909 NTSTATUS  WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
01910 NTSTATUS  WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
01911 NTSTATUS  WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
01912 NTSTATUS  WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
01913 NTSTATUS  WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
01914 NTSTATUS  WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
01915 NTSTATUS  WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
01916 NTSTATUS  WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
01917 NTSTATUS  WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
01918 NTSTATUS  WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
01919 NTSTATUS  WINAPI NtPulseEvent(HANDLE,PULONG);
01920 NTSTATUS  WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
01921 NTSTATUS  WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
01922 NTSTATUS  WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
01923 NTSTATUS  WINAPI NtQueryDefaultUILanguage(LANGID*);
01924 NTSTATUS  WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
01925 NTSTATUS  WINAPI NtQueryDirectoryObject(HANDLE,POBJDIR_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
01926 NTSTATUS  WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
01927 NTSTATUS  WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01928 NTSTATUS  WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
01929 NTSTATUS  WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,RTL_ATOM_TABLE,ULONG,ULONG*);
01930 NTSTATUS  WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
01931 NTSTATUS  WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01932 NTSTATUS  WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
01933 NTSTATUS  WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
01934 NTSTATUS  WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
01935 NTSTATUS  WINAPI NtQueryInstallUILanguage(LANGID*);
01936 NTSTATUS  WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
01937 NTSTATUS  WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01938 NTSTATUS  WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
01939 NTSTATUS  WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
01940 NTSTATUS  WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01941 NTSTATUS  WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
01942 NTSTATUS  WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
01943 NTSTATUS  WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
01944 NTSTATUS  WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
01945 NTSTATUS  WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01946 NTSTATUS  WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01947 NTSTATUS  WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
01948 NTSTATUS  WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
01949 NTSTATUS  WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01950 NTSTATUS  WINAPI NtQuerySystemTime(PLARGE_INTEGER);
01951 NTSTATUS  WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
01952 NTSTATUS  WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
01953 NTSTATUS  WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
01954 NTSTATUS  WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
01955 NTSTATUS  WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
01956 void      WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
01957 NTSTATUS  WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
01958 NTSTATUS  WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
01959 NTSTATUS  WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT,ULONG,PLARGE_INTEGER,PULONG);
01960 NTSTATUS  WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
01961 NTSTATUS  WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
01962 NTSTATUS  WINAPI NtRegisterThreadTerminatePort(HANDLE);
01963 NTSTATUS  WINAPI NtReleaseMutant(HANDLE,PLONG);
01964 NTSTATUS  WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
01965 NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG,PULONG,PIO_STATUS_BLOCK,PLARGE_INTEGER);
01966 NTSTATUS  WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
01967 NTSTATUS  WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
01968 NTSTATUS  WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
01969 NTSTATUS  WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
01970 NTSTATUS  WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
01971 NTSTATUS  WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
01972 NTSTATUS  WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
01973 NTSTATUS  WINAPI NtResetEvent(HANDLE,PULONG);
01974 NTSTATUS  WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
01975 NTSTATUS  WINAPI NtResumeThread(HANDLE,PULONG);
01976 NTSTATUS  WINAPI NtSaveKey(HANDLE,HANDLE);
01977 NTSTATUS  WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
01978 NTSTATUS  WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
01979 NTSTATUS  WINAPI NtSetDefaultHardErrorPort(HANDLE);
01980 NTSTATUS  WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
01981 NTSTATUS  WINAPI NtSetDefaultUILanguage(LANGID);
01982 NTSTATUS  WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
01983 NTSTATUS  WINAPI NtSetEvent(HANDLE,PULONG);
01984 NTSTATUS  WINAPI NtSetHighEventPair(HANDLE);
01985 NTSTATUS  WINAPI NtSetHighWaitLowEventPair(HANDLE);
01986 NTSTATUS  WINAPI NtSetHighWaitLowThread(VOID);
01987 NTSTATUS  WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
01988 NTSTATUS  WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
01989 NTSTATUS  WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
01990 NTSTATUS  WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
01991 NTSTATUS  WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
01992 NTSTATUS  WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
01993 NTSTATUS  WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
01994 NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
01995 NTSTATUS  WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
01996 NTSTATUS  WINAPI NtSetLowEventPair(HANDLE);
01997 NTSTATUS  WINAPI NtSetLowWaitHighEventPair(HANDLE);
01998 NTSTATUS  WINAPI NtSetLowWaitHighThread(VOID);
01999 NTSTATUS  WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
02000 NTSTATUS  WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
02001 NTSTATUS  WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
02002 NTSTATUS  WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
02003 NTSTATUS  WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
02004 NTSTATUS  WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
02005 NTSTATUS  WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
02006 NTSTATUS  WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
02007 NTSTATUS  WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
02008 NTSTATUS  WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
02009 NTSTATUS  WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
02010 NTSTATUS  WINAPI NtStartProfile(HANDLE);
02011 NTSTATUS  WINAPI NtStopProfile(HANDLE);
02012 NTSTATUS  WINAPI NtSuspendThread(HANDLE,PULONG);
02013 NTSTATUS  WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
02014 NTSTATUS  WINAPI NtTerminateProcess(HANDLE,LONG);
02015 NTSTATUS  WINAPI NtTerminateThread(HANDLE,LONG);
02016 NTSTATUS  WINAPI NtTestAlert(VOID);
02017 NTSTATUS  WINAPI NtUnloadDriver(const UNICODE_STRING *);
02018 NTSTATUS  WINAPI NtUnloadKey(HANDLE);
02019 NTSTATUS  WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
02020 NTSTATUS  WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
02021 NTSTATUS  WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
02022 NTSTATUS  WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
02023 NTSTATUS  WINAPI NtVdmControl(ULONG,PVOID);
02024 NTSTATUS  WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
02025 NTSTATUS  WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
02026 NTSTATUS  WINAPI NtWaitHighEventPair(HANDLE);
02027 NTSTATUS  WINAPI NtWaitLowEventPair(HANDLE);
02028 NTSTATUS  WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
02029 NTSTATUS  WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT,ULONG,PLARGE_INTEGER,PULONG);
02030 NTSTATUS  WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
02031 NTSTATUS  WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
02032 NTSTATUS  WINAPI NtYieldExecution(void);
02033 
02034 void      WINAPI RtlAcquirePebLock(void);
02035 BYTE      WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
02036 BYTE      WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
02037 NTSTATUS  WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
02038 NTSTATUS  WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
02039 NTSTATUS  WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
02040 NTSTATUS  WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
02041 NTSTATUS  WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
02042 NTSTATUS  WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
02043 NTSTATUS  WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
02044 PVOID     WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
02045 NTSTATUS  WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
02046 NTSTATUS  WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
02047 RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
02048 PVOID     WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T);
02049 WCHAR     WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
02050 DWORD     WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
02051 NTSTATUS  WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
02052 NTSTATUS  WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
02053 NTSTATUS  WINAPI RtlAppendStringToString(STRING *,const STRING *);
02054 NTSTATUS  WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
02055 NTSTATUS  WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
02056 BOOLEAN   WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
02057 BOOLEAN   WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
02058 BOOLEAN   WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
02059 BOOLEAN   WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
02060 
02061 NTSTATUS  WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
02062 NTSTATUS  WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
02063 void      WINAPI RtlClearAllBits(PRTL_BITMAP);
02064 void      WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
02065 PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
02066 ULONG     WINAPI RtlCompactHeap(HANDLE,ULONG);
02067 LONG      WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
02068 LONG      WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
02069 DWORD     WINAPI RtlComputeCrc32(DWORD,PBYTE,INT);
02070 NTSTATUS  WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
02071 LONGLONG  WINAPI RtlConvertLongToLargeInteger(LONG);
02072 ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
02073 void      WINAPI RtlCopyLuid(PLUID,const LUID*);
02074 void      WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
02075 BOOLEAN   WINAPI RtlCopySid(DWORD,PSID,PSID);
02076 NTSTATUS  WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
02077 void      WINAPI RtlCopyString(STRING*,const STRING*);
02078 void      WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
02079 NTSTATUS  WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
02080 NTSTATUS  WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
02081 NTSTATUS  WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
02082 HANDLE    WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
02083 NTSTATUS  WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
02084                                             const UNICODE_STRING*,const UNICODE_STRING*,
02085                                             const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
02086                                             const UNICODE_STRING*,const UNICODE_STRING*,
02087                                             const UNICODE_STRING*);
02088 NTSTATUS  WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
02089 BOOLEAN   WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
02090 BOOLEAN   WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
02091 NTSTATUS  WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
02092 
02093 NTSTATUS  WINAPI RtlDeleteAce(PACL,DWORD);
02094 NTSTATUS  WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
02095 NTSTATUS  WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
02096 NTSTATUS  WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
02097 void      WINAPI RtlDeleteResource(LPRTL_RWLOCK);
02098 DWORD     WINAPI RtlDeleteSecurityObject(DWORD);
02099 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
02100 NTSTATUS  WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
02101 NTSTATUS  WINAPI RtlDestroyEnvironment(PWSTR);
02102 NTSTATUS  WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
02103 HANDLE    WINAPI RtlDestroyHeap(HANDLE);
02104 void      WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
02105 NTSTATUS  WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
02106 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
02107 BOOLEAN   WINAPI RtlDoesFileExists_U(LPCWSTR);
02108 BOOLEAN   WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PCWSTR*,CURDIR*);
02109 ULONG     WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
02110 WCHAR     WINAPI RtlDowncaseUnicodeChar(WCHAR);
02111 NTSTATUS  WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
02112 void      WINAPI RtlDumpResource(LPRTL_RWLOCK);
02113 NTSTATUS  WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
02114 
02115 NTSTATUS  WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
02116 LONGLONG  WINAPI RtlEnlargedIntegerMultiply(INT,INT);
02117 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
02118 UINT      WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
02119 NTSTATUS  WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
02120 void      WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
02121 NTSTATUS  WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
02122 NTSTATUS  WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
02123 BOOLEAN   WINAPI RtlEqualLuid(const LUID*,const LUID*);
02124 BOOL      WINAPI RtlEqualPrefixSid(PSID,PSID);
02125 BOOL      WINAPI RtlEqualSid(PSID,PSID);
02126 BOOLEAN   WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
02127 BOOLEAN   WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
02128 DECLSPEC_NORETURN void      WINAPI RtlExitUserThread(ULONG);
02129 NTSTATUS  WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
02130 LONGLONG  WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
02131 LONGLONG  WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
02132 LONGLONG  WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
02133 
02134 NTSTATUS  WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
02135 ULONG     WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
02136 ULONG     WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
02137 ULONG     WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
02138 ULONG     WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
02139 ULONG     WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
02140 CCHAR     WINAPI RtlFindLeastSignificantBit(ULONGLONG);
02141 ULONG     WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
02142 ULONG     WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
02143 NTSTATUS  WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
02144 CCHAR     WINAPI RtlFindMostSignificantBit(ULONGLONG);
02145 ULONG     WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
02146 ULONG     WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
02147 ULONG     WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
02148 ULONG     WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
02149 ULONG     WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
02150 BOOLEAN   WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
02151 NTSTATUS  WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
02152 NTSTATUS  WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
02153 void      WINAPI RtlFreeAnsiString(PANSI_STRING);
02154 BOOLEAN   WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
02155 BOOLEAN   WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
02156 void      WINAPI RtlFreeOemString(POEM_STRING);
02157 DWORD     WINAPI RtlFreeSid(PSID);
02158 void      WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
02159 
02160 NTSTATUS  WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
02161 NTSTATUS  WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
02162 NTSTATUS  WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
02163 PEB *     WINAPI RtlGetCurrentPeb(void);
02164 NTSTATUS  WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
02165 ULONG     WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
02166 NTSTATUS  WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
02167 NTSTATUS  WINAPI RtlGetLastNtStatus(void);
02168 DWORD     WINAPI RtlGetLastWin32Error(void);
02169 DWORD     WINAPI RtlGetLongestNtPathLength(void);
02170 BOOLEAN   WINAPI RtlGetNtProductType(LPDWORD);
02171 NTSTATUS  WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
02172 ULONG     WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
02173 NTSTATUS  WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
02174 //NTSTATUS  WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
02175 NTSTATUS  WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
02176 
02177 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
02178 PVOID     WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
02179 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
02180 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
02181 PVOID     WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
02182 NTSTATUS  WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
02183 void      WINAPI RtlInitString(PSTRING,PCSZ);
02184 void      WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
02185 void      WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
02186 NTSTATUS  WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
02187 NTSTATUS  WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
02188 NTSTATUS  WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
02189 void      WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
02190 void      WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
02191 void      WINAPI RtlInitializeResource(LPRTL_RWLOCK);
02192 BOOL      WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
02193 
02194 NTSTATUS  WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
02195 NTSTATUS  WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
02196 NTSTATUS  WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
02197 ULONG     WINAPI RtlIsDosDeviceName_U(PCWSTR);
02198 BOOLEAN   WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
02199 BOOLEAN   WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
02200 BOOLEAN   WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
02201 BOOLEAN   WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
02202 
02203 LONGLONG  WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
02204 LONGLONG  WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
02205 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
02206 LONGLONG  WINAPI RtlLargeIntegerNegate(LONGLONG);
02207 LONGLONG  WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
02208 LONGLONG  WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
02209 LONGLONG  WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
02210 NTSTATUS  WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
02211 NTSTATUS  WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
02212 DWORD     WINAPI RtlLengthRequiredSid(DWORD);
02213 ULONG     WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
02214 DWORD     WINAPI RtlLengthSid(PSID);
02215 NTSTATUS  WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
02216 BOOLEAN   WINAPI RtlLockHeap(HANDLE);
02217 NTSTATUS  WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
02218 
02219 NTSTATUS  WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
02220 void      WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
02221 NTSTATUS  WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
02222 NTSTATUS  WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
02223 
02224 DWORD     WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
02225 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
02226 ULONG     WINAPI RtlNtStatusToDosError(NTSTATUS);
02227 ULONG     WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
02228 ULONG     WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
02229 ULONG     WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
02230 
02231 UINT      WINAPI RtlOemStringToUnicodeSize(const STRING*);
02232 NTSTATUS  WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
02233 NTSTATUS  WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
02234 DWORD     WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
02235 
02236 NTSTATUS  WINAPI RtlPinAtomInAtomTable(PRTL_ATOM_TABLE,RTL_ATOM);
02237 BOOLEAN   WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
02238 BOOLEAN   WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
02239 
02240 NTSTATUS  WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
02241 NTSTATUS  WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
02242 NTSTATUS  WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
02243 NTSTATUS  WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
02244 NTSTATUS  WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
02245 NTSTATUS  WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
02246 void      WINAPI RtlRaiseException(PEXCEPTION_RECORD);
02247 void      WINAPI RtlRaiseStatus(NTSTATUS);
02248 ULONG     WINAPI RtlRandom(PULONG);
02249 PVOID     WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
02250 void      WINAPI RtlReleasePebLock(void);
02251 void      WINAPI RtlReleaseResource(LPRTL_RWLOCK);
02252 ULONG     WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
02253 void      WINAPI RtlRestoreLastWin32Error(DWORD);
02254 
02255 void      WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
02256 void      WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
02257 NTSTATUS  WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,
02258                                              PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
02259 void      WINAPI RtlSetAllBits(PRTL_BITMAP);
02260 void      WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
02261 ULONG     WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
02262 NTSTATUS  WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
02263 void      WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
02264 NTSTATUS  WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
02265 NTSTATUS  WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
02266 NTSTATUS  WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
02267 NTSTATUS  WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
02268 void      WINAPI RtlSetLastWin32Error(DWORD);
02269 void      WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
02270 NTSTATUS  WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
02271 NTSTATUS  WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
02272 SIZE_T    WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
02273 NTSTATUS  WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
02274 LPDWORD   WINAPI RtlSubAuthoritySid(PSID,DWORD);
02275 LPBYTE    WINAPI RtlSubAuthorityCountSid(PSID);
02276 NTSTATUS  WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
02277 
02278 void      WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
02279 BOOLEAN   WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
02280 void      WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
02281 BOOLEAN   WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
02282 BOOLEAN   WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
02283 BOOL      WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
02284 
02285 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
02286 DWORD     WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
02287 NTSTATUS  WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
02288 NTSTATUS  WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
02289 DWORD     WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
02290 NTSTATUS  WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
02291 NTSTATUS  WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
02292 NTSTATUS  WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
02293 NTSTATUS  WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
02294 ULONG     WINAPI RtlUniform(PULONG);
02295 BOOLEAN   WINAPI RtlUnlockHeap(HANDLE);
02296 #ifdef __ia64__
02297 void      WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
02298 void      WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
02299 #endif
02300 WCHAR     WINAPI RtlUpcaseUnicodeChar(WCHAR);
02301 NTSTATUS  WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
02302 NTSTATUS  WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
02303 NTSTATUS  WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
02304 NTSTATUS  WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
02305 NTSTATUS  WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
02306 NTSTATUS  WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
02307 CHAR      WINAPI RtlUpperChar(CHAR);
02308 void      WINAPI RtlUpperString(STRING *,const STRING *);
02309 
02310 NTSTATUS  WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
02311 BOOLEAN   WINAPI RtlValidAcl(PACL);
02312 BOOLEAN   WINAPI RtlValidSid(PSID);
02313 BOOLEAN   WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
02314 //NTSTATUS  WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
02315 
02316 NTSTATUS  WINAPI RtlWalkHeap(HANDLE,PVOID);
02317 
02318 NTSTATUS  WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
02319 NTSTATUS  WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
02320 NTSTATUS  WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
02321 
02322 ULONG WINAPI
02323 vDbgPrintEx(IN ULONG ComponentId,
02324             IN ULONG Level,
02325             IN LPCSTR Format,
02326             IN va_list ap);
02327 ULONG WINAPI
02328 vDbgPrintExWithPrefix(IN LPCSTR Prefix,
02329                       IN ULONG ComponentId,
02330                       IN ULONG Level,
02331                       IN LPCSTR Format,
02332                       IN va_list ap);
02333 
02334 /* Wine internal functions */
02335 
02336 extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
02337                                            UINT disposition, BOOLEAN check_case );
02338 
02339 /***********************************************************************
02340  * Inline functions
02341  */
02342 
02343 #define InitializeObjectAttributes(p,n,a,r,s) \
02344     do { \
02345         (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
02346         (p)->RootDirectory = r; \
02347         (p)->Attributes = a; \
02348         (p)->ObjectName = n; \
02349         (p)->SecurityDescriptor = s; \
02350         (p)->SecurityQualityOfService = NULL; \
02351     } while (0)
02352 
02353 #define NtCurrentProcess() ((HANDLE)-1)
02354 
02355 #ifndef RtlFillMemory
02356 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
02357 #endif
02358 #ifndef RtlMoveMemory
02359 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
02360 #endif
02361 #define RtlStoreUlong(p,v)  do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
02362 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
02363 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
02364 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
02365 #ifndef RtlZeroMemory
02366 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
02367 #endif
02368 
02369 static __inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
02370 {
02371     if (lpBits && ulBit < lpBits->SizeOfBitMap &&
02372         lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
02373         return TRUE;
02374     return FALSE;
02375 }
02376 
02377 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
02378 static __inline USHORT RtlUshortByteSwap(USHORT s)
02379 {
02380     return (s >> 8) | (s << 8);
02381 }
02382 static __inline ULONG RtlUlongByteSwap(ULONG i)
02383 {
02384 #if defined(__i386__) && defined(__GNUC__)
02385     ULONG ret;
02386     __asm__("bswap %0" : "=r" (ret) : "0" (i) );
02387     return ret;
02388 #else
02389     return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
02390 #endif
02391 }
02392 
02393 /*************************************************************************
02394  * Loader functions and structures.
02395  *
02396  * Those are not part of standard Winternl.h
02397  */
02398 typedef struct _LDR_MODULE
02399 {
02400     LIST_ENTRY          InLoadOrderModuleList;
02401     LIST_ENTRY          InMemoryOrderModuleList;
02402     LIST_ENTRY          InInitializationOrderModuleList;
02403     void*               BaseAddress;
02404     void*               EntryPoint;
02405     ULONG               SizeOfImage;
02406     UNICODE_STRING      FullDllName;
02407     UNICODE_STRING      BaseDllName;
02408     ULONG               Flags;
02409     SHORT               LoadCount;
02410     SHORT               TlsIndex;
02411     HANDLE              SectionHandle;
02412     ULONG               CheckSum;
02413     ULONG               TimeDateStamp;
02414 } LDR_MODULE, *PLDR_MODULE;
02415 
02416 /* those defines are (some of the) regular LDR_MODULE.Flags values */
02417 #define LDR_IMAGE_IS_DLL                0x00000004
02418 #define LDR_LOAD_IN_PROGRESS            0x00001000
02419 #define LDR_UNLOAD_IN_PROGRESS          0x00002000
02420 #define LDR_NO_DLL_CALLS                0x00040000
02421 #define LDR_PROCESS_ATTACHED            0x00080000
02422 #define LDR_MODULE_REBASED              0x00200000
02423 
02424 /* these ones is Wine specific */
02425 #define LDR_DONT_RESOLVE_REFS           0x40000000
02426 #define LDR_WINE_INTERNAL               0x80000000
02427 
02428 /* FIXME: to be checked */
02429 #define MAXIMUM_FILENAME_LENGTH 256
02430 
02431 typedef struct _SYSTEM_MODULE
02432 {
02433     ULONG               Reserved1;
02434     ULONG               Reserved2;
02435     PVOID               ImageBaseAddress;
02436     ULONG               ImageSize;
02437     ULONG               Flags;
02438     WORD                Id;
02439     WORD                Rank;
02440     WORD                Unknown;
02441     WORD                NameOffset;
02442     BYTE                Name[MAXIMUM_FILENAME_LENGTH];
02443 } SYSTEM_MODULE, *PSYSTEM_MODULE;
02444 
02445 typedef struct _SYSTEM_MODULE_INFORMATION
02446 {
02447     ULONG               ModulesCount;
02448     SYSTEM_MODULE       Modules[1]; /* FIXME: should be Modules[0] */
02449 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
02450 
02451 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
02452 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
02453 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
02454 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
02455 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
02456 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
02457 
02458 /* list manipulation macros */
02459 #define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
02460 #define InsertHeadList(le,e)    do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
02461 #define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
02462 #define IsListEmpty(le)         ((le)->Flink == (le))
02463 #define RemoveEntryList(e)      do { PLIST_ENTRY f = (e)->Flink, b = (e)->Blink; f->Blink = b; b->Flink = f; (e)->Flink = (e)->Blink = NULL; } while (0)
02464 static  __inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
02465 {
02466     PLIST_ENTRY f, b, e;
02467 
02468     e = le->Flink;
02469     f = le->Flink->Flink;
02470     b = le->Flink->Blink;
02471     f->Blink = b;
02472     b->Flink = f;
02473 
02474     if (e != le) e->Flink = e->Blink = NULL;
02475     return e;
02476 }
02477 static __inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
02478 {
02479     PLIST_ENTRY f, b, e;
02480 
02481     e = le->Blink;
02482     f = le->Blink->Flink;
02483     b = le->Blink->Blink;
02484     f->Blink = b;
02485     b->Flink = f;
02486 
02487     if (e != le) e->Flink = e->Blink = NULL;
02488     return e;
02489 }
02490 
02491 typedef struct _FILE_FS_VOLUME_INFORMATION
02492 {
02493     LARGE_INTEGER VolumeCreationTime;
02494     ULONG VolumeSerialNumber;
02495     ULONG VolumeLabelLength;
02496     BOOLEAN SupportsObjects;
02497     WCHAR VolumeLabel[1];
02498 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
02499 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
02500 
02501 #ifdef __cplusplus
02502 } /* extern "C" */
02503 #endif /* defined(__cplusplus) */
02504 
02505 #endif  /* __WINE_WINTERNL_H */

Generated on Fri May 25 2012 04:31:22 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.