23#define BugCheckFileId (CDFS_BUG_CHECK_STRUCSUP)
75#define CdAllocateFcbData(IC) \
76 FsRtlAllocatePoolWithTag( CdPagedPool, SIZEOF_FCB_DATA, TAG_FCB_DATA )
78#define CdDeallocateFcbData(IC,F) \
81#define CdAllocateFcbIndex(IC) \
82 FsRtlAllocatePoolWithTag( CdPagedPool, SIZEOF_FCB_INDEX, TAG_FCB_INDEX )
84#define CdDeallocateFcbIndex(IC,F) \
87#define CdAllocateFcbNonpaged(IC) \
88 ExAllocatePoolWithTag( CdNonPagedPool, sizeof( FCB_NONPAGED ), TAG_FCB_NONPAGED )
90#define CdDeallocateFcbNonpaged(IC,FNP) \
93#define CdAllocateCcb(IC) \
94 FsRtlAllocatePoolWithTag( CdPagedPool, sizeof( CCB ), TAG_CCB )
96#define CdDeallocateCcb(IC,C) \
129#define CdInsertFcbTable(IC,F) { \
130 FCB_TABLE_ELEMENT _Key; \
132 _Key.FileId = (F)->FileId; \
133 RtlInsertElementGenericTable( &(F)->Vcb->FcbTable, \
135 sizeof( FCB_TABLE_ELEMENT ), \
139#define CdDeleteFcbTable(IC,F) { \
140 FCB_TABLE_ELEMENT _Key; \
141 _Key.FileId = (F)->FileId; \
142 RtlDeleteElementGenericTable( &(F)->Vcb->FcbTable, &_Key ); \
204#pragma alloc_text(PAGE, CdAllocateFcbTable)
205#pragma alloc_text(PAGE, CdCleanupIrpContext)
206#pragma alloc_text(PAGE, CdCreateCcb)
207#pragma alloc_text(PAGE, CdCreateFcb)
208#pragma alloc_text(PAGE, CdCreateFcbNonpaged)
209#pragma alloc_text(PAGE, CdCreateFileLock)
210#pragma alloc_text(PAGE, CdCreateIrpContext)
211#pragma alloc_text(PAGE, CdDeallocateFcbTable)
212#pragma alloc_text(PAGE, CdDeleteCcb)
213#pragma alloc_text(PAGE, CdDeleteFcb)
214#pragma alloc_text(PAGE, CdDeleteFcbNonpaged)
215#pragma alloc_text(PAGE, CdDeleteFileLock)
216#pragma alloc_text(PAGE, CdDeleteVcb)
217#pragma alloc_text(PAGE, CdFcbTableCompare)
218#pragma alloc_text(PAGE, CdGetNextFcb)
219#pragma alloc_text(PAGE, CdInitializeFcbFromFileContext)
220#pragma alloc_text(PAGE, CdInitializeFcbFromPathEntry)
221#pragma alloc_text(PAGE, CdInitializeStackIrpContext)
222#pragma alloc_text(PAGE, CdInitializeVcb)
223#pragma alloc_text(PAGE, CdLookupFcbTable)
224#pragma alloc_text(PAGE, CdProcessToc)
225#pragma alloc_text(PAGE, CdTeardownStructures)
226#pragma alloc_text(PAGE, CdTocSerial)
227#pragma alloc_text(PAGE, CdUpdateVcbFromVolDescriptor)
235 { 24, 24,
L"$PATH_TABLE$"},
309 Vcb->NodeByteSize =
sizeof(
VCB );
407 Vcb->CdromToc = CdromToc;
408 Vcb->TocLength = TocLength;
409 Vcb->TrackCount = TocTrackCount;
410 Vcb->DiskFlags = TocDiskFlags;
425 Vcb->BlockFactor = BlockFactor;
506 Vcb->BlockMask =
Vcb->BlockSize - 1;
507 Vcb->BlockInverseMask = ~Vcb->BlockMask;
509 Vcb->BlockToSectorShift = 0;
546 Vcb->PathTableFcb->FileSize.QuadPart = (
LONGLONG) (
Vcb->PathTableFcb->StreamOffset +
549 Vcb->PathTableFcb->ValidDataLength.QuadPart =
Vcb->PathTableFcb->FileSize.QuadPart;
551 Vcb->PathTableFcb->AllocationSize.QuadPart =
LlSectorAlign(
Vcb->PathTableFcb->FileSize.QuadPart );
562 Vcb->PathTableFcb->AllocationSize.QuadPart );
570 Vcb->PathTableFcb->Resource = &
Vcb->FileResource;
651 Vcb->VolumeDasdFcb->AllocationSize.QuadPart =
652 Vcb->VolumeDasdFcb->ValidDataLength.QuadPart =
Vcb->VolumeDasdFcb->FileSize.QuadPart;
660 McbEntry =
Vcb->VolumeDasdFcb->Mcb.McbArray;
665 McbEntry->
ByteCount =
Vcb->VolumeDasdFcb->AllocationSize.QuadPart;
670 Vcb->VolumeDasdFcb->Mcb.CurrentEntryCount = 1;
678 Vcb->VolumeDasdFcb->Resource = &
Vcb->FileResource;
708 ULONG RootDirectorySize;
732 Vcb->PathTableFcb->ValidDataLength.QuadPart =
Vcb->PathTableFcb->FileSize.QuadPart;
734 Vcb->PathTableFcb->AllocationSize.QuadPart =
LlSectorAlign(
Vcb->PathTableFcb->FileSize.QuadPart );
740 Vcb->PathTableFcb->Resource = &
Vcb->FileResource;
794 RootDirectorySize =
SectorAlign( RootDirectorySize );
796 Vcb->RootIndexFcb->AllocationSize.QuadPart =
797 Vcb->RootIndexFcb->ValidDataLength.QuadPart =
798 Vcb->RootIndexFcb->FileSize.QuadPart = RootDirectorySize;
834 Vcb->VolumeDasdFcb->Resource = &
Vcb->FileResource;
923 if (
Vcb->TargetDeviceObject !=
NULL) {
935 if (
Vcb->SectorCacheIrp !=
NULL) {
975#pragma prefast( suppress: __WARNING_BUFFER_UNDERFLOW, "This is ok, the Vcb is embedded in our volume device object, and that is what we are really deleting." )
1030 FcbExisted = &LocalFcbExisted;
1043 if (NewFcb ==
NULL) {
1050 switch (NodeTypeCode) {
1078#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "This is a bug." )
1087 NewFcb->NodeTypeCode = NodeTypeCode;
1089 NewFcb->
Vcb = IrpContext->Vcb;
1092 CdInitializeMcb( IrpContext, NewFcb );
1111 *FcbExisted =
FALSE;
1118 FsRtlSetupAdvancedHeader( &NewFcb->
Header,
1177 Fcb->Ordinal = PathEntry->Ordinal;
1190 Fcb->AllocationSize.QuadPart =
1191 Fcb->FileSize.QuadPart =
1196 PathEntry->DiskOffset,
1262 ULONG CurrentMcbEntryOffset;
1285 Fcb->FileSize.QuadPart =
1332 CurrentCompoundDirent =
FileContext->InitialDirent;
1333 CurrentFileOffset = 0;
1334 CurrentMcbEntryOffset = 0;
1340 CurrentMcbEntryOffset,
1342 &CurrentCompoundDirent->
Dirent );
1354 CurrentMcbEntryOffset += 1;
1368 CurrentCompoundDirent =
FileContext->CurrentDirent;
1370 CdUpdateDirentFromRawDirent( IrpContext,
1373 &CurrentCompoundDirent->
Dirent );
1487 if (
Ccb->SearchExpression.FileName.Buffer !=
NULL) {
1556 if (FileLock ==
NULL) {
1645 if (NewIrpContext !=
NULL) {
1653 if (NewIrpContext ==
NULL) {
1669 NewIrpContext->NodeByteSize =
sizeof(
IRP_CONTEXT );
1675 NewIrpContext->
Irp =
Irp;
1728 return NewIrpContext;
1771 if (IrpContext->ThreadContext !=
NULL) {
1822 if (IrpContext->ThreadContext !=
NULL) {
1890 IrpContext->RealDevice = IrpContextLite->RealDevice;
1896 IrpContext->Vcb = IrpContextLite->Fcb->Vcb;
1917CdTeardownStructures (
2079 AcquiredCurrentFcb =
TRUE;
2139 Key.FileId = FileId;
2145 ReturnFcb = Hit->
Fcb;
2243 ULONG LocalTrackCount;
2244 ULONG LocalTocLength;
2310 LocalTrackCount = CdromToc->LastTrack - CdromToc->FirstTrack + 1;
2311 LocalTocLength =
PtrOffset( CdromToc, &CdromToc->TrackData[LocalTrackCount + 1] );
2317 if ((LocalTocLength >
Iosb.Information) ||
2318 (CdromToc->FirstTrack > CdromToc->LastTrack)) {
2335 Track = &CdromToc->TrackData[CurrentTrack];
2358 CdromToc->LastTrack -= 1;
2402 }
while (CurrentTrack < LocalTrackCount);
2408 *TrackCount = CurrentTrack;
2409 *
Length =
PtrOffset( CdromToc, &CdromToc->TrackData[CurrentTrack + 1] );
2412 CdromToc->Length[0] = BiasedTocLength.BigEndian[1];
2413 CdromToc->Length[1] = BiasedTocLength.BigEndian[0];
2468 CdUninitializeMcb( IrpContext,
Fcb );
2495 switch (
Fcb->NodeTypeCode) {
2588 if (FcbNonpaged !=
NULL) {
2812 ULONG MsfAddress = 0;
2822 LastTrack = &CdromToc->TrackData[ CdromToc->LastTrack - CdromToc->FirstTrack + 1];
2823 ThisTrack = &CdromToc->TrackData[0];
2825 if (CdromToc->LastTrack - CdromToc->FirstTrack <= 1) {
2836 while (ThisTrack != LastTrack) {
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedDecrement
#define CD_ATTRIBUTE_HIDDEN
#define CD_ATTRIBUTE_MULTI
#define CdRvdDirent(R, F)
#define CdConvertCdTimeToNtTime(IC, CD, NT)
USHORT CdAudioLabelLength
#define CDFS_RESIDUAL_REFERENCE
#define ASSERT_EXCLUSIVE_CDDATA
#define ASSERT_EXCLUSIVE_VCB(V)
VOID CdAddAllocationFromDirent(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_ ULONG McbEntryOffset, _In_ LONGLONG StartingFileOffset, _In_ PDIRENT Dirent)
VOID CdAddInitialAllocation(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_ ULONG StartingBlock, _In_ LONGLONG DataLength)
VOID CdCreateInternalStream(_In_ PIRP_CONTEXT IrpContext, _In_ PVCB Vcb, _Inout_ PFCB Fcb, _In_ PUNICODE_STRING Name)
VOID CdDeleteInternalStream(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb)
#define CdDeallocateFcbIndex(IC, F)
VOID CdInitializeStackIrpContext(_Out_ PIRP_CONTEXT IrpContext, _In_ PIRP_CONTEXT_LITE IrpContextLite)
VOID CdInitializeFcbFromFileContext(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_ PFCB ParentFcb, _In_ PFILE_ENUM_CONTEXT FileContext)
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
PCCB CdCreateCcb(_In_ PIRP_CONTEXT IrpContext, _In_ PFCB Fcb, _In_ ULONG Flags)
PFCB_NONPAGED CdCreateFcbNonpaged(_In_ PIRP_CONTEXT IrpContext)
#define CdAllocateCcb(IC)
struct _FCB_TABLE_ELEMENT FCB_TABLE_ELEMENT
#define CdDeallocateFcbNonpaged(IC, FNP)
ULONG CdTocSerial(_In_ PIRP_CONTEXT IrpContext, _In_ PCDROM_TOC_LARGE CdromToc)
#define CdDeallocateFcbData(IC, F)
VOID CdDeleteFcb(_In_ PIRP_CONTEXT IrpContext, _In_ PFCB Fcb)
VOID CdDeleteCcb(_In_ PIRP_CONTEXT IrpContext, _In_ __drv_freesMem(Pool) PCCB Ccb)
#define CdAllocateFcbNonpaged(IC)
PFCB CdLookupFcbTable(_In_ PIRP_CONTEXT IrpContext, _In_ PVCB Vcb, _In_ FILE_ID FileId)
#define CdDeallocateCcb(IC, C)
VOID CdInitializeVcb(_In_ PIRP_CONTEXT IrpContext, _Inout_ PVCB Vcb, _In_ __drv_aliasesMem PDEVICE_OBJECT TargetDeviceObject, _In_ __drv_aliasesMem PVPB Vpb, _In_ __drv_aliasesMem PCDROM_TOC_LARGE CdromToc, _In_ ULONG TocLength, _In_ ULONG TocTrackCount, _In_ ULONG TocDiskFlags, _In_ ULONG BlockFactor, _In_ ULONG MediaChangeCount)
VOID CdInitializeFcbFromPathEntry(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_opt_ PFCB ParentFcb, _In_ PPATH_ENTRY PathEntry)
UNICODE_STRING CdInternalStreamNames[]
VOID CdDeleteVcb(_In_ PIRP_CONTEXT IrpContext, _Inout_ PVCB Vcb)
RTL_GENERIC_COMPARE_ROUTINE CdFcbTableCompare
#define CdAllocateFcbData(IC)
#define CdInsertFcbTable(IC, F)
#define CdAllocateFcbIndex(IC)
VOID CdDeleteFcbNonpaged(_In_ PIRP_CONTEXT IrpContext, _In_ PFCB_NONPAGED FcbNonpaged)
PFCB CdCreateFcb(_In_ PIRP_CONTEXT IrpContext, _In_ FILE_ID FileId, _In_ NODE_TYPE_CODE NodeTypeCode, _Out_opt_ PBOOLEAN FcbExisted)
NTSTATUS CdProcessToc(_In_ PIRP_CONTEXT IrpContext, _In_ PDEVICE_OBJECT TargetDeviceObject, _In_ PCDROM_TOC_LARGE CdromToc, _Inout_ PULONG Length, _Out_ PULONG TrackCount, _Inout_ PULONG DiskFlags)
RTL_GENERIC_FREE_ROUTINE CdDeallocateFcbTable
struct _FCB_TABLE_ELEMENT * PFCB_TABLE_ELEMENT
#define CdDeleteFcbTable(IC, F)
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
PFCB CdGetNextFcb(_In_ PIRP_CONTEXT IrpContext, _In_ PVCB Vcb, _In_ PVOID *RestartKey)
VOID CdUpdateVcbFromVolDescriptor(_In_ PIRP_CONTEXT IrpContext, _Inout_ PVCB Vcb, _In_reads_bytes_opt_(SECTOR_SIZE) PCHAR RawIsoVd)
RTL_GENERIC_ALLOCATE_ROUTINE CdAllocateFcbTable
#define CdUpdateMediaChangeCount(V, C)
#define SwapCopyUchar4(Dst, Src)
#define CdUpdateVcbCondition(V, C)
#define CdReleaseFcb(IC, F)
#define CopyUchar4(Dst, Src)
_Inout_ PFCB _In_ BOOLEAN RaiseOnError
_Inout_ PFCB _Out_ PBOOLEAN RemovedStartingFcb
#define CdGetFcbOplock(F)
_In_ PFCB _In_ PCD_NAME _In_ BOOLEAN _Inout_ PFILE_ENUM_CONTEXT FileContext
#define LlBytesFromBlocks(V, B)
BOOLEAN CdLookupNextDirent(_In_ PIRP_CONTEXT IrpContext, _In_ PFCB Fcb, _In_ PDIRENT_ENUM_CONTEXT CurrentDirContext, _Inout_ PDIRENT_ENUM_CONTEXT NextDirContext)
#define CdUnlockVcb(IC, V)
#define SectorBlockOffset(V, LB)
VOID CdLbnToMmSsFf(_In_ ULONG Blocks, _Out_writes_(3) PUCHAR Msf)
#define BytesFromBlocks(V, B)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTSTATUS CdPerformDevIoCtrlEx(_In_ PIRP_CONTEXT IrpContext, _In_ ULONG IoControlCode, _In_ PDEVICE_OBJECT Device, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength, _In_ BOOLEAN InternalDeviceIoControl, _In_ BOOLEAN OverrideVerify, _Out_opt_ PIO_STATUS_BLOCK Iosb)
#define CdAcquireFcbExclusive(IC, F, I)
#define CdDecrementReferenceCounts(IC, F, C, UC)
_Inout_ PFCB * CurrentFcb
#define PtrOffset(BASE, OFFSET)
#define CdFreeIoContext(IO)
#define CdRestoreThreadContext(IC)
#define LlBlockAlign(V, L)
VOID CdRemovePrefix(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb)
#define CdUnlockFcb(IC, F)
#define CdIncrementReferenceCounts(IC, F, C, UC)
#define CdRaiseStatus(IC, S)
#define FCB_STATE_MODE2FORM2_FILE
#define FCB_STATE_INITIALIZED
#define IRP_CONTEXT_FLAG_FORCE_POST
#define VCB_STATE_REMOVABLE_MEDIA
#define IRP_CONTEXT_FLAG_WAIT
#define VCB_STATE_AUDIO_DISK
VOLUME_DEVICE_OBJECT * PVOLUME_DEVICE_OBJECT
#define FCB_STATE_IN_FCB_TABLE
#define IRP_CONTEXT_FLAG_ON_STACK
#define FCB_STATE_DA_FILE
#define IRP_CONTEXT_FLAG_ALLOC_IO
#define IRP_CONTEXT_FLAGS_CLEAR_ON_RETRY
struct _FCB_NONPAGED FCB_NONPAGED
#define CdFidSetDirectory(I)
IRP_CONTEXT * PIRP_CONTEXT
#define IRP_CONTEXT_FLAG_IN_TEARDOWN
#define IRP_CONTEXT_FLAGS_CLEAR_ON_POST
#define CdSetFidPathTableOffset(I, P)
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
#define _Requires_lock_held_(lock)
#define NT_SUCCESS(StatCode)
#define CdBugCheck(A, B, C)
#define CDFS_NTC_FCB_PATH_TABLE
#define CDFS_NTC_FCB_NONPAGED
#define CDFS_NTC_IRP_CONTEXT
#define SafeNodeType(Ptr)
#define CDFS_NTC_FCB_INDEX
#define CDFS_NTC_FCB_DATA
_In_ PIO_STACK_LOCATION IrpSp
#define __drv_freesMem(kind)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
NTSTATUS ExInitializeResourceLite(PULONG res)
#define ExDeleteResourceLite(res)
#define InitializeListHead(ListHead)
#define ClearFlag(_F, _SF)
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
PFILE_LOCK NTAPI FsRtlAllocateFileLock(IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL, IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL)
VOID NTAPI FsRtlFreeFileLock(IN PFILE_LOCK FileLock)
VOID NTAPI FsRtlTeardownPerStreamContexts(IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader)
VOID NTAPI RtlInitializeGenericTable(IN PRTL_GENERIC_TABLE Table, IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
#define Add2Ptr(PTR, INC)
#define RtlEqualMemory(dst, src, len)
#define _At_(target, annos)
#define _When_(expr, annos)
#define _In_reads_bytes_opt_(size)
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_HIDDEN
#define FSCTL_INVALIDATE_VOLUMES
#define FILE_ATTRIBUTE_DIRECTORY
#define FILE_REMOVABLE_MEDIA
#define UNREFERENCED_PARAMETER(P)
#define IOCTL_CDROM_READ_TOC_EX
#define CDROM_DISK_DATA_TRACK
#define CDROM_DISK_AUDIO_TRACK
#define IOCTL_CDROM_READ_TOC
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define ARGUMENT_PRESENT(ArgumentPointer)
PVOID NTAPI FsRtlAllocatePoolWithTag(IN POOL_TYPE PoolType, IN ULONG NumberOfBytes, IN ULONG Tag)
VOID NTAPI FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
VOID NTAPI FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
#define STATUS_NOT_IMPLEMENTED
VOID NTAPI FsRtlUninitializeOplock(IN POPLOCK Oplock)
VOID NTAPI FsRtlInitializeOplock(IN OUT POPLOCK Oplock)
#define _SEH2_AbnormalTermination()
NODE_BYTE_SIZE NodeByteSize
NODE_TYPE_CODE NodeTypeCode
SINGLE_LIST_ENTRY IrpContextList
PDEVICE_OBJECT FileSystemDeviceObject
LONGLONG TotalBlockByteCount
LONGLONG DataBlockByteCount
DIRENT_ENUM_CONTEXT DirContext
XA_EXTENT_TYPE ExtentType
FAST_MUTEX AdvancedFcbHeaderMutex
NODE_BYTE_SIZE NodeByteSize
PREFIX_ENTRY FileNamePrefix
FSRTL_ADVANCED_FCB_HEADER Header
PPREFIX_ENTRY ShortNamePrefix
__volatile LONG FcbReference
PFCB_NONPAGED FcbNonpaged
PDEVICE_OBJECT DeviceObject
struct _IO_STACK_LOCATION::@3984::@3999 FileSystemControl
union _IO_STACK_LOCATION::@1575 Parameters
WCHAR FileNameBuffer[BYTE_COUNT_EMBEDDED_NAME]
struct _FCB * RootIndexFcb
struct _FCB * VolumeDasdFcb
struct _FCB * PathTableFcb
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_PARAMETER
#define STATUS_DISK_CORRUPT_ERROR
#define STATUS_FILE_CORRUPT_ERROR
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFDPC _In_ BOOLEAN Wait
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Must_inspect_result_ _In_ ULONG Flags
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define IRP_MJ_FILE_SYSTEM_CONTROL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
#define IRP_MN_USER_FS_REQUEST
#define IRP_MN_MOUNT_VOLUME
#define ObDereferenceObject
#define ObReferenceObject
FORCEINLINE VOID PushEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY Entry)
FORCEINLINE PSINGLE_LIST_ENTRY PopEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead)
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlLookupElementGenericTable(_In_ PRTL_GENERIC_TABLE Table, _In_ PVOID Buffer)
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableWithoutSplaying(_In_ PRTL_GENERIC_TABLE Table, _Inout_ PVOID *RestartKey)
RTL_GENERIC_FREE_ROUTINE * PRTL_GENERIC_FREE_ROUTINE
RTL_GENERIC_COMPARE_ROUTINE * PRTL_GENERIC_COMPARE_ROUTINE
_IRQL_requires_same_ _In_ CLONG ByteSize
RTL_GENERIC_ALLOCATE_ROUTINE * PRTL_GENERIC_ALLOCATE_ROUTINE
enum _RTL_GENERIC_COMPARE_RESULTS RTL_GENERIC_COMPARE_RESULTS