- Fix KiDispatchException to unmask KI_EXCEPTION_INTERNAL when setting the exception...
[reactos.git] / reactos / include / ddk / ntifs.h
index eef3193..4614a46 100644 (file)
@@ -44,12 +44,17 @@ extern "C" {
 
 #pragma pack(push,4)
 
+#ifndef VER_PRODUCTBUILD
 #define VER_PRODUCTBUILD 10000
+#endif
 
 #ifndef NTSYSAPI
 #define NTSYSAPI
 #endif
 
+#define EX_PUSH_LOCK ULONG_PTR
+#define PEX_PUSH_LOCK PULONG_PTR
+
 #include "csq.h"
 
 typedef struct _SE_EXPORTS                  *PSE_EXPORTS;
@@ -71,6 +76,30 @@ extern LARGE_INTEGER                IoReadTransferCount;
 extern LARGE_INTEGER                IoWriteTransferCount;
 extern LARGE_INTEGER                IoOtherTransferCount;
 
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef ULONG  LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+
+typedef enum _SECURITY_LOGON_TYPE
+{
+    UndefinedLogonType = 0,
+    Interactive = 2,
+    Network,
+    Batch,
+    Service,
+    Proxy,
+    Unlock,
+    NetworkCleartext,
+    NewCredentials,
+#if (_WIN32_WINNT >= 0x0501)
+    RemoteInteractive,
+    CachedInteractive,
+#endif
+#if (_WIN32_WINNT >= 0x0502)
+    CachedRemoteInteractive,
+    CachedUnlock
+#endif
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+
 #define ANSI_DOS_STAR                   ('<')
 #define ANSI_DOS_QM                     ('>')
 #define ANSI_DOS_DOT                    ('"')
@@ -378,7 +407,9 @@ extern LARGE_INTEGER                IoOtherTransferCount;
 #define TOKEN_HAS_BACKUP_PRIVILEGE      0x02
 #define TOKEN_HAS_RESTORE_PRIVILEGE     0x04
 #define TOKEN_HAS_ADMIN_GROUP           0x08
+#define TOKEN_WRITE_RESTRICTED          0x08
 #define TOKEN_IS_RESTRICTED             0x10
+#define SE_BACKUP_PRIVILEGES_CHECKED    0x0100
 
 #define VACB_MAPPING_GRANULARITY        (0x40000)
 #define VACB_OFFSET_SHIFT               (18)
@@ -729,6 +760,36 @@ typedef enum _TOKEN_INFORMATION_CLASS {
        TokenSandBoxInert,TokenAuditPolicy,TokenOrigin,
 } TOKEN_INFORMATION_CLASS;
 
+#define SYMLINK_FLAG_RELATIVE   1
+
+typedef struct _REPARSE_DATA_BUFFER {
+    ULONG  ReparseTag;
+    USHORT ReparseDataLength;
+    USHORT Reserved;
+    union {
+        struct {
+            USHORT SubstituteNameOffset;
+            USHORT SubstituteNameLength;
+            USHORT PrintNameOffset;
+            USHORT PrintNameLength;
+            ULONG Flags;
+            WCHAR PathBuffer[1];
+        } SymbolicLinkReparseBuffer;
+        struct {
+            USHORT SubstituteNameOffset;
+            USHORT SubstituteNameLength;
+            USHORT PrintNameOffset;
+            USHORT PrintNameLength;
+            WCHAR PathBuffer[1];
+        } MountPointReparseBuffer;
+        struct {
+            UCHAR  DataBuffer[1];
+        } GenericReparseBuffer;
+    };
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+
 typedef struct _FILE_ACCESS_INFORMATION {
     ACCESS_MASK AccessFlags;
 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
@@ -878,6 +939,19 @@ typedef struct _FILE_FS_VOLUME_INFORMATION {
     WCHAR           VolumeLabel[1];
 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
 
+typedef struct _FILE_FS_OBJECTID_INFORMATION
+{
+    UCHAR ObjectId[16];
+    UCHAR ExtendedInfo[48];
+} FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION;
+
+typedef struct _FILE_FS_DRIVER_PATH_INFORMATION
+{
+    BOOLEAN DriverInPath;
+    ULONG DriverNameLength;
+    WCHAR DriverName[1];
+} FILE_FS_DRIVER_PATH_INFORMATION, *PFILE_FS_DRIVER_PATH_INFORMATION;
+
 typedef struct _FILE_FULL_DIR_INFORMATION {
     ULONG           NextEntryOffset;
     ULONG           FileIndex;
@@ -938,6 +1012,20 @@ typedef struct _FILE_LOCK_INFO
     LARGE_INTEGER EndingByte;
 } FILE_LOCK_INFO, *PFILE_LOCK_INFO;
 
+typedef struct _FILE_REPARSE_POINT_INFORMATION
+{
+    LONGLONG FileReference;
+    ULONG Tag;
+} FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
+
+typedef struct _FILE_MOVE_CLUSTER_INFORMATION
+{
+    ULONG ClusterCount;
+    HANDLE RootDirectory;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_MOVE_CLUSTER_INFORMATION, *PFILE_MOVE_CLUSTER_INFORMATION;
+
 /* raw internal file lock struct returned from FsRtlGetNextFileLock */
 typedef struct _FILE_SHARED_LOCK_ENTRY {
     PVOID           Unknown1;
@@ -1349,35 +1437,6 @@ typedef struct _PATHNAME_BUFFER {
     WCHAR Name[1];
 } PATHNAME_BUFFER, *PPATHNAME_BUFFER;
 
-#if (VER_PRODUCTBUILD >= 2600)
-
-typedef struct _PRIVATE_CACHE_MAP_FLAGS {
-    ULONG DontUse           : 16;
-    ULONG ReadAheadActive   : 1;
-    ULONG ReadAheadEnabled  : 1;
-    ULONG Available         : 14;
-} PRIVATE_CACHE_MAP_FLAGS, *PPRIVATE_CACHE_MAP_FLAGS;
-
-typedef struct _PRIVATE_CACHE_MAP {
-    _ANONYMOUS_UNION union {
-        CSHORT                  NodeTypeCode;
-        PRIVATE_CACHE_MAP_FLAGS Flags;
-        ULONG                   UlongFlags;
-    } DUMMYUNIONNAME;
-    ULONG                       ReadAheadMask;
-    PFILE_OBJECT                FileObject;
-    LARGE_INTEGER               FileOffset1;
-    LARGE_INTEGER               BeyondLastByte1;
-    LARGE_INTEGER               FileOffset2;
-    LARGE_INTEGER               BeyondLastByte2;
-    LARGE_INTEGER               ReadAheadOffset[2];
-    ULONG                       ReadAheadLength[2];
-    KSPIN_LOCK                  ReadAheadSpinLock;
-    LIST_ENTRY                  PrivateLinks;
-} PRIVATE_CACHE_MAP, *PPRIVATE_CACHE_MAP;
-
-#endif
-
 typedef enum _RTL_GENERIC_COMPARE_RESULTS
 {
     GenericLessThan,
@@ -1507,6 +1566,16 @@ typedef struct _RTL_AVL_TABLE
     PVOID TableContext;
 } RTL_AVL_TABLE, *PRTL_AVL_TABLE;
 
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeGenericTableAvl(
+    PRTL_AVL_TABLE Table,
+    PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
+    PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
+    PRTL_AVL_FREE_ROUTINE FreeRoutine,
+    PVOID TableContext
+);
 
 #if defined(USE_LPC6432)
 #define LPC_CLIENT_ID CLIENT_ID64
@@ -1553,6 +1622,8 @@ typedef struct _PORT_MESSAGE
     };
 } PORT_MESSAGE, *PPORT_MESSAGE;
 
+#define LPC_KERNELMODE_MESSAGE      (CSHORT)((USHORT)0x8000)
+
 typedef struct _PORT_VIEW
 {
     ULONG Length;
@@ -1660,16 +1731,6 @@ typedef struct _TUNNEL {
     USHORT              NumEntries;
 } TUNNEL, *PTUNNEL;
 
-typedef struct _VACB {
-    PVOID               BaseAddress;
-    PSHARED_CACHE_MAP   SharedCacheMap;
-    union {
-        LARGE_INTEGER   FileOffset;
-        USHORT          ActiveCount;
-    } Overlay;
-    LIST_ENTRY          LruList;
-} VACB, *PVACB;
-
 typedef struct _VAD_HEADER {
     PVOID       StartVPN;
     PVOID       EndVPN;
@@ -1979,6 +2040,8 @@ CcInitializeCacheMap (
     (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
 )
 
+extern ULONG CcFastMdlReadWait;
+
 NTKERNELAPI
 BOOLEAN
 NTAPI
@@ -1993,7 +2056,7 @@ CcMapData (
     IN PFILE_OBJECT     FileObject,
     IN PLARGE_INTEGER   FileOffset,
     IN ULONG            Length,
-    IN BOOLEAN          Wait,
+    IN ULONG            Flags,
     OUT PVOID           *Bcb,
     OUT PVOID           *Buffer
 );
@@ -2026,6 +2089,8 @@ CcMdlWriteComplete (
     IN PMDL             MdlChain
 );
 
+#define MAP_WAIT        1
+
 NTKERNELAPI
 BOOLEAN
 NTAPI
@@ -2033,11 +2098,7 @@ CcPinMappedData (
     IN PFILE_OBJECT     FileObject,
     IN PLARGE_INTEGER   FileOffset,
     IN ULONG            Length,
-#if (VER_PRODUCTBUILD >= 2195)
     IN ULONG            Flags,
-#else
-    IN BOOLEAN          Wait,
-#endif
     IN OUT PVOID        *Bcb
 );
 
@@ -2048,11 +2109,7 @@ CcPinRead (
     IN PFILE_OBJECT     FileObject,
     IN PLARGE_INTEGER   FileOffset,
     IN ULONG            Length,
-#if (VER_PRODUCTBUILD >= 2195)
     IN ULONG            Flags,
-#else
-    IN BOOLEAN          Wait,
-#endif
     OUT PVOID           *Bcb,
     OUT PVOID           *Buffer
 );
@@ -2076,11 +2133,7 @@ CcPreparePinWrite (
     IN PLARGE_INTEGER   FileOffset,
     IN ULONG            Length,
     IN BOOLEAN          Zero,
-#if (VER_PRODUCTBUILD >= 2195)
     IN ULONG            Flags,
-#else
-    IN BOOLEAN          Wait,
-#endif
     OUT PVOID           *Bcb,
     OUT PVOID           *Buffer
 );
@@ -2562,6 +2615,11 @@ FsRtlDoesNameContainWildCards (
     IN PUNICODE_STRING Name
 );
 
+#define FsRtlCompleteRequest(IRP,STATUS) {         \
+    (IRP)->IoStatus.Status = (STATUS);             \
+    IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
+}
+
 #define FsRtlEnterFileSystem    KeEnterCriticalRegion
 
 #define FsRtlExitFileSystem     KeLeaveCriticalRegion
@@ -3037,11 +3095,12 @@ HalDisplayString (
     IN PCHAR String
 );
 
-NTHALAPI
-VOID
+NTKERNELAPI
+UCHAR
 NTAPI
-HalSetRealTimeClock (
-    IN PTIME_FIELDS TimeFields
+KeSetIdealProcessorThread(
+    IN OUT PKTHREAD Thread,
+    IN UCHAR Processor
 );
 
 NTKERNELAPI
@@ -3756,6 +3815,14 @@ RtlAllocateHeap (
     IN ULONG   Size
 );
 
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAppendStringToString(
+    PSTRING Destination,
+    const STRING *Source
+);
+
 NTSYSAPI
 USHORT
 NTAPI