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"));
390 Irp->IoStatus.Information = 0;
411 UDFPrint((
" use UDFPostRequest()\n"));
420 UDFPrint((
" STATUS_PENDING/STATUS_CANT_WAIT, return\n"));
451 UDFPrint((
" Device == NULL, return\n"));
454 Irp->IoStatus.Information = 0;
464 UDFPrint((
" use UDFPerformVerify()\n"));
478 UDFPrint((
" DISABLE_POPUPS, complete Irp and return\n"));
480 Irp->IoStatus.Information = 0;
509 UDFPrint((
" Device == NULL, return(2)\n"));
511 Irp->IoStatus.Information = 0;
531 UDFPrint((
" use IoSetDeviceToVerify()\n"));
546 Irp->IoStatus.Information = 0;
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"));
964 ULONG 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 1282 #endif //UDF_READ_ONLY_BUILD 1296 #ifndef UDF_READ_ONLY_BUILD 1298 #endif //UDF_READ_ONLY_BUILD 1306 #ifndef UDF_READ_ONLY_BUILD 1311 #endif //UDF_READ_ONLY_BUILD 1312 #ifdef UDF_HANDLE_EAS 1321 #endif // UDF_HANDLE_EAS 1322 #ifdef UDF_ENABLE_SECURITY 1327 #ifndef UDF_READ_ONLY_BUILD 1332 #endif //UDF_READ_ONLY_BUILD 1333 #endif // UDF_ENABLE_SECURITY 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 = 0x7FFFFFFFFFFFFFFF
ULL;
1565 Vcb->VolumeLockPID = -1;
1567 Vcb->VCBOpenCount = 1;
1592 if(!
Vcb->TargetDevName.Buffer)
1604 goto Kill_DevName_buffer;
1612 goto Kill_DevName_buffer;
1615 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 1748 #endif //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 1884 #endif //UDF_READ_ONLY_BUILD 1899 #ifndef UDF_READ_ONLY_BUILD 1904 #endif //UDF_READ_ONLY_BUILD 1908 #ifndef UDF_READ_ONLY_BUILD 1910 #else //UDF_READ_ONLY_BUILD 1912 #endif //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;
2144 delay.QuadPart = -500000;
2145 while(
Vcb->PostedRequestCount) {
2146 UDFPrint((
"UDFReleaseVCB: PostedRequestCount = %d\n",
Vcb->PostedRequestCount));
2149 delay.QuadPart -= 500000;
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;
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;
#define UDF_VCB_IC_CACHE_BAD_VDS
#define UDF_VCB_IC_SHOW_BLANK_CD
#define KeGetCurrentIrql()
VOID UDFVRelease(IN PVCB Vcb)
#define UDF_DEFAULT_FE_CHARGE_SDIR
#define UDFAcquireResourceExclusive(Resource, CanWait)
#define STATUS_EAS_NOT_SUPPORTED
#define UDF_FORCE_MOUNT_ALL
#define UDF_VCB_FLAGS_MEDIA_READ_ONLY
#define UDF_VCB_IC_WRITE_IN_RO_DIR
VOID UDFReleaseIrpContext(PtrUDFIrpContext PtrIrpContext)
PtrUDFIrpContext UDFAllocateIrpContext(PIRP Irp, PDEVICE_OBJECT PtrTargetDeviceObject)
#define CdMediaClass_BDROM
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
#define CdMediaClass_DVDRAM
#define UDF_UPDATE_TIMES_ACCS
#define UDF_UPDATE_DIR_TIMES_ATTR_W
VOID __fastcall UDFReleaseObjectName(PtrUDFObjectName PtrObjectName)
#define UDF_DEFAULT_BM_FLUSH_TIMEOUT
#define UDF_NODE_TYPE_OBJECT_NAME
BOOLEAN NTAPI FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
#define UDFInitializeResourceLite(Resource)
#define UDF_CCB_NOT_FROM_ZONE
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
struct _UDFContextControlBlock * PtrUDFCCB
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)
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
#define STATUS_INSUFFICIENT_RESOURCES
#define CdMediaClass_DVDpR
#define FsRtlEnterFileSystem
#define UDF_DIRTY_VOLUME_BEHAVIOR
VOID WCacheRelease__(IN PW_CACHE Cache)
#define CdMediaClass_DVDR
_In_ PIRP _In_ PDEVICE_OBJECT Device
#define UDF_DEFAULT_TREE_FLUSH_TIMEOUT
#define IRP_MJ_QUERY_SECURITY
struct _UDFObjectName * PtrUDFObjectName
#define UDF_IRP_CONTEXT_NOT_TOP_LEVEL
#define UDF_ALLOW_UPDATE_TIMES_ACCS_UCHG_DIR
#define PsGetCurrentThread()
#define UDF_DEFAULT_READAHEAD_GRAN
#define FsRtlExitFileSystem
#define MediaType_UnknownSize_CDRW
VOID UDFLogEvent(NTSTATUS UDFEventLogId, NTSTATUS RC)
#define UDF_ALLOW_WRITE_IN_RO_DIR
#define UDFSetFlag(Flag, Value)
#define UDF_NODE_TYPE_VCB
NTSTATUS UDFCommonSetSecurity(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define IRP_MJ_SET_SECURITY
VOID __fastcall UDFReleaseCCB(PtrUDFCCB Ccb)
#define UDF_NODE_TYPE_FCB
#define UDFReleaseResource(Resource)
#define UDF_IRP_CONTEXT_NOT_FROM_ZONE
#define IoIsErrorUserInduced(Status)
#define IOCTL_CDRW_GET_DEVICE_NAME
#define CdMediaClass_DVDRW
ULONG WCacheBlocksPerFrameSh
#define UDF_VCB_IC_IGNORE_SEQUENTIAL_IO
#define IRP_MJ_SET_VOLUME_INFORMATION
#define UDF_UPDATE_TIMES_ATTR
VOID UDFReadRegKeys(PVCB Vcb, BOOLEAN Update, BOOLEAN UseCfg)
#define STATUS_INVALID_DEVICE_REQUEST
#define UDF_INSTANT_COMPAT_ALLOC_DESCS
#define UDF_FCB_INITIALIZED_CCB_LIST_RESOURCE
#define UDF_VCB_IC_UPDATE_UCHG_DIR_ACCESS_TIME
#define ExIsFullZone(Zone)
enum _UDFFSD_MEDIA_TYPE UDFFSD_MEDIA_TYPE
VOID UDFReleaseVCB(PVCB Vcb)
ULONG WCacheFramesToKeepFree
#define UDF_DIR_PACK_THRESHOLD_NAME
#define UDF_USE_EJECT_BUTTON
#define UDF_VCB_IC_UPDATE_DIR_READ
PDEVICE_OBJECT NTAPI IoGetDeviceToVerify(IN PETHREAD Thread)
NTSTATUS NTAPI UDFCommonDirControl(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define UDF_IRP_CONTEXT_FLAG_DISABLE_POPUPS
#define UDF_CACHE_SIZE_MULTIPLIER
PDEVICE_OBJECT TargetDeviceObject
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
PtrUDFCCB UDFAllocateCCB(VOID)
#define InsertTailList(ListHead, Entry)
#define STATUS_VERIFY_REQUIRED
NTSTATUS UDFCommonSetVolInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define REG_USEEXTENDEDFE_NAME
#define UDF_IRP_CONTEXT_CAN_BLOCK
#define UDF_DEFAULT_SPARSE_THRESHOLD
#define UDF_FE_CHARGE_SDIR_NAME
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define UDF_VCB_FLAGS_REMOVABLE_MEDIA
#define UDF_PART_DAMAGED_RO
#define RtlMoveMemory(Destination, Source, Length)
#define UDF_W2K_COMPAT_ALLOC_DESCS
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK SpinLock
ULONG UDFRegCheckParameterValue(IN PUNICODE_STRING RegistryPath, IN PCWSTR Name, IN PUNICODE_STRING PtrVolumePath, IN PCWSTR DefaultPath, IN ULONG DefValue)
#define UDF_DEFAULT_FE_CHARGE
ULONG UDFGetRegParameter(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
#define UDF_VCB_FLAGS_RAW_DISK
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
VOID WCacheFlushAll__(IN PW_CACHE Cache, IN PVOID Context)
#define sprintf(buf, format,...)
#define UDF_W2K_COMPAT_VLABEL
#define UDF_VCB_IC_DIRTY_RO
#define UDF_VCB_FLAGS_VOLUME_READ_ONLY
#define UDF_BM_FLUSH_PERIOD_NAME
#define UDF_NO_SPARE_BEHAVIOR
#define EXCEPTION_CONTINUE_SEARCH
#define UDF_VCB_IC_W2K_COMPAT_VLABEL
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
__inline VOID UDFReleaseFCB(PtrUDFFCB Fcb)
struct _UDFFileControlBlock * PtrUDFFCB
NTSTATUS UDFCommonRead(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define IO_DISK_INCREMENT
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define UDF_PART_DAMAGED_BEHAVIOR
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
#define UDF_VCB_FLAGS_VCB_INITIALIZED
#define FILESYSTEM_STATISTICS_TYPE_NTFS
#define UDF_DEFAULT_DIR_PACK_THRESHOLD
UDFFSD_MEDIA_TYPE UDFGetMediaClass(PVCB Vcb)
#define FILE_REMOVABLE_MEDIA
#define CdMediaClass_DVDROM
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
ULONG(* ptrUDFGetParameter)(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
#define _SEH2_GetExceptionInformation()
NTSTATUS UDFWCacheErrorHandler(IN PVOID Context, IN PWCACHE_ERROR_CONTEXT ErrorInfo)
#define EXCEPTION_EXECUTE_HANDLER
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
#define UDF_PART_DAMAGED_RW
struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[]
#define ICB_FLAG_AD_SHORT
NTSTATUS UDFInitializeIrpContextLite(OUT PtrUDFIrpContextLite *IrpContextLite, IN PtrUDFIrpContext IrpContext, IN PtrUDFFCB Fcb)
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
#define IoCompleteRequest
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
BOOLEAN UDFAcquireResourceSharedWithCheck(IN PERESOURCE Resource)
#define MediaType_UnknownSize_CDR
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_DIRECTORY_CONTROL
NTSTATUS SavedExceptionCode
_Inout_ PFILE_OBJECT FileObject
#define UDF_VCB_IC_UPDATE_ACCESS_TIME
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define UDF_IGNORE_SEQUENTIAL_IO
NTSTATUS UDFInitializeVCB(IN PDEVICE_OBJECT PtrVolumeDeviceObject, IN PDEVICE_OBJECT PtrTargetDeviceObject, IN PVPB PtrVPB)
NTSTATUS UDFExceptionHandler(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define FILE_DEVICE_DISK_FILE_SYSTEM
#define UDF_VCB_IC_FORCE_HW_RO
#define ExIsResourceAcquiredShared
NTSTATUS NTAPI ExInitializeZone(PZONE_HEADER Zone, ULONG BlockSize, PVOID InitialSegment, ULONG InitialSegmentSize)
NTSTATUS UDFInitializeZones(VOID)
#define UDF_VCB_IC_OS_NATIVE_DOS_NAME
#define CdMediaClass_HD_DVDROM
#define CdMediaClass_CDRW
#define UDF_VCB_IC_UPDATE_MODIFY_TIME
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
VOID UDFCleanupVCB(IN PVCB Vcb)
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
#define ExInitializeWorkItem(Item, Routine, Context)
BOOLEAN NTAPI MmIsThisAnNtAsSystem(VOID)
#define CdMediaClass_HD_DVDRAM
#define UDF_VCB_IC_SOFT_RO
#define NT_SUCCESS(StatCode)
#define UDF_DEFAULT_FSP_THREAD_PER_CPU
#define UDF_SHOW_BLANK_CD
#define UDF_VCB_IC_UPDATE_ARCH_BIT
#define UDF_NODE_TYPE_CCB
#define UDFDeleteResource(Resource)
#define KeAcquireSpinLock(sl, irql)
#define UDF_NO_EJECT_PERIOD_NAME
MM_SYSTEMSIZE NTAPI MmQuerySystemSize(VOID)
#define UDF_FE_CHARGE_NAME
#define UDF_VCB_IC_W2K_COMPAT_ALLOC_DESCS
ULONG UDFGetCfgParameter(IN PVCB Vcb, IN PCWSTR Name, IN ULONG DefValue)
#define UDF_VCB_IC_INSTANT_COMPAT_ALLOC_DESCS
PIRP NTAPI IoGetTopLevelIrp(VOID)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
NTSTATUS UDFCommonFileInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
NTSTATUS UDFCommonCleanup(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define UDF_COMPARE_BEFORE_WRITE
#define FSRTL_FSP_TOP_LEVEL_IRP
NTSTATUS UDFCommonClose(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define UDF_DEFAULT_UID_NAME
BOOLEAN __fastcall UDFIsIrpTopLevel(PIRP Irp)
#define REG_DEFALLOCMODE_NAME
#define UDF_DATA_FLAGS_ZONES_INITIALIZED
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define STATUS_DRIVER_INTERNAL_ERROR
UDFIdentifier NodeIdentifier
VOID NTAPI UDFCommonDispatch(IN PVOID Context)
#define REG_DEFAULT_UNKNOWN
#define UDF_VERIFY_ON_WRITE_NAME
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
static __inline PVOID ExFreeToZone(IN PZONE_HEADER Zone, IN PVOID Block)
struct _UDFIrpContext * PtrUDFIrpContext
void delay(unsigned msec)
#define UDF_UPDATE_DIR_TIMES_ATTR_R
NTSTATUS UDFPerformVerify(IN PtrUDFIrpContext IrpContext, IN PIRP Irp, IN PDEVICE_OBJECT DeviceToVerify)
long UDFExceptionFilter(PtrUDFIrpContext PtrIrpContext, PEXCEPTION_POINTERS PtrExceptionPointers)
struct _FCB::@708::@711 Fcb
#define UDF_VCB_IC_WAIT_CD_SPINUP
#define UDF_VCB_IC_FORCE_WRITE_THROUGH
#define UDF_VCB_IC_UPDATE_ATTR_TIME
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
#define UDFQuadAlign(Value)
UNICODE_STRING SavedRegPath
#define UDFAcquireResourceShared(Resource, CanWait)
#define UDF_DEFAULT_GID_NAME
struct _UDFIrpContextLite UDFIrpContextLite
#define UDF_HANDLE_SOFT_RO
UDFIdentifier NodeIdentifier
PtrUDFObjectName UDFAllocateObjectName(VOID)
IN PDEVICE_OBJECT DeviceObject
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define UDF_ERROR_INTERNAL_ERROR
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS UDFPostRequest(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp)
#define UDF_FSP_THREAD_PER_CPU_NAME
#define CdMediaClass_HD_DVDR
#define InterlockedIncrement
#define STATUS_BUFFER_OVERFLOW
NTSTATUS UDFCommonCreate(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
PDEVICE_OBJECT RealDevice
VOID __fastcall UDFCleanUpCCB(PtrUDFCCB Ccb)
#define InitializeListHead(ListHead)
_In_ PIO_STACK_LOCATION IrpSp
#define CdMediaClass_CDROM
#define UDF_FORCE_WRITE_THROUGH_NAME
VOID UDFInitializeIrpContextFromLite(OUT PtrUDFIrpContext *IrpContext, IN PtrUDFIrpContextLite IrpContextLite)
UDFIdentifier NodeIdentifier
#define KeReleaseSpinLock(sl, irql)
NTSTATUS UDFCommonWrite(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
VOID __fastcall UDFCleanUpFCB(PtrUDFFCB Fcb)
VOID UDFUpdateCompatOption(PVCB Vcb, BOOLEAN Update, BOOLEAN UseCfg, PCWSTR Name, ULONG Flag, BOOLEAN Default)
PtrUDFFCB UDFAllocateFCB(VOID)
#define CdMediaClass_BDRE
#define CdMediaClass_DVDpRW
#define UDF_READAHEAD_GRAN_NAME
VOID NTAPI FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define MediaType_UnknownSize_Unknown
FILE_SYSTEM_STATISTICS * PFILE_SYSTEM_STATISTICS
#define UDF_NTAS_MULTIPLE
_UDFFileControlBlock * Fcb
#define IRP_MJ_SET_INFORMATION
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define UDF_SPARSE_THRESHOLD_NAME
_In_ PUNICODE_STRING RegistryPath
BOOLEAN UDFAcquireResourceExclusiveWithCheck(IN PERESOURCE Resource)
#define UDF_OS_NATIVE_DOS_NAME
#define IRP_MJ_QUERY_INFORMATION
VOID NTAPI IoRaiseHardError(IN PIRP Irp, IN PVPB Vpb, IN PDEVICE_OBJECT RealDeviceObject)
PEXCEPTION_RECORD ExceptionRecord
VOID NTAPI FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
#define _SEH2_EXCEPT(...)
#define UDF_UPDATE_ATTR_ARCH
#define UDF_NODE_TYPE_IRP_CONTEXT
#define STATUS_IN_PAGE_ERROR
struct _FILE_SYSTEM_STATISTICS FILE_SYSTEM_STATISTICS
#define UDF_UPDATE_TIMES_MOD
GLboolean GLboolean GLboolean GLboolean a
#define UDF_TREE_FLUSH_PERIOD_NAME
NTSTATUS UDFCommonQueryVolInfo(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define FILE_FLOPPY_DISKETTE
VOID UDFDestroyZones(VOID)
#define UDF_IRP_CONTEXT_EXCEPTION
NTSTATUS NTAPI UDFQuerySetEA(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define UDF_WAIT_CD_SPINUP
static SERVICE_STATUS status
#define UDF_NODE_TYPE_IRP_CONTEXT_LITE
NTSTATUS UDFCommonGetSecurity(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define UDF_NO_UPDATE_PERIOD_NAME
struct _UDFNTRequiredFCB * PtrUDFNTRequiredFCB
#define FSP_PER_DEVICE_THRESHOLD
base of all file and directory entries
#define UDF_OBJ_NAME_NOT_FROM_ZONE
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
VOID NTAPI IoSetDeviceToVerify(IN PETHREAD Thread, IN PDEVICE_OBJECT DeviceObject)
struct _UDFIrpContextLite * PtrUDFIrpContextLite
#define RtlCompareMemory(s1, s2, l)
#define CdMediaClass_HD_DVDRW
#define UDF_CACHE_BAD_VDS
#define UDF_VCB_IC_UPDATE_DIR_WRITE
ULONG UDFIsResourceAcquired(IN PERESOURCE Resource)