- Merge Pierre's changes to ntifs.h from the branch, with my edits.

- Remove a duplicate structure which does not exist in official ntifs.h.
- Fix a typo in PNOTIFY_SYNC declaration.

svn path=/trunk/; revision=37898
This commit is contained in:
Aleksey Bragin 2008-12-06 14:36:03 +00:00
parent 2a8bf4162a
commit fd38a91b3a

View file

@ -342,6 +342,8 @@ typedef enum _SECURITY_LOGON_TYPE
#define MAP_SYSTEM 2L #define MAP_SYSTEM 2L
#define MEM_DOS_LIM 0x40000000 #define MEM_DOS_LIM 0x40000000
#define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1
#define OB_TYPE_TYPE 1 #define OB_TYPE_TYPE 1
#define OB_TYPE_DIRECTORY 2 #define OB_TYPE_DIRECTORY 2
#define OB_TYPE_SYMBOLIC_LINK 3 #define OB_TYPE_SYMBOLIC_LINK 3
@ -586,7 +588,7 @@ typedef LBN *PLBN;
typedef ULONG VBN; typedef ULONG VBN;
typedef VBN *PVBN; typedef VBN *PVBN;
typedef PVOID *PNOTIFY_SYNC; typedef PVOID PNOTIFY_SYNC;
typedef enum _FAST_IO_POSSIBLE { typedef enum _FAST_IO_POSSIBLE {
FastIoIsNotPossible, FastIoIsNotPossible,
@ -1110,23 +1112,6 @@ typedef struct _FILE_ID_FULL_DIR_INFORMATION {
WCHAR FileName[1]; WCHAR FileName[1];
} FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION; } FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;
typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
ULONG NextEntryOffset;
ULONG FileIndex;
LARGE_INTEGER CreationTime;
LARGE_INTEGER LastAccessTime;
LARGE_INTEGER LastWriteTime;
LARGE_INTEGER ChangeTime;
LARGE_INTEGER EndOfFile;
LARGE_INTEGER AllocationSize;
ULONG FileAttributes;
ULONG FileNameLength;
ULONG EaSize;
CHAR ShortNameLength;
WCHAR ShortName[12];
WCHAR FileName[0];
} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION;
typedef struct _FILE_ID_BOTH_DIR_INFORMATION { typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
ULONG NextEntryOffset; ULONG NextEntryOffset;
ULONG FileIndex; ULONG FileIndex;
@ -2846,6 +2831,36 @@ ExWaitForRundownProtectionRelease (
(_advhdr)->FileContextSupportPointer = NULL; \ (_advhdr)->FileContextSupportPointer = NULL; \
} }
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlAddBaseMcbEntry (
IN PBASE_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Lbn,
IN LONGLONG SectorCount
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlAddLargeMcbEntry (
IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Lbn,
IN LONGLONG SectorCount
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlAddMcbEntry (
IN PMCB Mcb,
IN VBN Vbn,
IN LBN Lbn,
IN ULONG SectorCount
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -3212,6 +3227,17 @@ FsRtlGetFileSize (
IN OUT PLARGE_INTEGER FileSize IN OUT PLARGE_INTEGER FileSize
); );
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlGetNextBaseMcbEntry (
IN PBASE_MCB Mcb,
IN ULONG RunIndex,
OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn,
OUT PLONGLONG SectorCount
);
/* /*
FsRtlGetNextFileLock: FsRtlGetNextFileLock:
@ -3232,6 +3258,40 @@ FsRtlGetNextFileLock (
IN BOOLEAN Restart IN BOOLEAN Restart
); );
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlGetNextLargeMcbEntry (
IN PLARGE_MCB Mcb,
IN ULONG RunIndex,
OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn,
OUT PLONGLONG SectorCount
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlGetNextMcbEntry (
IN PMCB Mcb,
IN ULONG RunIndex,
OUT PVBN Vbn,
OUT PLBN Lbn,
OUT PULONG SectorCount
);
#define FsRtlGetPerStreamContextPointer(FO) ( \
(PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \
)
NTKERNELAPI
VOID
NTAPI
FsRtlInitializeBaseMcb (
IN PBASE_MCB Mcb,
IN POOL_TYPE PoolType
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -3241,6 +3301,22 @@ FsRtlInitializeFileLock (
IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
); );
NTKERNELAPI
VOID
NTAPI
FsRtlInitializeLargeMcb (
IN PLARGE_MCB Mcb,
IN POOL_TYPE PoolType
);
NTKERNELAPI
VOID
NTAPI
FsRtlInitializeMcb (
IN PMCB Mcb,
IN POOL_TYPE PoolType
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -3255,6 +3331,59 @@ FsRtlInitializeTunnelCache (
IN PTUNNEL Cache IN PTUNNEL Cache
); );
#define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \
(PSC)->OwnerId = (O), \
(PSC)->InstanceId = (I), \
(PSC)->FreeCallback = (FC) \
)
NTKERNELAPI
NTSTATUS
NTAPI
FsRtlInsertPerStreamContext (
IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
IN PFSRTL_PER_STREAM_CONTEXT Ptr
);
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
)
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
)
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
)
#define FsRtlIsAnsiCharacterWild(C) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
)
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlIsFatDbcsLegal (
IN ANSI_STRING DbcsName,
IN BOOLEAN WildCardsPermissible,
IN BOOLEAN PathNamePermissible,
IN BOOLEAN LeadingBackslashPermissible
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlIsHpfsDbcsLegal (
IN ANSI_STRING DbcsName,
IN BOOLEAN WildCardsPermissible,
IN BOOLEAN PathNamePermissible,
IN BOOLEAN LeadingBackslashPermissible
);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -3282,16 +3411,105 @@ extern PUSHORT NlsOemLeadByteInfo;
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
) )
#define FsRtlIsAnsiCharacterWild(C) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
)
#define FsRtlIsUnicodeCharacterWild(C) ( \ #define FsRtlIsUnicodeCharacterWild(C) ( \
(((C) >= 0x40) ? \ (((C) >= 0x40) ? \
FALSE : \ FALSE : \
FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \ FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
) )
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupBaseMcbEntry (
IN PBASE_MCB Mcb,
IN LONGLONG Vbn,
OUT PLONGLONG Lbn OPTIONAL,
OUT PLONGLONG SectorCountFromLbn OPTIONAL,
OUT PLONGLONG StartingLbn OPTIONAL,
OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
OUT PULONG Index OPTIONAL
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLargeMcbEntry (
IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
OUT PLONGLONG Lbn OPTIONAL,
OUT PLONGLONG SectorCountFromLbn OPTIONAL,
OUT PLONGLONG StartingLbn OPTIONAL,
OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
OUT PULONG Index OPTIONAL
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLastBaseMcbEntry (
IN PBASE_MCB Mcb,
OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLastLargeMcbEntry (
IN PLARGE_MCB Mcb,
OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLastMcbEntry (
IN PMCB Mcb,
OUT PVBN Vbn,
OUT PLBN Lbn
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLastBaseMcbEntryAndIndex (
IN PBASE_MCB OpaqueMcb,
IN OUT PLONGLONG LargeVbn,
IN OUT PLONGLONG LargeLbn,
IN OUT PULONG Index
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupLastLargeMcbEntryAndIndex (
IN PLARGE_MCB OpaqueMcb,
OUT PLONGLONG LargeVbn,
OUT PLONGLONG LargeLbn,
OUT PULONG Index
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlLookupMcbEntry (
IN PMCB Mcb,
IN VBN Vbn,
OUT PLBN Lbn,
OUT PULONG SectorCount OPTIONAL,
OUT PULONG Index
);
NTKERNELAPI
PFSRTL_PER_STREAM_CONTEXT
NTAPI
FsRtlLookupPerStreamContextInternal (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -3390,6 +3608,37 @@ typedef BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
IN PSECURITY_SUBJECT_CONTEXT SubjectContext IN PSECURITY_SUBJECT_CONTEXT SubjectContext
); );
NTKERNELAPI
VOID
NTAPI
FsRtlNotifyFilterChangeDirectory (
IN PNOTIFY_SYNC NotifySync,
IN PLIST_ENTRY NotifyList,
IN PVOID FsContext,
IN PSTRING FullDirectoryName,
IN BOOLEAN WatchTree,
IN BOOLEAN IgnoreBuffer,
IN ULONG CompletionFilter,
IN PIRP NotifyIrp,
IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL);
NTKERNELAPI
VOID
NTAPI
FsRtlNotifyFilterReportChange (
IN PNOTIFY_SYNC NotifySync,
IN PLIST_ENTRY NotifyList,
IN PSTRING FullTargetName,
IN USHORT TargetNameOffset,
IN PSTRING StreamName OPTIONAL,
IN PSTRING NormalizedParentName OPTIONAL,
IN ULONG FilterMatch,
IN ULONG Action,
IN PVOID TargetContext,
IN PVOID FilterContext);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -3458,6 +3707,27 @@ FsRtlNotifyVolumeEvent (
#endif /* (VER_PRODUCTBUILD >= 2195) */ #endif /* (VER_PRODUCTBUILD >= 2195) */
NTKERNELAPI
ULONG
NTAPI
FsRtlNumberOfRunsInBaseMcb (
IN PBASE_MCB Mcb
);
NTKERNELAPI
ULONG
NTAPI
FsRtlNumberOfRunsInLargeMcb (
IN PLARGE_MCB Mcb
);
NTKERNELAPI
ULONG
NTAPI
FsRtlNumberOfRunsInMcb (
IN PMCB Mcb
);
NTKERNELAPI NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -3474,6 +3744,30 @@ FsRtlOplockIsFastIoPossible (
IN POPLOCK Oplock IN POPLOCK Oplock
); );
typedef VOID
(NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) (
IN PVOID Context,
IN PKEVENT Event
);
NTKERNELAPI
VOID
NTAPI
FsRtlPostPagingFileStackOverflow (
IN PVOID Context,
IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
);
NTKERNELAPI
VOID
NTAPI
FsRtlPostStackOverflow (
IN PVOID Context,
IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
);
/* /*
FsRtlPrivateLock: FsRtlPrivateLock:
@ -3540,35 +3834,110 @@ FsRtlRegisterUncProvider (
IN BOOLEAN MailslotsSupported IN BOOLEAN MailslotsSupported
); );
typedef VOID NTKERNELAPI
(NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) ( BOOLEAN
IN PVOID Context, NTAPI
IN PKEVENT Event FsRtlRemoveBaseMcbEntry (
IN PBASE_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG SectorCount
); );
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
FsRtlPostStackOverflow ( FsRtlRemoveLargeMcbEntry (
IN PVOID Context, IN PLARGE_MCB Mcb,
IN PKEVENT Event, IN LONGLONG Vbn,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine IN LONGLONG SectorCount
); );
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
FsRtlPostPagingFileStackOverflow ( FsRtlRemoveMcbEntry (
IN PVOID Context, IN PMCB Mcb,
IN PKEVENT Event, IN VBN Vbn,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine IN ULONG SectorCount
);
NTKERNELAPI
PFSRTL_PER_STREAM_CONTEXT
NTAPI
FsRtlRemovePerStreamContext (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
); );
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
FsRtlTeardownPerStreamContexts ( FsRtlResetBaseMcb (
IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader IN PBASE_MCB Mcb
);
NTKERNELAPI
VOID
NTAPI
FsRtlResetLargeMcb (
IN PLARGE_MCB Mcb,
IN BOOLEAN SelfSynchronized
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlSplitBaseMcb (
IN PBASE_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Amount
);
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlSplitLargeMcb (
IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Amount
);
#define FsRtlSupportsPerStreamContexts(FO) ( \
(BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \
)
NTKERNELAPI
VOID
NTAPI
FsRtlTruncateBaseMcb (
IN PBASE_MCB Mcb,
IN LONGLONG Vbn
);
NTKERNELAPI
VOID
NTAPI
FsRtlTruncateLargeMcb (
IN PLARGE_MCB Mcb,
IN LONGLONG Vbn
);
NTKERNELAPI
VOID
NTAPI
FsRtlTruncateMcb (
IN PMCB Mcb,
IN VBN Vbn
);
NTKERNELAPI
VOID
NTAPI
FsRtlUninitializeBaseMcb (
IN PBASE_MCB Mcb
); );
NTKERNELAPI NTKERNELAPI
@ -3578,6 +3947,20 @@ FsRtlUninitializeFileLock (
IN PFILE_LOCK FileLock IN PFILE_LOCK FileLock
); );
NTKERNELAPI
VOID
NTAPI
FsRtlUninitializeLargeMcb (
IN PLARGE_MCB Mcb
);
NTKERNELAPI
VOID
NTAPI
FsRtlUninitializeMcb (
IN PMCB Mcb
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -4552,7 +4935,7 @@ NTSYSAPI
VOID VOID
NTAPI NTAPI
RtlFreeOemString ( RtlFreeOemString (
IN OUT POEM_STRING OemString IN POEM_STRING OemString
); );
NTSYSAPI NTSYSAPI
@ -4739,6 +5122,15 @@ RtlSubAuthoritySid (
IN ULONG SubAuthority IN ULONG SubAuthority
); );
NTSYSAPI
NTSTATUS
NTAPI
RtlUnicodeStringToCountedOemString (
IN OUT POEM_STRING DestinationString,
IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
);
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI