22#define UDF_BUG_CHECK_ID UDF_FILE_INIT
120 UDFPrint((
"UDF Init: OS should be ReactOS\n"));
148 UDFPrint((
"UDF: Init memory manager\n"));
153 InternalMMInitialized =
TRUE;
158 DLDetectInitialized =
TRUE;
176 UDFPrint((
"UDF: Init delayed close queues\n"));
177#ifdef UDF_DELAYED_CLOSE
215 UDFPrint((
"UDF: Create Driver dev obj\n"));
242 UDFPrint((
"UDF: Create CD dev obj\n"));
250#ifdef UDF_HDD_SUPPORT
251 UDFPrint((
"UDF: Create HDD dev obj\n"));
303 UDFPrint((
"UDFCreateFsDeviceObject: IoRegisterFileSystem() for CD\n"));
306#ifdef UDF_HDD_SUPPORT
308 UDFPrint((
"UDFCreateFsDeviceObject: IoRegisterFileSystem() for HDD\n"));
314 UDFPrint((
"UDF: IoRegisterFsRegistrationChange()\n"));
329 for(CdRomNumber = 0;
true;CdRomNumber++) {
330 sprintf(deviceNameBuffer,
"\\Device\\CdRom%d", CdRomNumber);
331 UDFPrint((
"UDF: DriverEntry : dismount %s\n", deviceNameBuffer));
365 InternalMMInitialized =
FALSE;
371 UDFPrint((
"UDF: failed with status %x\n", RC));
378 if (DLDetectInitialized)
DLDFree();
380 if (InternalMMInitialized) {
387#ifdef UDF_HDD_SUPPORT
470#ifndef UDF_READ_ONLY_BUILD
475#ifndef UDF_READ_ONLY_BUILD
479#ifndef UDF_READ_ONLY_BUILD
487#ifndef UDF_READ_ONLY_BUILD
502#ifndef UDF_READ_ONLY_BUILD
509#ifdef UDF_ENABLE_SECURITY
511#ifndef UDF_READ_ONLY_BUILD
535#ifndef UDF_READ_ONLY_BUILD
552#if(_WIN32_WINNT >= 0x0400)
601 UDFPrint((
"UDFCreateFsDeviceObject: create dev\n"));
651 unicodeCdRomDeviceName,
656 UDFPrint((
"\n*** UDFDismountDevice: Create\n"));
657 RC = ZwCreateFile( &NtFileHandle,
672 UDFPrint((
"\n*** UDFDismountDevice: QueryVolInfo\n"));
679#define UDF_CHECK_FS_NAME(name) \
680 (Buffer->FileSystemNameLength+sizeof(WCHAR) == sizeof(name) && \
681 DbgCompareMemory(&Buffer->FileSystemName[0],name , sizeof(name)) == sizeof(name))
692 UDFPrint((
"\n*** UDFDismountDevice: LockVolume\n"));
706 UDFPrint((
"\n*** UDFDismountDevice: DismountVolume\n"));
720 UDFPrint((
"\n*** UDFDismountDevice: NotifyMediaChange\n"));
735 UDFPrint((
"\n*** UDFDismountDevice: UnlockVolume\n"));
747 UDFPrint((
"\n*** UDFDismountDevice: Close\n"));
750 NtFileHandle = (
HANDLE)-1;
752 UDFPrint((
"\n*** UDFDismountDevice: Create 2\n"));
753 RC = ZwCreateFile( &NtFileHandle,
772 UDFPrint((
"\n*** UDFDismountDevice: RC=%x\n",RC));
828 UDFPrint((
"\n*** UDFFSNotification \n\n"));
840#ifdef UDF_HDD_SUPPORT
848 UDFPrint((
"\n*** recursive UDFFSNotification call,\n can't become top-level UDF FSD \n\n"));
#define FILE_NON_DIRECTORY_FILE
#define IOCTL_CDRW_NOTIFY_MEDIA_CHANGE
NTSTATUS NTAPI UDFCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI UDFDelayedClose(PVOID unused)
NTSTATUS NTAPI UDFClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSTATUS NTAPI UDFDeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI UDFDirControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID DLDInit(ULONG MaxThrdCount)
Initialize deadlock detector.
#define NT_SUCCESS(StatCode)
#define FILE_ATTRIBUTE_NORMAL
DRIVER_INITIALIZE DriverEntry
NTSTATUS NTAPI UDFCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID UDFDestroyZones(VOID)
NTSTATUS UDFInitializeZones(VOID)
NTSTATUS NTAPI UDFQuerySetEA(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define UDFReleaseResource(Resource)
#define UDFDeleteResource(Resource)
#define UDFAcquireResourceExclusive(Resource, CanWait)
#define UDFInitializeResourceLite(Resource)
#define InitializeListHead(ListHead)
#define KeDelayExecutionThread(mode, foo, t)
BOOLEAN NTAPI UDFAcqReadAhead(IN PVOID Context, IN BOOLEAN Wait)
VOID NTAPI UDFFastIoRelCreateSec(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI UDFFastIoCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI UDFRelReadAhead(IN PVOID Context)
BOOLEAN NTAPI UDFAcqLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
BOOLEAN NTAPI UDFFastIoQueryStdInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI UDFRelLazyWrite(IN PVOID Context)
VOID NTAPI UDFFastIoAcqCreateSec(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI UDFFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI UDFFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN BOOLEAN CheckForReadOperation, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI UDFFileInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PVOID CrNtGetProcAddress(PVOID ModuleBase, PCHAR pFunctionName)
PVOID CrNtGetModuleBase(IN PCHAR pModuleName)
NTSTATUS NTAPI UDFFlush(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define FILE_SYNCHRONOUS_IO_NONALERT
@ FileFsAttributeInformation
struct _FILE_FS_ATTRIBUTE_INFORMATION * PFILE_FS_ATTRIBUTE_INFORMATION
NTSTATUS NTAPI UDFFSControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define EXCEPTION_EXECUTE_HANDLER
BOOLEAN NTAPI UDFFastUnlockSingle(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, PEPROCESS ProcessId, ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI UDFLockControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
BOOLEAN NTAPI UDFFastLock(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, PEPROCESS ProcessId, ULONG Key, BOOLEAN FailImmediately, BOOLEAN ExclusiveLock, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI UDFFastUnlockAllByKey(IN PFILE_OBJECT FileObject, PEPROCESS ProcessId, ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI UDFFastUnlockAll(IN PFILE_OBJECT FileObject, PEPROCESS ProcessId, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
#define sprintf(buf, format,...)
#define InitializeObjectAttributes(p, n, a, r, s)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define FSCTL_LOCK_VOLUME
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define FSCTL_UNLOCK_VOLUME
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define FSCTL_DISMOUNT_VOLUME
NTSYSAPI NTSTATUS NTAPI ZwDeviceIoControlFile(IN HANDLE DeviceHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, IN PVOID UserApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG IoControlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, OUT PVOID OutputBuffer, IN ULONG OutputBufferSize)
NTSYSAPI NTSTATUS NTAPI ZwFsControlFile(IN HANDLE DeviceHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG IoControlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, OUT PVOID OutputBuffer, IN ULONG OutputBufferSize)
NTSTATUS(* ptrFsRtlNotifyVolumeEvent)(IN PFILE_OBJECT FileObject, IN ULONG EventCode)
NTSYSAPI NTSTATUS NTAPI ZwQueryVolumeInformationFile(IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FsInformation, IN ULONG Length, IN FS_INFORMATION_CLASS FsInformationClass)
BOOLEAN NTAPI FsRtlCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject, IN ULONG EventCode)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
VOID NTAPI IoUnregisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoRegisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoRegisterFsRegistrationChange(IN PDRIVER_OBJECT DriverObject, IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine)
NTSTATUS NTAPI UDFQueryVolInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp)
OSSTATUS NTAPI UDFRead(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI UDFWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI UDFDriverUnload(IN PDRIVER_OBJECT DriverObject)
NTSTATUS UDFSetSecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS UDFGetSecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI UDFShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI UDFSetVolInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define FILE_DEVICE_DISK_FILE_SYSTEM
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define IRP_MJ_DIRECTORY_CONTROL
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_LOCK_CONTROL
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
#define UDF_NODE_TYPE_GLOBAL_DATA
struct _UDFFS_DEV_EXTENSION UDFFS_DEV_EXTENSION
#define UDF_NODE_TYPE_UDFFS_DRVOBJ
struct _UDFFS_DEV_EXTENSION * PUDFFS_DEV_EXTENSION
#define UDF_NODE_TYPE_UDFFS_DEVOBJ
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
PFAST_IO_WRITE FastIoWrite
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
ULONG SizeOfFastIoDispatch
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
UNICODE_STRING SavedRegPath
UNICODE_STRING UnicodeStrSDir
UNICODE_STRING UnicodeStrRoot
UDFIdentifier NodeIdentifier
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define UDF_DATA_FLAGS_RESOURCE_INITIALIZED
#define UDF_DATA_FLAGS_ZONES_INITIALIZED
#define UDF_FS_TITLE_DVDRAM
#define REG_DEFAULT_DVDRW
#define REG_DEFAULT_FLOPPY
#define REG_DEFAULT_CDROM
#define UDF_FS_TITLE_CDRW
#define UDF_FS_TITLE_DVDpRW
#define REG_DEFAULT_UNKNOWN
#define UDF_FS_TITLE_DVDpR
#define UDF_FS_TITLE_DVDRW
#define UDF_FS_TITLE_DVDR
#define STATUS_INSUFFICIENT_RESOURCES
#define UDFSetFlag(Flag, Value)
#define UDFClearFlag(Flag, Value)
NTSTATUS UDFDismountDevice(PUNICODE_STRING unicodeCdRomDeviceName)
#define UDF_CHECK_FS_NAME(name)
NTSTATUS UDFCreateFsDeviceObject(PCWSTR FsDeviceName, PDRIVER_OBJECT DriverObject, DEVICE_TYPE DeviceType, PDEVICE_OBJECT *DeviceObject)
HANDLE FsNotification_ThreadId
VOID UDFRemountAll(IN PVOID Context)
WORK_QUEUE_ITEM RemountWorkQueueItem
VOID NTAPI UDFFsNotification(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN FsActive)
struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[]
VOID NTAPI UDFInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define ExInitializeWorkItem(Item, Routine, Context)
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SET_VOLUME_INFORMATION
#define IRP_MJ_QUERY_SECURITY
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
#define IRP_MJ_FLUSH_BUFFERS
#define IRP_MJ_SET_SECURITY