mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 01:10:26 +00:00
[XDK/DDK/PSDK]
- Move FsRtl functions to fsrtlfuncs.h - Improve formatting of a few macros - Add missing NTKERNELAPI - Add a "special" kind of "ASSERT" to ListEntry64To32 svn path=/trunk/; revision=64513
This commit is contained in:
parent
a69a37ccfa
commit
0a9f51e62d
7 changed files with 205 additions and 234 deletions
|
@ -870,11 +870,11 @@ typedef VOID
|
||||||
(NTAPI *PRTL_FREE_STRING_ROUTINE)(
|
(NTAPI *PRTL_FREE_STRING_ROUTINE)(
|
||||||
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer);
|
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer);
|
||||||
|
|
||||||
extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
|
extern NTKERNELAPI const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
|
||||||
extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
|
extern NTKERNELAPI const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
|
||||||
|
|
||||||
#if _WIN32_WINNT >= 0x0600
|
#if _WIN32_WINNT >= 0x0600
|
||||||
extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
|
extern NTKERNELAPI const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_Function_class_(RTL_HEAP_COMMIT_ROUTINE)
|
_Function_class_(RTL_HEAP_COMMIT_ROUTINE)
|
||||||
|
@ -4917,26 +4917,6 @@ typedef struct _FS_FILTER_CALLBACKS {
|
||||||
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
|
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
|
||||||
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
|
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
FsRtlRegisterFileSystemFilterCallbacks(
|
|
||||||
_In_ struct _DRIVER_OBJECT *FilterDriverObject,
|
|
||||||
_In_ PFS_FILTER_CALLBACKS Callbacks);
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
|
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
FsRtlNotifyStreamFileObject(
|
|
||||||
_In_ struct _FILE_OBJECT * StreamFileObject,
|
|
||||||
_In_opt_ struct _DEVICE_OBJECT *DeviceObjectHint,
|
|
||||||
_In_ FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
|
|
||||||
_In_ BOOLEAN SafeToRecurse);
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
|
||||||
|
|
||||||
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
||||||
extern NTKERNELAPI ULONG IoReadOperationCount;
|
extern NTKERNELAPI ULONG IoReadOperationCount;
|
||||||
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
||||||
|
@ -8372,24 +8352,40 @@ FsRtlRemovePerFileObjectContext(
|
||||||
_In_opt_ PVOID OwnerId,
|
_In_opt_ PVOID OwnerId,
|
||||||
_In_opt_ PVOID InstanceId);
|
_In_opt_ PVOID InstanceId);
|
||||||
|
|
||||||
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \
|
NTKERNELAPI
|
||||||
FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \
|
NTSTATUS
|
||||||
)
|
NTAPI
|
||||||
|
FsRtlRegisterFileSystemFilterCallbacks(
|
||||||
|
_In_ struct _DRIVER_OBJECT *FilterDriverObject,
|
||||||
|
_In_ PFS_FILTER_CALLBACKS Callbacks);
|
||||||
|
|
||||||
#define FsRtlAreThereCurrentFileLocks(FL) ( \
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
((FL)->FastIoIsQuestionable) \
|
NTKERNELAPI
|
||||||
)
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
FsRtlNotifyStreamFileObject(
|
||||||
|
_In_ struct _FILE_OBJECT * StreamFileObject,
|
||||||
|
_In_opt_ struct _DEVICE_OBJECT *DeviceObjectHint,
|
||||||
|
_In_ FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
|
||||||
|
_In_ BOOLEAN SafeToRecurse);
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
#define FsRtlIncrementLockRequestsInProgress(FL) { \
|
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) \
|
||||||
ASSERT( (FL)->LockRequestsInProgress >= 0 ); \
|
FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11)
|
||||||
(void) \
|
|
||||||
(InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
#define FsRtlAreThereCurrentFileLocks(FL) \
|
||||||
|
((FL)->FastIoIsQuestionable)
|
||||||
|
|
||||||
|
#define FsRtlIncrementLockRequestsInProgress(FL) { \
|
||||||
|
ASSERT((FL)->LockRequestsInProgress >= 0); \
|
||||||
|
(void) \
|
||||||
|
(InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlDecrementLockRequestsInProgress(FL) { \
|
#define FsRtlDecrementLockRequestsInProgress(FL) { \
|
||||||
ASSERT( (FL)->LockRequestsInProgress > 0 ); \
|
ASSERT((FL)->LockRequestsInProgress > 0); \
|
||||||
(void) \
|
(void) \
|
||||||
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _NTSYSTEM_
|
#ifdef _NTSYSTEM_
|
||||||
|
@ -8401,97 +8397,81 @@ extern const UCHAR * const *FsRtlLegalAnsiCharacterArray;
|
||||||
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterWild(C) ( \
|
#define FsRtlIsAnsiCharacterWild(C) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \
|
#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) \
|
||||||
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \
|
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \
|
#define FsRtlIsAnsiCharacterLegal(C,FLAGS) \
|
||||||
FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
|
FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \
|
#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) \
|
||||||
((SCHAR)(C) < 0) ? DEFAULT_RET : \
|
(((SCHAR)(C) < 0) ? DEFAULT_RET : \
|
||||||
FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)], \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], \
|
||||||
(FLAGS) | \
|
(FLAGS) | ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0)))
|
||||||
((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
|
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
|
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) \
|
||||||
(BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
|
((BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
|
||||||
(NLS_MB_CODE_PAGE_TAG && \
|
(NLS_MB_CODE_PAGE_TAG && \
|
||||||
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
|
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsUnicodeCharacterWild(C) ( \
|
#define FsRtlIsUnicodeCharacterWild(C) \
|
||||||
(((C) >= 0x40) ? \
|
((((C) >= 0x40) ? FALSE : \
|
||||||
FALSE : \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )))
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )) \
|
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \
|
#define FsRtlInitPerFileContext(_fc, _owner, _inst, _cb) \
|
||||||
((_fc)->OwnerId = (_owner), \
|
((_fc)->OwnerId = (_owner), \
|
||||||
(_fc)->InstanceId = (_inst), \
|
(_fc)->InstanceId = (_inst), \
|
||||||
(_fc)->FreeCallback = (_cb))
|
(_fc)->FreeCallback = (_cb))
|
||||||
|
|
||||||
#define FsRtlGetPerFileContextPointer(_fo) \
|
#define FsRtlGetPerFileContextPointer(_fo) \
|
||||||
(FsRtlSupportsPerFileContexts(_fo) ? \
|
(FsRtlSupportsPerFileContexts(_fo) ? \
|
||||||
FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : \
|
FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : NULL)
|
||||||
NULL)
|
|
||||||
|
|
||||||
#define FsRtlSupportsPerFileContexts(_fo) \
|
#define FsRtlSupportsPerFileContexts(_fo) \
|
||||||
((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \
|
((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \
|
||||||
(FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \
|
(FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \
|
||||||
(FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL))
|
(FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL))
|
||||||
|
|
||||||
#define FsRtlSetupAdvancedHeaderEx( _advhdr, _fmutx, _fctxptr ) \
|
#define FsRtlSetupAdvancedHeaderEx(_advhdr, _fmutx, _fctxptr) \
|
||||||
{ \
|
{ \
|
||||||
FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \
|
FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \
|
||||||
if ((_fctxptr) != NULL) { \
|
if ((_fctxptr) != NULL) { \
|
||||||
(_advhdr)->FileContextSupportPointer = (_fctxptr); \
|
(_advhdr)->FileContextSupportPointer = (_fctxptr); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlGetPerStreamContextPointer(FO) ( \
|
#define FsRtlGetPerStreamContextPointer(FO) \
|
||||||
(PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \
|
((PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \
|
#define FsRtlInitPerStreamContext(PSC, O, I, FC) \
|
||||||
(PSC)->OwnerId = (O), \
|
((PSC)->OwnerId = (O), \
|
||||||
(PSC)->InstanceId = (I), \
|
(PSC)->InstanceId = (I), \
|
||||||
(PSC)->FreeCallback = (FC) \
|
(PSC)->FreeCallback = (FC))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlSupportsPerStreamContexts(FO) ( \
|
#define FsRtlSupportsPerStreamContexts(FO) \
|
||||||
(BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
|
((BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
|
||||||
FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
|
FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
|
||||||
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \
|
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \
|
#define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \
|
||||||
(((NULL != (_sc)) && \
|
(((NULL != (_sc)) && \
|
||||||
FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \
|
FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \
|
||||||
!IsListEmpty(&(_sc)->FilterContexts)) ? \
|
!IsListEmpty(&(_sc)->FilterContexts)) ? \
|
||||||
FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : \
|
FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : NULL)
|
||||||
NULL)
|
|
||||||
|
|
||||||
_IRQL_requires_max_(APC_LEVEL)
|
_IRQL_requires_max_(APC_LEVEL)
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
@ -8520,12 +8500,12 @@ FsRtlSetupAdvancedHeader(
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \
|
#define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \
|
||||||
((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
|
((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
|
||||||
|
|
||||||
#define FsRtlCompleteRequest(IRP,STATUS) { \
|
#define FsRtlCompleteRequest(IRP, STATUS) { \
|
||||||
(IRP)->IoStatus.Status = (STATUS); \
|
(IRP)->IoStatus.Status = (STATUS); \
|
||||||
IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
|
IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
|
||||||
}
|
}
|
||||||
/* Common Cache Types */
|
/* Common Cache Types */
|
||||||
|
|
||||||
|
|
|
@ -16091,7 +16091,6 @@ typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION {
|
||||||
ULONGLONG LastRecoveredLsn;
|
ULONGLONG LastRecoveredLsn;
|
||||||
} TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
|
} TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
|
typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
|
||||||
ULONG IsolationLevel;
|
ULONG IsolationLevel;
|
||||||
ULONG IsolationFlags;
|
ULONG IsolationFlags;
|
||||||
|
@ -16140,7 +16139,7 @@ typedef enum _KTMOBJECT_TYPE {
|
||||||
|
|
||||||
typedef struct _KTMOBJECT_CURSOR {
|
typedef struct _KTMOBJECT_CURSOR {
|
||||||
GUID LastQuery;
|
GUID LastQuery;
|
||||||
unsigned long ObjectIdCount;
|
ULONG ObjectIdCount;
|
||||||
GUID ObjectIds[1];
|
GUID ObjectIds[1];
|
||||||
} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR;
|
} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR;
|
||||||
|
|
||||||
|
@ -16148,14 +16147,14 @@ typedef enum _TRANSACTION_INFORMATION_CLASS {
|
||||||
TransactionBasicInformation,
|
TransactionBasicInformation,
|
||||||
TransactionPropertiesInformation,
|
TransactionPropertiesInformation,
|
||||||
TransactionEnlistmentInformation,
|
TransactionEnlistmentInformation,
|
||||||
TransactionSuperiorEnlistmentInformation,
|
TransactionSuperiorEnlistmentInformation
|
||||||
} TRANSACTION_INFORMATION_CLASS;
|
} TRANSACTION_INFORMATION_CLASS;
|
||||||
|
|
||||||
typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
|
typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
|
||||||
TransactionManagerBasicInformation,
|
TransactionManagerBasicInformation,
|
||||||
TransactionManagerLogInformation,
|
TransactionManagerLogInformation,
|
||||||
TransactionManagerLogPathInformation,
|
TransactionManagerLogPathInformation,
|
||||||
TransactionManagerRecoveryInformation = 4,
|
TransactionManagerRecoveryInformation = 4
|
||||||
} TRANSACTIONMANAGER_INFORMATION_CLASS;
|
} TRANSACTIONMANAGER_INFORMATION_CLASS;
|
||||||
|
|
||||||
typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
|
typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
|
||||||
|
|
|
@ -1664,8 +1664,8 @@ ListEntry32To64(
|
||||||
_In_ PLIST_ENTRY32 ListEntry32,
|
_In_ PLIST_ENTRY32 ListEntry32,
|
||||||
_Out_ PLIST_ENTRY64 ListEntry64)
|
_Out_ PLIST_ENTRY64 ListEntry64)
|
||||||
{
|
{
|
||||||
ListEntry64->Flink = (ULONG)ListEntry32->Flink;
|
ListEntry64->Flink = ListEntry32->Flink;
|
||||||
ListEntry64->Blink = (ULONG)ListEntry32->Blink;
|
ListEntry64->Blink = ListEntry32->Blink;
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
@ -1674,6 +1674,12 @@ ListEntry64To32(
|
||||||
_In_ PLIST_ENTRY64 ListEntry64,
|
_In_ PLIST_ENTRY64 ListEntry64,
|
||||||
_Out_ PLIST_ENTRY32 ListEntry32)
|
_Out_ PLIST_ENTRY32 ListEntry32)
|
||||||
{
|
{
|
||||||
|
/* ASSERT without ASSERT or intrinsics ... */
|
||||||
|
if (((ListEntry64->Flink >> 32) != 0) ||
|
||||||
|
((ListEntry64->Blink >> 32) != 0))
|
||||||
|
{
|
||||||
|
(VOID)*(volatile LONG*)(LONG_PTR)-1;
|
||||||
|
}
|
||||||
ListEntry32->Flink = ListEntry64->Flink & 0xFFFFFFFF;
|
ListEntry32->Flink = ListEntry64->Flink & 0xFFFFFFFF;
|
||||||
ListEntry32->Blink = ListEntry64->Blink & 0xFFFFFFFF;
|
ListEntry32->Blink = ListEntry64->Blink & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1560,24 +1560,40 @@ FsRtlRemovePerFileObjectContext(
|
||||||
_In_opt_ PVOID OwnerId,
|
_In_opt_ PVOID OwnerId,
|
||||||
_In_opt_ PVOID InstanceId);
|
_In_opt_ PVOID InstanceId);
|
||||||
|
|
||||||
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \
|
NTKERNELAPI
|
||||||
FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \
|
NTSTATUS
|
||||||
)
|
NTAPI
|
||||||
|
FsRtlRegisterFileSystemFilterCallbacks(
|
||||||
|
_In_ struct _DRIVER_OBJECT *FilterDriverObject,
|
||||||
|
_In_ PFS_FILTER_CALLBACKS Callbacks);
|
||||||
|
|
||||||
#define FsRtlAreThereCurrentFileLocks(FL) ( \
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
((FL)->FastIoIsQuestionable) \
|
NTKERNELAPI
|
||||||
)
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
FsRtlNotifyStreamFileObject(
|
||||||
|
_In_ struct _FILE_OBJECT * StreamFileObject,
|
||||||
|
_In_opt_ struct _DEVICE_OBJECT *DeviceObjectHint,
|
||||||
|
_In_ FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
|
||||||
|
_In_ BOOLEAN SafeToRecurse);
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
#define FsRtlIncrementLockRequestsInProgress(FL) { \
|
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) \
|
||||||
ASSERT( (FL)->LockRequestsInProgress >= 0 ); \
|
FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11)
|
||||||
(void) \
|
|
||||||
(InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
#define FsRtlAreThereCurrentFileLocks(FL) \
|
||||||
|
((FL)->FastIoIsQuestionable)
|
||||||
|
|
||||||
|
#define FsRtlIncrementLockRequestsInProgress(FL) { \
|
||||||
|
ASSERT((FL)->LockRequestsInProgress >= 0); \
|
||||||
|
(void) \
|
||||||
|
(InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlDecrementLockRequestsInProgress(FL) { \
|
#define FsRtlDecrementLockRequestsInProgress(FL) { \
|
||||||
ASSERT( (FL)->LockRequestsInProgress > 0 ); \
|
ASSERT((FL)->LockRequestsInProgress > 0); \
|
||||||
(void) \
|
(void) \
|
||||||
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _NTSYSTEM_
|
#ifdef _NTSYSTEM_
|
||||||
|
@ -1589,97 +1605,81 @@ extern const UCHAR * const *FsRtlLegalAnsiCharacterArray;
|
||||||
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterWild(C) ( \
|
#define FsRtlIsAnsiCharacterWild(C) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
|
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) \
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
((WILD) ? FSRTL_WILD_CHARACTER : 0 ))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \
|
#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) \
|
||||||
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \
|
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \
|
#define FsRtlIsAnsiCharacterLegal(C,FLAGS) \
|
||||||
FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
|
FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \
|
#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) \
|
||||||
((SCHAR)(C) < 0) ? DEFAULT_RET : \
|
(((SCHAR)(C) < 0) ? DEFAULT_RET : \
|
||||||
FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)], \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], \
|
||||||
(FLAGS) | \
|
(FLAGS) | ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0)))
|
||||||
((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
|
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
|
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) \
|
||||||
(BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
|
((BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
|
||||||
(NLS_MB_CODE_PAGE_TAG && \
|
(NLS_MB_CODE_PAGE_TAG && \
|
||||||
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
|
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlIsUnicodeCharacterWild(C) ( \
|
#define FsRtlIsUnicodeCharacterWild(C) \
|
||||||
(((C) >= 0x40) ? \
|
((((C) >= 0x40) ? FALSE : \
|
||||||
FALSE : \
|
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )))
|
||||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )) \
|
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \
|
#define FsRtlInitPerFileContext(_fc, _owner, _inst, _cb) \
|
||||||
((_fc)->OwnerId = (_owner), \
|
((_fc)->OwnerId = (_owner), \
|
||||||
(_fc)->InstanceId = (_inst), \
|
(_fc)->InstanceId = (_inst), \
|
||||||
(_fc)->FreeCallback = (_cb))
|
(_fc)->FreeCallback = (_cb))
|
||||||
|
|
||||||
#define FsRtlGetPerFileContextPointer(_fo) \
|
#define FsRtlGetPerFileContextPointer(_fo) \
|
||||||
(FsRtlSupportsPerFileContexts(_fo) ? \
|
(FsRtlSupportsPerFileContexts(_fo) ? \
|
||||||
FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : \
|
FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : NULL)
|
||||||
NULL)
|
|
||||||
|
|
||||||
#define FsRtlSupportsPerFileContexts(_fo) \
|
#define FsRtlSupportsPerFileContexts(_fo) \
|
||||||
((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \
|
((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \
|
||||||
(FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \
|
(FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \
|
||||||
(FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL))
|
(FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL))
|
||||||
|
|
||||||
#define FsRtlSetupAdvancedHeaderEx( _advhdr, _fmutx, _fctxptr ) \
|
#define FsRtlSetupAdvancedHeaderEx(_advhdr, _fmutx, _fctxptr) \
|
||||||
{ \
|
{ \
|
||||||
FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \
|
FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \
|
||||||
if ((_fctxptr) != NULL) { \
|
if ((_fctxptr) != NULL) { \
|
||||||
(_advhdr)->FileContextSupportPointer = (_fctxptr); \
|
(_advhdr)->FileContextSupportPointer = (_fctxptr); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlGetPerStreamContextPointer(FO) ( \
|
#define FsRtlGetPerStreamContextPointer(FO) \
|
||||||
(PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \
|
((PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext)
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \
|
#define FsRtlInitPerStreamContext(PSC, O, I, FC) \
|
||||||
(PSC)->OwnerId = (O), \
|
((PSC)->OwnerId = (O), \
|
||||||
(PSC)->InstanceId = (I), \
|
(PSC)->InstanceId = (I), \
|
||||||
(PSC)->FreeCallback = (FC) \
|
(PSC)->FreeCallback = (FC))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlSupportsPerStreamContexts(FO) ( \
|
#define FsRtlSupportsPerStreamContexts(FO) \
|
||||||
(BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
|
((BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
|
||||||
FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
|
FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
|
||||||
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \
|
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)))
|
||||||
)
|
|
||||||
|
|
||||||
#define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \
|
#define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \
|
||||||
(((NULL != (_sc)) && \
|
(((NULL != (_sc)) && \
|
||||||
FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \
|
FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \
|
||||||
!IsListEmpty(&(_sc)->FilterContexts)) ? \
|
!IsListEmpty(&(_sc)->FilterContexts)) ? \
|
||||||
FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : \
|
FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : NULL)
|
||||||
NULL)
|
|
||||||
|
|
||||||
_IRQL_requires_max_(APC_LEVEL)
|
_IRQL_requires_max_(APC_LEVEL)
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
@ -1708,11 +1708,11 @@ FsRtlSetupAdvancedHeader(
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \
|
#define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \
|
||||||
((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
|
((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
|
||||||
|
|
||||||
#define FsRtlCompleteRequest(IRP,STATUS) { \
|
#define FsRtlCompleteRequest(IRP, STATUS) { \
|
||||||
(IRP)->IoStatus.Status = (STATUS); \
|
(IRP)->IoStatus.Status = (STATUS); \
|
||||||
IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
|
IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
|
||||||
}
|
}
|
||||||
$endif (_NTIFS_)
|
$endif (_NTIFS_)
|
||||||
|
|
|
@ -7017,26 +7017,6 @@ typedef struct _FS_FILTER_CALLBACKS {
|
||||||
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
|
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
|
||||||
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
|
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
FsRtlRegisterFileSystemFilterCallbacks(
|
|
||||||
_In_ struct _DRIVER_OBJECT *FilterDriverObject,
|
|
||||||
_In_ PFS_FILTER_CALLBACKS Callbacks);
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
|
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
FsRtlNotifyStreamFileObject(
|
|
||||||
_In_ struct _FILE_OBJECT * StreamFileObject,
|
|
||||||
_In_opt_ struct _DEVICE_OBJECT *DeviceObjectHint,
|
|
||||||
_In_ FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
|
|
||||||
_In_ BOOLEAN SafeToRecurse);
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
|
||||||
|
|
||||||
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
||||||
extern NTKERNELAPI ULONG IoReadOperationCount;
|
extern NTKERNELAPI ULONG IoReadOperationCount;
|
||||||
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
||||||
|
|
|
@ -364,8 +364,8 @@ ListEntry32To64(
|
||||||
_In_ PLIST_ENTRY32 ListEntry32,
|
_In_ PLIST_ENTRY32 ListEntry32,
|
||||||
_Out_ PLIST_ENTRY64 ListEntry64)
|
_Out_ PLIST_ENTRY64 ListEntry64)
|
||||||
{
|
{
|
||||||
ListEntry64->Flink = (ULONG)ListEntry32->Flink;
|
ListEntry64->Flink = ListEntry32->Flink;
|
||||||
ListEntry64->Blink = (ULONG)ListEntry32->Blink;
|
ListEntry64->Blink = ListEntry32->Blink;
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
@ -374,6 +374,12 @@ ListEntry64To32(
|
||||||
_In_ PLIST_ENTRY64 ListEntry64,
|
_In_ PLIST_ENTRY64 ListEntry64,
|
||||||
_Out_ PLIST_ENTRY32 ListEntry32)
|
_Out_ PLIST_ENTRY32 ListEntry32)
|
||||||
{
|
{
|
||||||
|
/* ASSERT without ASSERT or intrinsics ... */
|
||||||
|
if (((ListEntry64->Flink >> 32) != 0) ||
|
||||||
|
((ListEntry64->Blink >> 32) != 0))
|
||||||
|
{
|
||||||
|
(VOID)*(volatile LONG*)(LONG_PTR)-1;
|
||||||
|
}
|
||||||
ListEntry32->Flink = ListEntry64->Flink & 0xFFFFFFFF;
|
ListEntry32->Flink = ListEntry64->Flink & 0xFFFFFFFF;
|
||||||
ListEntry32->Blink = ListEntry64->Blink & 0xFFFFFFFF;
|
ListEntry32->Blink = ListEntry64->Blink & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
|
@ -559,11 +559,11 @@ typedef VOID
|
||||||
(NTAPI *PRTL_FREE_STRING_ROUTINE)(
|
(NTAPI *PRTL_FREE_STRING_ROUTINE)(
|
||||||
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer);
|
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer);
|
||||||
|
|
||||||
extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
|
extern NTKERNELAPI const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
|
||||||
extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
|
extern NTKERNELAPI const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
|
||||||
|
|
||||||
#if _WIN32_WINNT >= 0x0600
|
#if _WIN32_WINNT >= 0x0600
|
||||||
extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
|
extern NTKERNELAPI const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_Function_class_(RTL_HEAP_COMMIT_ROUTINE)
|
_Function_class_(RTL_HEAP_COMMIT_ROUTINE)
|
||||||
|
|
Loading…
Reference in a new issue