Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#ifndef _RXFCBTABLE_#define _RXFCBTABLE_
typedef struct _RX_FCB_TABLE_ENTRY { NODE_TYPE_CODE NodeTypeCode; NODE_BYTE_SIZE NodeByteSize; ULONG HashValue; UNICODE_STRING Path; LIST_ENTRY HashLinks; LONG Lookups;} RX_FCB_TABLE_ENTRY, *PRX_FCB_TABLE_ENTRY;
#define RX_FCB_TABLE_NUMBER_OF_HASH_BUCKETS 32
typedef struct _RX_FCB_TABLE{ NODE_TYPE_CODE NodeTypeCode; NODE_BYTE_SIZE NodeByteSize; volatile ULONG Version; BOOLEAN CaseInsensitiveMatch; USHORT NumberOfBuckets; volatile LONG Lookups; volatile LONG FailedLookups; volatile LONG Compares; ERESOURCE TableLock; PRX_FCB_TABLE_ENTRY TableEntryForNull; LIST_ENTRY HashBuckets[RX_FCB_TABLE_NUMBER_OF_HASH_BUCKETS];} RX_FCB_TABLE, *PRX_FCB_TABLE;
VOIDRxInitializeFcbTable( _Inout_ PRX_FCB_TABLE FcbTable, _In_ BOOLEAN CaseInsensitiveMatch);
VOIDRxFinalizeFcbTable( _Inout_ PRX_FCB_TABLE FcbTable);
PFCBRxFcbTableLookupFcb( _In_ PRX_FCB_TABLE FcbTable, _In_ PUNICODE_STRING Path);
NTSTATUSRxFcbTableInsertFcb( _Inout_ PRX_FCB_TABLE FcbTable, _Inout_ PFCB Fcb);
NTSTATUSRxFcbTableRemoveFcb( _Inout_ PRX_FCB_TABLE FcbTable, _Inout_ PFCB Fcb);
#define RxAcquireFcbTableLockShared(T, W) ExAcquireResourceSharedLite(&(T)->TableLock, W)#define RxAcquireFcbTableLockExclusive(T, W) ExAcquireResourceExclusiveLite(&(T)->TableLock, W)#define RxReleaseFcbTableLock(T) ExReleaseResourceLite(&(T)->TableLock)
#define RxIsFcbTableLockExclusive(T) ExIsResourceAcquiredExclusiveLite(&(T)->TableLock)
#define RxIsFcbTableLockAcquired(T) (ExIsResourceAcquiredSharedLite(&(T)->TableLock) || \ ExIsResourceAcquiredExclusiveLite(&(T)->TableLock))
#ifdef __REACTOS__#define FCB_HASH_BUCKET(T, H) &(T)->HashBuckets[H % (T)->NumberOfBuckets]#endif
#endif