19#define UDF_BUG_CHECK_ID UDF_FILE_MISC
45 uint32 SizeOfObjectNameZone = 0;
48 uint32 SizeOfIrpContextZone = 0;
141 SizeOfIrpContextZone))) {
272#if defined UDF_DBG || defined PRINT_ALWAYS
322 UDFPrint((
" UDF Driver internal error\n"));
369 UDFPrint((
"UDFExceptionHandler \n"));
386 UDFPrint((
" complete Irp and return\n"));
411 UDFPrint((
" use UDFPostRequest()\n"));
420 UDFPrint((
" STATUS_PENDING/STATUS_CANT_WAIT, return\n"));
451 UDFPrint((
" Device == NULL, return\n"));
464 UDFPrint((
" use UDFPerformVerify()\n"));
478 UDFPrint((
" DISABLE_POPUPS, complete Irp and return\n"));
509 UDFPrint((
" Device == NULL, return(2)\n"));
531 UDFPrint((
" use IoSetDeviceToVerify()\n"));
631 AllocatedFromZone =
FALSE;
634 if (!PtrObjectName) {
646 if (!AllocatedFromZone) {
650 return(PtrObjectName);
727 AllocatedFromZone =
FALSE;
743 if (!AllocatedFromZone) {
822 if (
Ccb->DirectorySearchPattern) {
823 if (
Ccb->DirectorySearchPattern->Buffer) {
825 Ccb->DirectorySearchPattern->Buffer =
NULL;
829 Ccb->DirectorySearchPattern =
NULL;
930 UDFPrint((
"UDF: Fcb has invalid FCBName Buffer\n"));
939 UDFPrint((
"UDF: Fcb has invalid FCBName field\n"));
964ULONG IrpContextCounter = 0;
1009 AllocatedFromZone =
FALSE;
1014 if (!PtrIrpContext) {
1019 IrpContextCounter++;
1030 PtrIrpContext->
Irp =
Irp;
1056 if (!AllocatedFromZone) {
1067 return(PtrIrpContext);
1089 if(!PtrIrpContext)
return;
1093 IrpContextCounter--;
1154 Vcb = (
PVCB)(PtrIrpContext->TargetDeviceObject->DeviceExtension);
1164 &(PtrIrpContext->WorkQueueItem.List) );
1165 Vcb->OverflowQueueCount++;
1172 Vcb->PostedRequestCount++;
1224 if ( !PtrIrpContext ||
1245 Irp = PtrIrpContext->
Irp;
1277#ifndef UDF_READ_ONLY_BUILD
1296#ifndef UDF_READ_ONLY_BUILD
1306#ifndef UDF_READ_ONLY_BUILD
1312#ifdef UDF_HANDLE_EAS
1322#ifdef UDF_ENABLE_SECURITY
1327#ifndef UDF_READ_ONLY_BUILD
1339 Irp->IoStatus.Information = 0;
1372 if(!
Vcb->OverflowQueueCount)
1375 Vcb->OverflowQueueCount--;
1382 WorkQueueItem.List );
1387 Vcb->PostedRequestCount--;
1431 Vcb = (
PVCB)(PtrVolumeDeviceObject->DeviceExtension);
1440 Vcb->NodeIdentifier.NodeSize =
sizeof(
VCB);
1446 VCBResourceInit =
TRUE;
1451 BitMapResource1Init =
TRUE;
1456 FcbListResourceInit =
TRUE;
1461 FileIdResourceInit =
TRUE;
1466 DlocResourceInit =
TRUE;
1471 DlocResource2Init =
TRUE;
1476 FlushResourceInit =
TRUE;
1481 PreallocResourceInit =
TRUE;
1486 IoResourceInit =
TRUE;
1493 if(!
Vcb->Statistics)
1498 Vcb->Statistics[
i].Common.Version = 1;
1499 Vcb->Statistics[
i].Common.SizeOfCompleteStructure =
1512 Vcb->TargetDeviceObject = PtrTargetDeviceObject;
1517 Vcb->VCBDeviceObject = PtrVolumeDeviceObject;
1539 Vcb->OverflowQueueCount = 0;
1542 Vcb->PostedRequestCount = 0;
1550 if(!
Vcb->NTRequiredFCB)
1563 Vcb->NTRequiredFCB->CommonFCBHeader.ValidDataLength.QuadPart = 0x7FFFFFFFFFFFFFFFULL;
1565 Vcb->VolumeLockPID = -1;
1567 Vcb->VCBOpenCount = 1;
1592 if(!
Vcb->TargetDevName.Buffer)
1604 goto Kill_DevName_buffer;
1612 goto Kill_DevName_buffer;
1626 Vcb->TargetDevName.MaximumLength =
1627 (
Vcb->TargetDevName.Length =
Vcb->TargetDevName.Buffer[0]) +
sizeof(
WCHAR);
1629 Vcb->TargetDevName.Buffer[
i = (
SHORT)(
Vcb->TargetDevName.Length/
sizeof(
WCHAR))] = 0;
1632 if(
Vcb->TargetDevName.Buffer[
i] ==
L'\\') {
1634 Vcb->TargetDevName.Length -=
i*
sizeof(
WCHAR);
1636 Vcb->TargetDevName.Buffer[
Vcb->TargetDevName.Length/
sizeof(
WCHAR)] = 0;
1641 UDFPrint((
" TargetDevName: %S\n",
Vcb->TargetDevName.Buffer));
1662 if(
Vcb->TargetDevName.Buffer)
1664 if(
Vcb->NTRequiredFCB)
1671 if(BitMapResource1Init)
1673 if(FcbListResourceInit)
1675 if(FileIdResourceInit)
1677 if(DlocResourceInit)
1679 if(DlocResource2Init)
1681 if(FlushResourceInit)
1683 if(PreallocResourceInit)
1698 switch(
Vcb->FsDeviceType) {
1741#ifdef UDF_HDD_SUPPORT
1809 if(!
Vcb->FEChargeSDir)
1815 if(
Vcb->PackDirThreshold == 0xffffffff)
1821 if(!
Vcb->SystemCacheGran)
1827 if(!
Vcb->BM_FlushPriod) {
1830 if(
Vcb->BM_FlushPriod == (
ULONG)-1) {
1831 Vcb->BM_FlushPriod = 0;
1835 if(!
Vcb->Tree_FlushPriod) {
1838 if(
Vcb->Tree_FlushPriod == (
ULONG)-1) {
1839 Vcb->Tree_FlushPriod = 0;
1843 if(!
Vcb->SkipCountLimit)
1844 Vcb->SkipCountLimit = -1;
1853 if(
Vcb->ThreadsPerCpu < 2)
1860 if(!
Vcb->SparseThreshold)
1866#ifndef UDF_READ_ONLY_BUILD
1899#ifndef UDF_READ_ONLY_BUILD
1908#ifndef UDF_READ_ONLY_BUILD
1923 Vcb->DoNotCompareBeforeWrite =
TRUE;
1925 Vcb->DoNotCompareBeforeWrite =
FALSE;
1938 if(
Vcb->ShowBlankCd) {
1940 if(
Vcb->ShowBlankCd > 2) {
1941 Vcb->ShowBlankCd = 2;
1958 if(
Vcb->PartitialDamagedVolumeAction > 2) {
1964 if(
Vcb->NoFreeRelocationSpaceVolumeAction > 1) {
1975 Vcb->WCacheMaxBlocks *= mult;
1976 Vcb->WCacheMaxFrames *= mult;
2023 if(
len >=
sizeof(NameA))
2088 if(
a==
'0' && Cfg[
i+1]==
'x') {
2110 if(
a >=
'0' &&
a <=
'9') {
2115 if(
a >=
'a' &&
a <=
'f') {
2118 if(
a >=
'A' &&
a <=
'F') {
2125 ret_val = ret_val*radix +
a;
2145 while(
Vcb->PostedRequestCount) {
2146 UDFPrint((
"UDFReleaseVCB: PostedRequestCount = %d\n",
Vcb->PostedRequestCount));
2153 UDFPrint((
"UDF: Flushing buffers\n"));
2165 UDFPrint((
"UDF: attempt to access to not protected data\n"));
2166 UDFPrint((
"UDF: UDFGlobalData\n"));
2189 UDFPrint((
"UDF: Delete resources\n"));
2267 UDFPrint((
"UDFCheckRegValue: couldn't allocate paramPath\n"));
2271 if(!paramPathUnknown.
Buffer) {
2272 UDFPrint((
"UDFCheckRegValue: couldn't allocate paramPathUnknown\n"));
2300 UDFPrint((
"UDFCheckRegValue: (2) |%S|\n", paramPathUnknown.
Buffer));
2308 if(!defaultParamPath.
Buffer) {
2309 UDFPrint((
"UDFCheckRegValue: couldn't allocate defaultParamPath\n"));
2322 UDFPrint((
"UDFCheckRegValue: (3) |%S|\n", defaultParamPath.
Buffer));
2326 paramSuffix = *PtrVolumePath;
2335 if(!paramDevPath.
Buffer) {
2383 if(DefaultPath && defaultParamPath.
Buffer) {
2389 if(paramDevPath.
Buffer) {
2392 if(paramPathUnknown.
Buffer) {
2397 UDFPrint((
"UDFCheckRegValue: %ws for drive %s is %x\n\n",
Name, PtrVolumePath,
val));
2429 (*IrpContext)->Fcb = IrpContextLite->Fcb;
2430 (*IrpContext)->TreeLength = IrpContextLite->TreeLength;
2431 (*IrpContext)->IrpContextFlags |= (IrpContextLite->IrpContextFlags & ~UDF_IRP_CONTEXT_NOT_FROM_ZONE);
2464 if(!LocalIrpContextLite)
2472 LocalIrpContextLite->
Fcb =
Fcb;
2473 LocalIrpContextLite->
TreeLength = IrpContext->TreeLength;
2475 LocalIrpContextLite->
RealDevice = IrpContext->TargetDeviceObject;
2477 *IrpContextLite = LocalIrpContextLite;
2503 Irp->IoStatus.Status = RC;
2504 Irp->IoStatus.Information = 0;
2537 UDFPrint((
"UDFAcquireResourceExclusiveWithCheck: ReAcqRes, %x\n", ReAcqRes));
2546 UDFPrint((
"UDFAcquireResourceExclusiveWithCheck: !!! Shared !!!\n"));
2564 UDFPrint((
"UDFAcquireResourceSharedWithCheck: ReAcqRes, %x\n", ReAcqRes));
2573 UDFPrint((
"UDFAcquireResourceSharedWithCheck: Exclusive\n"));
2589 return ErrorInfo->Status;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
#define FSP_PER_DEVICE_THRESHOLD
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
#define MediaType_UnknownSize_Unknown
#define MediaType_UnknownSize_CDR
#define MediaType_UnknownSize_CDRW
#define CdMediaClass_DVDR
#define CdMediaClass_DVDRW
#define CdMediaClass_CDROM
#define CdMediaClass_HD_DVDRW
#define CdMediaClass_CDRW
#define CdMediaClass_BDRE
#define CdMediaClass_BDROM
#define CdMediaClass_HD_DVDROM
#define CdMediaClass_HD_DVDRAM
#define IOCTL_CDRW_GET_DEVICE_NAME
#define CdMediaClass_DVDRAM
#define CdMediaClass_HD_DVDR
#define CdMediaClass_DVDROM
#define CdMediaClass_DVDpR
#define CdMediaClass_DVDpRW
NTSTATUS UDFCommonCleanup(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonClose(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS NTAPI UDFCommonDirControl(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define NT_SUCCESS(StatCode)
_In_ PIO_STACK_LOCATION IrpSp
NTSTATUS UDFCommonCreate(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFExceptionHandler(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
VOID UDFUpdateCompatOption(PVCB Vcb, BOOLEAN Update, BOOLEAN UseCfg, PCWSTR Name, ULONG Flag, BOOLEAN Default)
BOOLEAN UDFAcquireResourceExclusiveWithCheck(IN PERESOURCE Resource)
VOID UDFReadRegKeys(PVCB Vcb, BOOLEAN Update, BOOLEAN UseCfg)
ULONG UDFGetCfgParameter(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
VOID __fastcall UDFCleanUpFCB(PtrUDFFCB Fcb)
BOOLEAN __fastcall UDFIsIrpTopLevel(PIRP Irp)
VOID UDFLogEvent(NTSTATUS UDFEventLogId, NTSTATUS RC)
VOID UDFDestroyZones(VOID)
PtrUDFCCB UDFAllocateCCB(VOID)
ULONG(* ptrUDFGetParameter)(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
VOID __fastcall UDFReleaseCCB(PtrUDFCCB Ccb)
NTSTATUS UDFPostRequest(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp)
ULONG UDFRegCheckParameterValue(IN PUNICODE_STRING RegistryPath, IN PCWSTR Name, IN PUNICODE_STRING PtrVolumePath, IN PCWSTR DefaultPath, IN ULONG DefValue)
NTSTATUS UDFInitializeZones(VOID)
PtrUDFIrpContext UDFAllocateIrpContext(PIRP Irp, PDEVICE_OBJECT PtrTargetDeviceObject)
VOID UDFReleaseIrpContext(PtrUDFIrpContext PtrIrpContext)
UDFFSD_MEDIA_TYPE UDFGetMediaClass(PVCB Vcb)
ULONG UDFGetRegParameter(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
ULONG UDFIsResourceAcquired(IN PERESOURCE Resource)
VOID __fastcall UDFCleanUpCCB(PtrUDFCCB Ccb)
VOID __fastcall UDFReleaseObjectName(PtrUDFObjectName PtrObjectName)
BOOLEAN UDFAcquireResourceSharedWithCheck(IN PERESOURCE Resource)
VOID UDFInitializeIrpContextFromLite(OUT PtrUDFIrpContext *IrpContext, IN PtrUDFIrpContextLite IrpContextLite)
VOID UDFReleaseVCB(PVCB Vcb)
VOID NTAPI UDFCommonDispatch(IN PVOID Context)
NTSTATUS UDFWCacheErrorHandler(IN PVOID Context, IN PWCACHE_ERROR_CONTEXT ErrorInfo)
long UDFExceptionFilter(PtrUDFIrpContext PtrIrpContext, PEXCEPTION_POINTERS PtrExceptionPointers)
NTSTATUS NTAPI UDFQuerySetEA(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PtrUDFObjectName UDFAllocateObjectName(VOID)
NTSTATUS UDFInitializeIrpContextLite(OUT PtrUDFIrpContextLite *IrpContextLite, IN PtrUDFIrpContext IrpContext, IN PtrUDFFCB Fcb)
PtrUDFFCB UDFAllocateFCB(VOID)
NTSTATUS UDFInitializeVCB(IN PDEVICE_OBJECT PtrVolumeDeviceObject, IN PDEVICE_OBJECT PtrTargetDeviceObject, IN PVPB PtrVPB)
#define ICB_FLAG_AD_SHORT
NTSTATUS NTAPI UDFPhSendIOCTL(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, OUT PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN OverrideVerify, OUT PIO_STATUS_BLOCK Iosb OPTIONAL)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define UDFReleaseResource(Resource)
#define IsListEmpty(ListHead)
#define UDFDeleteResource(Resource)
#define PsGetCurrentThread()
#define RtlCompareMemory(s1, s2, l)
#define KeReleaseSpinLock(sl, irql)
#define UDFAcquireResourceShared(Resource, CanWait)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define UDFAcquireResourceExclusive(Resource, CanWait)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
#define UDFInitializeResourceLite(Resource)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define KeDelayExecutionThread(mode, foo, t)
#define KeInitializeSpinLock(sl)
#define UDF_ERROR_INTERNAL_ERROR
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
FILE_SYSTEM_STATISTICS * PFILE_SYSTEM_STATISTICS
struct _FILE_SYSTEM_STATISTICS FILE_SYSTEM_STATISTICS
NTSTATUS UDFCommonFileInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID UDFCleanupVCB(IN PVCB Vcb)
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define FSRTL_FSP_TOP_LEVEL_IRP
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
MM_SYSTEMSIZE NTAPI MmQuerySystemSize(VOID)
BOOLEAN NTAPI MmIsThisAnNtAsSystem(VOID)
#define sprintf(buf, format,...)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define FILE_FLOPPY_DISKETTE
#define FILE_REMOVABLE_MEDIA
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
VOID NTAPI FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
VOID NTAPI FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoRaiseHardError(IN PIRP Irp, IN PVPB Vpb, IN PDEVICE_OBJECT RealDeviceObject)
#define IoCompleteRequest
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
PIRP NTAPI IoGetTopLevelIrp(VOID)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
VOID NTAPI IoSetDeviceToVerify(IN PETHREAD Thread, IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT NTAPI IoGetDeviceToVerify(IN PETHREAD Thread)
#define STATUS_EAS_NOT_SUPPORTED
#define STATUS_IN_PAGE_ERROR
__inline VOID UDFReleaseFCB(PtrUDFFCB Fcb)
NTSTATUS UDFCommonQueryVolInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonSetVolInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFPerformVerify(IN PtrUDFIrpContext IrpContext, IN PIRP Irp, IN PDEVICE_OBJECT DeviceToVerify)
NTSTATUS UDFCommonWrite(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonSetSecurity(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonRead(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonGetSecurity(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define FILE_DEVICE_DISK_FILE_SYSTEM
#define FILESYSTEM_STATISTICS_TYPE_NTFS
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionInformation()
#define IRP_MJ_DIRECTORY_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
VOID UDFVRelease(IN PVCB Vcb)
#define STATUS_BUFFER_OVERFLOW
base of all file and directory entries
#define UDF_CCB_NOT_FROM_ZONE
#define UDF_NODE_TYPE_OBJECT_NAME
struct _UDFObjectName * PtrUDFObjectName
#define UDF_IRP_CONTEXT_NOT_TOP_LEVEL
#define UDF_NODE_TYPE_IRP_CONTEXT_LITE
struct _UDFFileControlBlock * PtrUDFFCB
#define UDF_OBJ_NAME_NOT_FROM_ZONE
#define UDF_IRP_CONTEXT_CAN_BLOCK
struct _UDFIrpContext * PtrUDFIrpContext
struct _UDFNTRequiredFCB * PtrUDFNTRequiredFCB
#define UDF_NODE_TYPE_CCB
struct _UDFContextControlBlock * PtrUDFCCB
#define UDF_FCB_INITIALIZED_CCB_LIST_RESOURCE
#define UDF_NTAS_MULTIPLE
#define UDF_IRP_CONTEXT_NOT_FROM_ZONE
struct _UDFIrpContextLite * PtrUDFIrpContextLite
#define UDF_NODE_TYPE_FCB
#define UDF_NODE_TYPE_VCB
#define UDF_IRP_CONTEXT_EXCEPTION
#define UDF_IRP_CONTEXT_FLAG_DISABLE_POPUPS
struct _UDFIrpContextLite UDFIrpContextLite
#define UDF_NODE_TYPE_IRP_CONTEXT
PEXCEPTION_RECORD ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
struct _FCB::@729::@732 Fcb
UNICODE_STRING SavedRegPath
ULONG WCacheFramesToKeepFree
ULONG WCacheBlocksPerFrameSh
PDEVICE_OBJECT RealDevice
_UDFFileControlBlock * Fcb
UDFIdentifier NodeIdentifier
UDFIdentifier NodeIdentifier
PDEVICE_OBJECT TargetDeviceObject
NTSTATUS SavedExceptionCode
UDFIdentifier NodeIdentifier
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define UDF_VCB_IC_UPDATE_MODIFY_TIME
#define UDF_VCB_IC_FORCE_HW_RO
#define UDF_VCB_IC_DIRTY_RO
#define UDF_VCB_IC_IGNORE_SEQUENTIAL_IO
#define UDF_VCB_IC_OS_NATIVE_DOS_NAME
#define UDF_VCB_IC_WAIT_CD_SPINUP
#define UDF_DATA_FLAGS_ZONES_INITIALIZED
#define UDF_VCB_FLAGS_REMOVABLE_MEDIA
#define UDF_VCB_IC_UPDATE_ATTR_TIME
enum _UDFFSD_MEDIA_TYPE UDFFSD_MEDIA_TYPE
#define UDF_VCB_FLAGS_VOLUME_READ_ONLY
#define UDF_VCB_FLAGS_RAW_DISK
#define UDF_VCB_IC_UPDATE_ARCH_BIT
#define UDF_VCB_IC_W2K_COMPAT_ALLOC_DESCS
#define UDF_VCB_IC_INSTANT_COMPAT_ALLOC_DESCS
#define UDF_VCB_FLAGS_MEDIA_READ_ONLY
#define UDF_VCB_IC_UPDATE_DIR_READ
#define UDF_VCB_IC_CACHE_BAD_VDS
#define UDF_VCB_IC_UPDATE_UCHG_DIR_ACCESS_TIME
#define UDF_VCB_IC_UPDATE_ACCESS_TIME
#define UDF_VCB_FLAGS_VCB_INITIALIZED
struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[]
#define UDF_VCB_IC_UPDATE_DIR_WRITE
#define UDF_VCB_IC_WRITE_IN_RO_DIR
#define UDF_VCB_IC_SHOW_BLANK_CD
#define UDF_VCB_IC_SOFT_RO
#define UDF_VCB_IC_W2K_COMPAT_VLABEL
#define UDF_VCB_IC_FORCE_WRITE_THROUGH
#define UDF_SHOW_BLANK_CD
#define UDF_INSTANT_COMPAT_ALLOC_DESCS
#define UDF_PART_DAMAGED_BEHAVIOR
#define UDF_W2K_COMPAT_ALLOC_DESCS
#define UDF_FORCE_WRITE_THROUGH_NAME
#define UDF_UPDATE_DIR_TIMES_ATTR_W
#define UDF_UPDATE_TIMES_ATTR
#define UDF_FE_CHARGE_NAME
#define UDF_FSP_THREAD_PER_CPU_NAME
#define REG_USEEXTENDEDFE_NAME
#define UDF_NO_SPARE_BEHAVIOR
#define UDF_ALLOW_UPDATE_TIMES_ACCS_UCHG_DIR
#define UDF_FE_CHARGE_SDIR_NAME
#define UDF_ALLOW_WRITE_IN_RO_DIR
#define REG_DEFALLOCMODE_NAME
#define UDF_HANDLE_SOFT_RO
#define UDF_OS_NATIVE_DOS_NAME
#define UDF_NO_EJECT_PERIOD_NAME
#define UDF_BM_FLUSH_PERIOD_NAME
#define UDF_CACHE_SIZE_MULTIPLIER
#define UDF_DIR_PACK_THRESHOLD_NAME
#define UDF_DEFAULT_UID_NAME
#define UDF_READAHEAD_GRAN_NAME
#define UDF_TREE_FLUSH_PERIOD_NAME
#define UDF_UPDATE_ATTR_ARCH
#define UDF_UPDATE_TIMES_MOD
#define UDF_NO_UPDATE_PERIOD_NAME
#define UDF_WAIT_CD_SPINUP
#define UDF_SPARSE_THRESHOLD_NAME
#define UDF_VERIFY_ON_WRITE_NAME
#define UDF_FORCE_MOUNT_ALL
#define UDF_COMPARE_BEFORE_WRITE
#define UDF_DIRTY_VOLUME_BEHAVIOR
#define UDF_W2K_COMPAT_VLABEL
#define UDF_IGNORE_SEQUENTIAL_IO
#define UDF_DEFAULT_GID_NAME
#define UDF_USE_EJECT_BUTTON
#define UDF_CACHE_BAD_VDS
#define UDF_UPDATE_TIMES_ACCS
#define REG_DEFAULT_UNKNOWN
#define UDF_UPDATE_DIR_TIMES_ATTR_R
#define UDF_DEFAULT_FE_CHARGE_SDIR
#define UDF_DEFAULT_FE_CHARGE
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_DRIVER_INTERNAL_ERROR
#define STATUS_VERIFY_REQUIRED
#define STATUS_INSUFFICIENT_RESOURCES
#define UDF_DEFAULT_TREE_FLUSH_TIMEOUT
#define UDFQuadAlign(Value)
#define UDFSetFlag(Flag, Value)
#define UDF_DEFAULT_BM_FLUSH_TIMEOUT
#define UDF_DEFAULT_READAHEAD_GRAN
#define UDF_DEFAULT_SPARSE_THRESHOLD
#define UDF_DEFAULT_FSP_THREAD_PER_CPU
#define UDF_DEFAULT_DIR_PACK_THRESHOLD
#define UDF_PART_DAMAGED_RW
#define UDF_PART_DAMAGED_RO
VOID WCacheFlushAll__(IN PW_CACHE Cache, IN PVOID Context)
VOID WCacheRelease__(IN PW_CACHE Cache)
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
#define ExInitializeWorkItem(Item, Routine, Context)
#define ExIsResourceAcquiredShared
#define ExIsFullZone(Zone)
static __inline PVOID ExFreeToZone(IN PZONE_HEADER Zone, IN PVOID Block)
#define IoIsErrorUserInduced(Status)
#define IRP_MJ_SET_VOLUME_INFORMATION
#define IRP_MJ_QUERY_SECURITY
#define IO_DISK_INCREMENT
#define IRP_MJ_SET_SECURITY
NTSTATUS NTAPI ExInitializeZone(PZONE_HEADER Zone, ULONG BlockSize, PVOID InitialSegment, ULONG InitialSegmentSize)