diff --git a/drivers/filesystems/udfs/CMakeLists.txt b/drivers/filesystems/udfs/CMakeLists.txt index 1ae3d50d9b070..4c80d75da5aa4 100644 --- a/drivers/filesystems/udfs/CMakeLists.txt +++ b/drivers/filesystems/udfs/CMakeLists.txt @@ -2,55 +2,53 @@ include_directories(Include) list(APPEND SOURCE - udf_info/alloc.cpp - udf_info/dirtree.cpp - udf_info/extent.cpp - udf_info/mount.cpp - udf_info/phys_eject.cpp - udf_info/physical.cpp - udf_info/remap.cpp - udf_info/udf_info.cpp - cleanup.cpp - close.cpp - create.cpp - devcntrl.cpp - dircntrl.cpp - env_spec.cpp - fastio.cpp - fileinfo.cpp - flush.cpp - fscntrl.cpp - lockctrl.cpp - mem.cpp - misc.cpp - namesup.cpp - prefxsup.cpp - pnp.cpp - read.cpp - secursup.cpp - shutdown.cpp - sys_spec.cpp - udf_dbg.cpp - udfinit.cpp - unload.cpp - verfysup.cpp - volinfo.cpp - write.cpp - strucsup.cpp - filobsup.cpp - udfdata.cpp + udf_info/alloc.c + udf_info/dirtree.c + udf_info/extent.c + udf_info/mount.c + udf_info/phys_eject.c + udf_info/physical.c + udf_info/remap.c + udf_info/udf_info.c + cleanup.c + close.c + create.c + devcntrl.c + dircntrl.c + env_spec.c + fastio.c + fileinfo.c + flush.c + fscntrl.c + lockctrl.c + mem.c + misc.c + namesup.c + prefxsup.c + pnp.c + read.c + secursup.c + shutdown.c + sys_spec.c + udf_dbg.c + udfinit.c + unload.c + verfysup.c + volinfo.c + write.c + strucsup.c + filobsup.c + udfdata.c udffs.h) add_library(udfs MODULE ${SOURCE} udffs.rc) if(CMAKE_C_COMPILER_ID STREQUAL "GNU") target_compile_options(udfs PRIVATE -Wno-unused-but-set-variable) - target_compile_options(udfs PRIVATE -Wno-invalid-offsetof) - target_compile_options(udfs PRIVATE -Wno-error -fpermissive) endif() if(CMAKE_C_COMPILER_ID STREQUAL "Clang") - target_compile_options(udfs PRIVATE -Wno-extern-c-compat -Wno-unused-value) + target_compile_options(udfs PRIVATE -Wno-unused-value) target_compile_options(udfs PRIVATE -Wno-tautological-constant-out-of-range-compare) target_compile_options(udfs PRIVATE -Wno-tautological-unsigned-zero-compare -Wno-self-assign) target_compile_options(udfs PRIVATE -Wno-sometimes-uninitialized -Wno-parentheses-equality) diff --git a/drivers/filesystems/udfs/Include/Sys_spec_lib.cpp b/drivers/filesystems/udfs/Include/Sys_spec_lib.c similarity index 100% rename from drivers/filesystems/udfs/Include/Sys_spec_lib.cpp rename to drivers/filesystems/udfs/Include/Sys_spec_lib.c diff --git a/drivers/filesystems/udfs/Include/Sys_spec_lib.h b/drivers/filesystems/udfs/Include/Sys_spec_lib.h index 7187ab6e0371b..696022e2d2d4c 100644 --- a/drivers/filesystems/udfs/Include/Sys_spec_lib.h +++ b/drivers/filesystems/udfs/Include/Sys_spec_lib.h @@ -104,7 +104,7 @@ __inline LARGE_INTEGER UDFMakeLargeInteger(LONGLONG value) { #define UDFGetNTFileId(Vcb, fi) \ UDFMakeLargeInteger((((fi)->Dloc->FELoc.Mapping[0].extLocation - UDFPartStart(Vcb, -2)) + \ - ((LONGLONG)Vcb<<32))) + ((LONGLONG)(ULONG_PTR)Vcb<<32))) #define UnicodeIsPrint(a) RtlIsValidOemCharacter(&(a)) diff --git a/drivers/filesystems/udfs/Include/mem_tools.cpp b/drivers/filesystems/udfs/Include/mem_tools.c similarity index 100% rename from drivers/filesystems/udfs/Include/mem_tools.cpp rename to drivers/filesystems/udfs/Include/mem_tools.c diff --git a/drivers/filesystems/udfs/Include/mem_tools.h b/drivers/filesystems/udfs/Include/mem_tools.h index fa06ad9708fb5..259d95e1a4dcc 100644 --- a/drivers/filesystems/udfs/Include/mem_tools.h +++ b/drivers/filesystems/udfs/Include/mem_tools.h @@ -46,6 +46,7 @@ extern ULONG MemTotalAllocated; #define MY_HEAP_MAX_FRAMES 512 #define MY_HEAP_MAX_BLOCKS 4*1024 // blocks per frame +#ifdef MY_USE_INTERNAL_MEMMANAGER // Mem BOOLEAN MyAllocInit(VOID); VOID MyAllocRelease(VOID); @@ -66,6 +67,8 @@ ULONG __fastcall MyReallocPool( PCHAR addr, ULONG OldLength, PCHAR* NewBuff, ULO #endif VOID __fastcall MyFreePool(PCHAR addr); +#endif // MY_USE_INTERNAL_MEMMANAGER + #ifdef MY_HEAP_CHECK_BOUNDS #define MY_HEAP_ALIGN 63 #else @@ -130,7 +133,7 @@ MyFindMemBaseByAddr( #define MyAlignSize__(size) (size) #endif -BOOLEAN inline MyAllocInit(VOID) {return TRUE;} +static inline BOOLEAN MyAllocInit(VOID) {return TRUE;} #define MyAllocRelease() #ifndef MY_MEM_BOUNDS_CHECK @@ -176,7 +179,7 @@ PVOID inline MyAllocatePool__(ULONG type, ULONG len) { } */ -PVOID inline MyAllocatePoolTag__(ULONG type, ULONG len, /*PCHAR*/ULONG tag) { +static inline PVOID MyAllocatePoolTag__(ULONG type, ULONG len, /*PCHAR*/ULONG tag) { PCHAR newaddr; ULONG i; // newaddr = (PCHAR)MyAllocatePoolTag_(type, len+MY_HEAP_ALIGN+1, tag); @@ -193,7 +196,7 @@ PVOID inline MyAllocatePoolTag__(ULONG type, ULONG len, /*PCHAR*/ULONG tag) { return newaddr; } -VOID inline MyFreePool__(PVOID addr) { +static inline VOID MyFreePool__(PVOID addr) { PCHAR newaddr; // ULONG i; newaddr = (PCHAR)addr; @@ -220,7 +223,7 @@ VOID inline MyFreePool__(PVOID addr) { #pragma GCC diagnostic ignored "-Wstringop-overflow" #endif -ULONG inline MyReallocPool__(PCHAR addr, ULONG len, PCHAR *pnewaddr, ULONG newlen) { +static inline ULONG MyReallocPool__(PCHAR addr, ULONG len, PCHAR *pnewaddr, ULONG newlen) { ULONG _len, _newlen; _newlen = MyAlignSize__(newlen); _len = MyAlignSize__(len); diff --git a/drivers/filesystems/udfs/Include/phys_lib.cpp b/drivers/filesystems/udfs/Include/phys_lib.c similarity index 99% rename from drivers/filesystems/udfs/Include/phys_lib.cpp rename to drivers/filesystems/udfs/Include/phys_lib.c index bba91e86d1c06..b8da310d2e039 100644 --- a/drivers/filesystems/udfs/Include/phys_lib.cpp +++ b/drivers/filesystems/udfs/Include/phys_lib.c @@ -796,14 +796,14 @@ UDFGetBlockSize( if (UDFGetDevType(DeviceObject) == FILE_DEVICE_DISK) { UDFPrint(("UDFGetBlockSize: HDD\n")); RC = UDFPhSendIOCTL(IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,DeviceObject, - 0,NULL, + NULL,0, &DiskGeometryEx,sizeof(DISK_GEOMETRY_EX), TRUE,NULL ); if (!NT_SUCCESS(RC)) try_return(RC); RC = UDFPhSendIOCTL(IOCTL_DISK_GET_PARTITION_INFO,DeviceObject, - 0,NULL, + NULL,0, &PartitionInfo,sizeof(PARTITION_INFORMATION), TRUE,NULL ); if (!NT_SUCCESS(RC)) { @@ -1002,7 +1002,6 @@ UDFPrepareForReadOperation( Vcb->VcbState &= ~UDF_VCB_LAST_WRITE; return STATUS_SUCCESS; } - uint32 i = Vcb->LastReadTrack; #ifdef _UDF_STRUCTURES_H_ if (Vcb->BSBM_Bitmap) { @@ -1036,7 +1035,7 @@ UDFReadSectors( OUT PULONG ReadBytes ) { - return UDFTRead(IrpContext, Vcb, Buffer, BCount*Vcb->SectorSize, Lba, ReadBytes); + return UDFTRead(IrpContext, Vcb, Buffer, BCount*Vcb->SectorSize, Lba, ReadBytes, 0); } // end UDFReadSectors() /* @@ -1167,7 +1166,7 @@ UDFWriteSectors( Vcb->LastLBA = Lba+BCount-1; } - status = UDFTWrite(IrpContext, Vcb, Buffer, BCount<SectorShift, Lba, WrittenBytes); + status = UDFTWrite(IrpContext, Vcb, Buffer, BCount<SectorShift, Lba, WrittenBytes, 0); ASSERT(NT_SUCCESS(status)); return status; diff --git a/drivers/filesystems/udfs/Include/phys_lib.h b/drivers/filesystems/udfs/Include/phys_lib.h index 747b95450acf7..19203d202daa5 100644 --- a/drivers/filesystems/udfs/Include/phys_lib.h +++ b/drivers/filesystems/udfs/Include/phys_lib.h @@ -15,7 +15,7 @@ UDFTRead( SIZE_T Length, ULONG LBA, PULONG ReadBytes, - ULONG Flags = 0 + ULONG Flags ); NTSTATUS @@ -26,7 +26,7 @@ UDFTWrite( IN SIZE_T Length, IN ULONG LBA, OUT PSIZE_T WrittenBytes, - IN ULONG Flags = 0 + IN ULONG Flags ); #define PH_TMP_BUFFER 1 diff --git a/drivers/filesystems/udfs/Include/regtools.cpp b/drivers/filesystems/udfs/Include/regtools.c similarity index 100% rename from drivers/filesystems/udfs/Include/regtools.cpp rename to drivers/filesystems/udfs/Include/regtools.c diff --git a/drivers/filesystems/udfs/Include/string_lib.cpp b/drivers/filesystems/udfs/Include/string_lib.c similarity index 98% rename from drivers/filesystems/udfs/Include/string_lib.cpp rename to drivers/filesystems/udfs/Include/string_lib.c index 1750feb27ff16..37bd1d894879a 100644 --- a/drivers/filesystems/udfs/Include/string_lib.cpp +++ b/drivers/filesystems/udfs/Include/string_lib.c @@ -4,7 +4,6 @@ // This file was released under the GPLv2 on June 2015. //////////////////////////////////////////////////////////////////// -extern "C" ULONG MyRtlCompareMemory( PVOID s1, @@ -26,7 +25,6 @@ MyRtlCompareMemory( #ifndef NT_NATIVE_MODE -extern "C" ULONG RtlCompareUnicodeString( PUNICODE_STRING s1, @@ -41,7 +39,6 @@ RtlCompareUnicodeString( return i; } -extern "C" NTSTATUS RtlUpcaseUnicodeString( PUNICODE_STRING dst, @@ -57,7 +54,6 @@ RtlUpcaseUnicodeString( return STATUS_SUCCESS; } -extern "C" NTSTATUS RtlAppendUnicodeToString( IN PUNICODE_STRING Str1, diff --git a/drivers/filesystems/udfs/cleanup.cpp b/drivers/filesystems/udfs/cleanup.c similarity index 100% rename from drivers/filesystems/udfs/cleanup.cpp rename to drivers/filesystems/udfs/cleanup.c diff --git a/drivers/filesystems/udfs/close.cpp b/drivers/filesystems/udfs/close.c similarity index 100% rename from drivers/filesystems/udfs/close.cpp rename to drivers/filesystems/udfs/close.c diff --git a/drivers/filesystems/udfs/create.cpp b/drivers/filesystems/udfs/create.c similarity index 100% rename from drivers/filesystems/udfs/create.cpp rename to drivers/filesystems/udfs/create.c diff --git a/drivers/filesystems/udfs/devcntrl.cpp b/drivers/filesystems/udfs/devcntrl.c similarity index 100% rename from drivers/filesystems/udfs/devcntrl.cpp rename to drivers/filesystems/udfs/devcntrl.c diff --git a/drivers/filesystems/udfs/dircntrl.cpp b/drivers/filesystems/udfs/dircntrl.c similarity index 100% rename from drivers/filesystems/udfs/dircntrl.cpp rename to drivers/filesystems/udfs/dircntrl.c diff --git a/drivers/filesystems/udfs/env_spec.cpp b/drivers/filesystems/udfs/env_spec.c similarity index 99% rename from drivers/filesystems/udfs/env_spec.cpp rename to drivers/filesystems/udfs/env_spec.c index 52e1cb5382576..6872a86d9924f 100644 --- a/drivers/filesystems/udfs/env_spec.cpp +++ b/drivers/filesystems/udfs/env_spec.c @@ -134,7 +134,6 @@ UDFPhReadSynchronous( PIO_STACK_LOCATION IrpSp; KIRQL CurIrql = KeGetCurrentIrql(); PVOID IoBuf = NULL; - PVCB Vcb = NULL; ROffset.QuadPart = Offset; (*ReadBytes) = 0; @@ -252,8 +251,6 @@ UDFPhWriteSynchronous( KIRQL CurIrql = KeGetCurrentIrql(); PVOID IoBuf = NULL; - PVCB Vcb = NULL; - #ifdef DBG if (UDF_SIMULATE_WRITES) { /* FIXME ReactOS diff --git a/drivers/filesystems/udfs/fastio.cpp b/drivers/filesystems/udfs/fastio.c similarity index 100% rename from drivers/filesystems/udfs/fastio.cpp rename to drivers/filesystems/udfs/fastio.c diff --git a/drivers/filesystems/udfs/fileinfo.cpp b/drivers/filesystems/udfs/fileinfo.c similarity index 100% rename from drivers/filesystems/udfs/fileinfo.cpp rename to drivers/filesystems/udfs/fileinfo.c diff --git a/drivers/filesystems/udfs/filobsup.cpp b/drivers/filesystems/udfs/filobsup.c similarity index 100% rename from drivers/filesystems/udfs/filobsup.cpp rename to drivers/filesystems/udfs/filobsup.c diff --git a/drivers/filesystems/udfs/flush.cpp b/drivers/filesystems/udfs/flush.c similarity index 100% rename from drivers/filesystems/udfs/flush.cpp rename to drivers/filesystems/udfs/flush.c diff --git a/drivers/filesystems/udfs/fscntrl.cpp b/drivers/filesystems/udfs/fscntrl.c similarity index 99% rename from drivers/filesystems/udfs/fscntrl.cpp rename to drivers/filesystems/udfs/fscntrl.c index 74982610e6a43..9eb4cec14ce27 100644 --- a/drivers/filesystems/udfs/fscntrl.cpp +++ b/drivers/filesystems/udfs/fscntrl.c @@ -296,7 +296,7 @@ UDFMountVolume( ASSERT(IrpSp); UDFPrint(("\n !!! UDFMountVolume\n")); - auto RealDevice = Vpb->RealDevice; + PDEVICE_OBJECT RealDevice = Vpb->RealDevice; SetDoVerifyOnFail = UDFRealDevNeedsVerify(RealDevice); @@ -1339,7 +1339,7 @@ UDFGetVolumeBitmap( // Fill in the fixed part of the output buffer - __try { + _SEH2_TRY { // StartingLcn in output = aligned starting block @@ -1349,10 +1349,10 @@ UDFGetVolumeBitmap( OutputBuffer->BitmapSize.QuadPart = DesiredClusters; - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { try_return(Status = STATUS_INVALID_USER_BUFFER); - } + } _SEH2_END OutputBufferLength -= FIELD_OFFSET(VOLUME_BITMAP_BUFFER, Buffer); diff --git a/drivers/filesystems/udfs/lockctrl.cpp b/drivers/filesystems/udfs/lockctrl.c similarity index 100% rename from drivers/filesystems/udfs/lockctrl.cpp rename to drivers/filesystems/udfs/lockctrl.c diff --git a/drivers/filesystems/udfs/mem.cpp b/drivers/filesystems/udfs/mem.c similarity index 93% rename from drivers/filesystems/udfs/mem.cpp rename to drivers/filesystems/udfs/mem.c index 072602c852327..301ead0d8ba72 100644 --- a/drivers/filesystems/udfs/mem.cpp +++ b/drivers/filesystems/udfs/mem.c @@ -8,4 +8,4 @@ // define the file specific bug-check id #define UDF_BUG_CHECK_ID UDF_FILE_MEM -#include "Include/mem_tools.cpp" +#include "Include/mem_tools.c" diff --git a/drivers/filesystems/udfs/misc.cpp b/drivers/filesystems/udfs/misc.c similarity index 99% rename from drivers/filesystems/udfs/misc.cpp rename to drivers/filesystems/udfs/misc.c index 75765fe90ce48..3607dc774a31d 100644 --- a/drivers/filesystems/udfs/misc.cpp +++ b/drivers/filesystems/udfs/misc.c @@ -501,7 +501,7 @@ UDFCreateIrpContext( } // TODO: fix - if (false && IrpSp->FileObject != NULL) { + if (FALSE && IrpSp->FileObject != NULL) { PFILE_OBJECT FileObject = IrpSp->FileObject; @@ -1867,5 +1867,5 @@ UDFWaitForIoAtEof( return TRUE; } -#include "Include/regtools.cpp" +#include "Include/regtools.c" diff --git a/drivers/filesystems/udfs/namesup.cpp b/drivers/filesystems/udfs/namesup.c similarity index 100% rename from drivers/filesystems/udfs/namesup.cpp rename to drivers/filesystems/udfs/namesup.c diff --git a/drivers/filesystems/udfs/pnp.cpp b/drivers/filesystems/udfs/pnp.c similarity index 100% rename from drivers/filesystems/udfs/pnp.cpp rename to drivers/filesystems/udfs/pnp.c diff --git a/drivers/filesystems/udfs/prefxsup.cpp b/drivers/filesystems/udfs/prefxsup.c similarity index 100% rename from drivers/filesystems/udfs/prefxsup.cpp rename to drivers/filesystems/udfs/prefxsup.c diff --git a/drivers/filesystems/udfs/protos.h b/drivers/filesystems/udfs/protos.h index acaa3cd52b8b4..e40e55610e1dd 100644 --- a/drivers/filesystems/udfs/protos.h +++ b/drivers/filesystems/udfs/protos.h @@ -1047,7 +1047,7 @@ UDFCommonShutdown( /************************************************************************* * Prototypes for the file UDFinit.cpp *************************************************************************/ -extern "C" NTSTATUS NTAPI DriverEntry( +NTSTATUS NTAPI DriverEntry( PDRIVER_OBJECT DriverObject, // created by the I/O sub-system PUNICODE_STRING RegistryPath); // path to the registry key @@ -1337,6 +1337,8 @@ enum TYPE_OF_ACQUIRE { }; +typedef enum TYPE_OF_ACQUIRE TYPE_OF_ACQUIRE; + _Requires_lock_held_(_Global_critical_region_) _When_(Type == AcquireExclusive && return != FALSE, _Acquires_exclusive_lock_(*Resource)) _When_(Type == AcquireShared && return != FALSE, _Acquires_shared_lock_(*Resource)) @@ -1383,7 +1385,7 @@ UDFAcquireResource( #define UDFReleasePagingIo(IC,F) \ ExReleaseResourceLite((F)->Header.PagingIoResource) -inline +static inline ULONG UDFHighBit( ULONG Word @@ -1407,7 +1409,7 @@ UDFHighBit( #define SectorSize(V) ((V)->SectorSize) -inline +static inline ULONG SectorAlign( PVCB Vcb, @@ -1417,7 +1419,7 @@ SectorAlign( return (Length + (Vcb->SectorSize - 1)) & ~(Vcb->SectorSize - 1); } -inline +static inline ULONGLONG LlSectorAlign( PVCB Vcb, @@ -1439,7 +1441,7 @@ UDFSetThreadContext( (IC)->ThreadContext = NULL -inline +static inline BOOLEAN UdfIsExtendedFESupported( _In_ PVCB Vcb ) @@ -1447,7 +1449,7 @@ BOOLEAN UdfIsExtendedFESupported( return Vcb->NSRDesc == VRS_NSR03_FOUND; } -inline +static inline BOOLEAN UDFIsStreamsSupported( _In_ PVCB Vcb ) diff --git a/drivers/filesystems/udfs/read.cpp b/drivers/filesystems/udfs/read.c similarity index 100% rename from drivers/filesystems/udfs/read.cpp rename to drivers/filesystems/udfs/read.c diff --git a/drivers/filesystems/udfs/secursup.cpp b/drivers/filesystems/udfs/secursup.c similarity index 100% rename from drivers/filesystems/udfs/secursup.cpp rename to drivers/filesystems/udfs/secursup.c diff --git a/drivers/filesystems/udfs/shutdown.cpp b/drivers/filesystems/udfs/shutdown.c similarity index 100% rename from drivers/filesystems/udfs/shutdown.cpp rename to drivers/filesystems/udfs/shutdown.c diff --git a/drivers/filesystems/udfs/strucsup.cpp b/drivers/filesystems/udfs/strucsup.c similarity index 99% rename from drivers/filesystems/udfs/strucsup.cpp rename to drivers/filesystems/udfs/strucsup.c index 6e746f30fc8a4..84ad29f046bf0 100644 --- a/drivers/filesystems/udfs/strucsup.cpp +++ b/drivers/filesystems/udfs/strucsup.c @@ -46,7 +46,7 @@ UDFInsertFcbIntoTable( SetFlag(Fcb->FcbState, FCB_STATE_IN_FCB_TABLE); } -inline +static inline PFCB_NONPAGED UDFAllocateFcbNonpaged( ) @@ -54,7 +54,7 @@ UDFAllocateFcbNonpaged( return (PFCB_NONPAGED)ExAllocateFromNPagedLookasideList(&UdfData.UDFNonPagedFcbLookasideList); } -inline +static inline PFCB UDFAllocateFcbIndex( ) @@ -62,7 +62,7 @@ UDFAllocateFcbIndex( return (PFCB)ExAllocateFromPagedLookasideList(&UdfData.UDFFcbIndexLookasideList); } -inline +static inline PFCB UDFAllocateFcbData( ) @@ -70,7 +70,7 @@ UDFAllocateFcbData( return (PFCB)ExAllocateFromPagedLookasideList(&UdfData.UDFFcbDataLookasideList); } -inline +static inline PFCB UDFAllocateFcb( ) @@ -78,7 +78,7 @@ UDFAllocateFcb( return (PFCB)ExAllocatePoolWithTag(NonPagedPool, sizeof(FCB), TAG_FCB); } -inline +static inline VOID UDFDeallocateFcbNonpaged( PFCB_NONPAGED FcbNonpaged @@ -87,7 +87,7 @@ UDFDeallocateFcbNonpaged( ExFreeToNPagedLookasideList(&UdfData.UDFNonPagedFcbLookasideList, FcbNonpaged); } -inline +static inline VOID UDFDeallocateFcbIndex( PFCB Fcb @@ -96,7 +96,7 @@ UDFDeallocateFcbIndex( ExFreeToPagedLookasideList(&UdfData.UDFFcbIndexLookasideList, Fcb); } -inline +static inline VOID UDFDeallocateFcbData( PFCB Fcb @@ -1185,7 +1185,7 @@ UDFCompleteMount( UNICODE_STRING LocalPath; ULONG LastSector = 0; BOOLEAN UnlockVcb = FALSE; - FILE_ID FileId{}; + FILE_ID FileId = {0}; PAGED_CODE(); @@ -1305,7 +1305,7 @@ UDFCompleteMount( // Open Unallocatable space stream // Generally, it should be placed in SystemStreamDirectory, but some // stupid apps think that RootDirectory is much better place.... :(( - LocalPath = RTL_CONSTANT_STRING(UDF_FN_NON_ALLOCATABLE); + RtlInitUnicodeString(&LocalPath, UDF_FN_NON_ALLOCATABLE); Status = UDFOpenFile__(IrpContext, Vcb, FALSE, TRUE, &LocalPath, Vcb->RootIndexFcb->FileInfo, &Vcb->NonAllocFileInfo, NULL); if (!NT_SUCCESS(Status) && (Status != STATUS_OBJECT_NAME_NOT_FOUND)) { @@ -1328,7 +1328,7 @@ UDFCompleteMount( UDFDirIndex(UDFGetDirIndexByFileInfo(Vcb->NonAllocFileInfo), Vcb->NonAllocFileInfo->Index)->FI_Flags |= UDF_FI_FLAG_FI_INTERNAL; } else { /* try to read Non-allocatable from alternate locations */ - LocalPath = RTL_CONSTANT_STRING(UDF_FN_NON_ALLOCATABLE_2); + RtlInitUnicodeString(&LocalPath, UDF_FN_NON_ALLOCATABLE_2); Status = UDFOpenFile__(IrpContext, Vcb, FALSE, TRUE, &LocalPath, Vcb->RootIndexFcb->FileInfo, &(Vcb->NonAllocFileInfo), NULL); if (!NT_SUCCESS(Status) && (Status != STATUS_OBJECT_NAME_NOT_FOUND)) { goto unwind_1; @@ -1338,7 +1338,7 @@ UDFCompleteMount( UDFDirIndex(UDFGetDirIndexByFileInfo(Vcb->NonAllocFileInfo), Vcb->NonAllocFileInfo->Index)->FI_Flags |= UDF_FI_FLAG_FI_INTERNAL; } else if (Vcb->SysSDirFileInfo) { - LocalPath = RTL_CONSTANT_STRING(UDF_SN_NON_ALLOCATABLE); + RtlInitUnicodeString(&LocalPath, UDF_SN_NON_ALLOCATABLE); Status = UDFOpenFile__(IrpContext, Vcb, FALSE, TRUE, &LocalPath, Vcb->SysSDirFileInfo , &(Vcb->NonAllocFileInfo), NULL); if (!NT_SUCCESS(Status) && (Status != STATUS_OBJECT_NAME_NOT_FOUND)) { goto unwind_1; @@ -1357,7 +1357,7 @@ UDFCompleteMount( /* Read SN UID mapping */ if (Vcb->SysSDirFileInfo) { - LocalPath = RTL_CONSTANT_STRING(UDF_SN_UID_MAPPING); + RtlInitUnicodeString(&LocalPath, UDF_SN_UID_MAPPING); Status = UDFOpenFile__(IrpContext, Vcb, FALSE, TRUE, &LocalPath, Vcb->SysSDirFileInfo , &Vcb->UniqueIDMapFileInfo, NULL); diff --git a/drivers/filesystems/udfs/struct.h b/drivers/filesystems/udfs/struct.h index 74c032224266d..895fa13c767f8 100644 --- a/drivers/filesystems/udfs/struct.h +++ b/drivers/filesystems/udfs/struct.h @@ -38,6 +38,22 @@ struct IO_CONTEXT; struct IRP_CONTEXT; struct LCB; +/* C typedef aliases – allow plain name usage without the 'struct' keyword */ +typedef struct IRP_CONTEXT_LITE IRP_CONTEXT_LITE; +typedef struct IO_CONTEXT IO_CONTEXT; +typedef struct IRP_CONTEXT IRP_CONTEXT; +typedef struct LCB LCB; +typedef struct UDFIdentifier UDFIdentifier; +typedef struct UDFObjectName UDFObjectName; +typedef struct CCB CCB; +typedef struct FCB_NONPAGED FCB_NONPAGED; +typedef struct FCB_DATA FCB_DATA; +typedef struct FCB_INDEX FCB_INDEX; +typedef struct FCB FCB; +typedef struct VCB VCB; +typedef struct VOLUME_DEVICE_OBJECT VOLUME_DEVICE_OBJECT; +typedef struct THREAD_CONTEXT THREAD_CONTEXT; + /************************************************************************** every structure has a node type, and a node size associated with it. The node type serves as a signature field. The size is used for @@ -48,8 +64,7 @@ struct UDFIdentifier { NODE_BYTE_SIZE NodeByteSize; // computed as sizeof(structure) }; -static_assert(sizeof(UDFIdentifier) == offsetof(FSRTL_ADVANCED_FCB_HEADER, Flags), - "UDFIdentifier size mismatch with NodeTypeCode and NodeByteSize in FSRTL_ADVANCED_FCB_HEADER"); +C_ASSERT(sizeof(UDFIdentifier) == offsetof(FSRTL_ADVANCED_FCB_HEADER, Flags)); /************************************************************************** Every open on-disk object must have a name associated with it @@ -68,7 +83,7 @@ struct UDFObjectName { // an absolute pathname of the object is stored below UNICODE_STRING ObjectName; }; -using PtrUDFObjectName = UDFObjectName*; +typedef UDFObjectName* PtrUDFObjectName; /************************************************************************** Each file open instance is represented by a context control block. @@ -107,7 +122,7 @@ struct CCB { PUNICODE_STRING DirectorySearchPattern; HASH_ENTRY hashes; }; -using PCCB = CCB*; +typedef CCB* PCCB; #define CCB_FLAG_IGNORE_CASE (0x00000004) // the CCB has had an IRP_MJ_CLEANUP issued on it. we must @@ -165,7 +180,7 @@ struct FCB_NONPAGED { FAST_MUTEX FcbFastMutex; }; -using PFCB_NONPAGED = FCB_NONPAGED*; +typedef FCB_NONPAGED* PFCB_NONPAGED; /************************************************************************** each open file/directory/volume is represented by a file control block. @@ -206,11 +221,11 @@ using PFCB_NONPAGED = FCB_NONPAGED*; /***************************************************/ struct FCB_DATA { - + UCHAR Placeholder; }; struct FCB_INDEX { - + UCHAR Placeholder; }; struct FCB { @@ -312,7 +327,7 @@ struct FCB { FCB_INDEX FcbIndex; }; }; -using PFCB = FCB*; +typedef FCB* PFCB; #define SIZEOF_FCB_DATA \ (FIELD_OFFSET(FCB, FcbType) + sizeof(FCB_DATA)) @@ -355,7 +370,7 @@ using PFCB = FCB*; **************************************************************************/ -enum UDFFSD_MEDIA_TYPE { +typedef enum UDFFSD_MEDIA_TYPE { MediaUnknown = 0, MediaHdd, MediaCdr, @@ -365,7 +380,7 @@ enum UDFFSD_MEDIA_TYPE { MediaFloppy, MediaDvdr, MediaDvdrw -}; +} UDFFSD_MEDIA_TYPE; //*************************************************************************** // LCB (Link Control Block) @@ -439,7 +454,7 @@ struct LCB { UNICODE_STRING FileName; // +0xE8 File name }; -using PLCB = LCB*; +typedef LCB* PLCB; // LCB Flags #define UDF_LCB_FLAG_POOL_ALLOCATED 0x00000001 // Allocated from pool (not lookaside) @@ -465,14 +480,14 @@ using PLCB = LCB*; // VCB (Volume Control Block) //*************************************************************************** -enum VCB_CONDITION { +typedef enum VCB_CONDITION { VcbNotMounted = 0, VcbMountInProgress, VcbMounted, VcbInvalid, VcbDismountInProgress -}; +} VCB_CONDITION; struct VCB { @@ -736,7 +751,7 @@ struct VCB { PVPB SwapVpb; }; -using PVCB = VCB*; +typedef VCB* PVCB; // One for root #define UDFS_BASE_RESIDUAL_REFERENCE (4)//(6) @@ -810,7 +825,7 @@ struct THREAD_CONTEXT { // will store the IrpContext for the request in this stack location. IRP_CONTEXT* TopLevelIrpContext; }; -using PTHREAD_CONTEXT = THREAD_CONTEXT*; +typedef THREAD_CONTEXT* PTHREAD_CONTEXT; /************************************************************************** The IRP context encapsulates the current request. This structure is @@ -854,7 +869,7 @@ struct IRP_CONTEXT { VCB* Vcb; }; -using PIRP_CONTEXT = IRP_CONTEXT*; +typedef IRP_CONTEXT* PIRP_CONTEXT; #define IRP_CONTEXT_FLAG_ON_STACK (0x00000001) #define IRP_CONTEXT_FLAG_MORE_PROCESSING (0x00000002) @@ -919,7 +934,7 @@ struct IRP_CONTEXT_LITE { // Real device object. This represents the physical device closest to the media. PDEVICE_OBJECT RealDevice; }; -using PIRP_CONTEXT_LITE = IRP_CONTEXT_LITE*; +typedef IRP_CONTEXT_LITE* PIRP_CONTEXT_LITE; /************************************************************************** we will store all of our global variables in one structure. diff --git a/drivers/filesystems/udfs/sys_spec.cpp b/drivers/filesystems/udfs/sys_spec.c similarity index 95% rename from drivers/filesystems/udfs/sys_spec.cpp rename to drivers/filesystems/udfs/sys_spec.c index e9a11ab152817..df66b8c66f22e 100644 --- a/drivers/filesystems/udfs/sys_spec.cpp +++ b/drivers/filesystems/udfs/sys_spec.c @@ -20,6 +20,6 @@ // define the file specific bug-check id #define UDF_BUG_CHECK_ID UDF_FILE_SYS_SPEC -#include "Include/Sys_spec_lib.cpp" +#include "Include/Sys_spec_lib.c" //#include "Include/tools.cpp" diff --git a/drivers/filesystems/udfs/udf_dbg.cpp b/drivers/filesystems/udfs/udf_dbg.c similarity index 100% rename from drivers/filesystems/udfs/udf_dbg.cpp rename to drivers/filesystems/udfs/udf_dbg.c diff --git a/drivers/filesystems/udfs/udf_info/alloc.cpp b/drivers/filesystems/udfs/udf_info/alloc.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/alloc.cpp rename to drivers/filesystems/udfs/udf_info/alloc.c diff --git a/drivers/filesystems/udfs/udf_info/dirtree.cpp b/drivers/filesystems/udfs/udf_info/dirtree.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/dirtree.cpp rename to drivers/filesystems/udfs/udf_info/dirtree.c diff --git a/drivers/filesystems/udfs/udf_info/ecma_167.h b/drivers/filesystems/udfs/udf_info/ecma_167.h index 6ca06a7c47fc2..7e4ebc9c9f064 100644 --- a/drivers/filesystems/udfs/udf_info/ecma_167.h +++ b/drivers/filesystems/udfs/udf_info/ecma_167.h @@ -772,5 +772,12 @@ typedef EXTENDED_FILE_ENTRY ExtendedFileEntry; #pragma pack(pop) +typedef struct VolStructDesc VolStructDesc; +typedef struct BeginningExtendedAreaDesc BeginningExtendedAreaDesc; +typedef struct TerminatingExtendedAreaDesc TerminatingExtendedAreaDesc; +typedef struct PrimaryVolDesc PrimaryVolDesc; +typedef struct AnchorVolDescPtr AnchorVolDescPtr; +typedef struct VolDescPtr VolDescPtr; + #endif /* __ECMA_167_H__ */ diff --git a/drivers/filesystems/udfs/udf_info/extent.cpp b/drivers/filesystems/udfs/udf_info/extent.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/extent.cpp rename to drivers/filesystems/udfs/udf_info/extent.c diff --git a/drivers/filesystems/udfs/udf_info/mount.cpp b/drivers/filesystems/udfs/udf_info/mount.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/mount.cpp rename to drivers/filesystems/udfs/udf_info/mount.c diff --git a/drivers/filesystems/udfs/udf_info/phys_eject.cpp b/drivers/filesystems/udfs/udf_info/phys_eject.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/phys_eject.cpp rename to drivers/filesystems/udfs/udf_info/phys_eject.c diff --git a/drivers/filesystems/udfs/udf_info/physical.cpp b/drivers/filesystems/udfs/udf_info/physical.c similarity index 95% rename from drivers/filesystems/udfs/udf_info/physical.cpp rename to drivers/filesystems/udfs/udf_info/physical.c index 1ba8a147f02f1..9468996cacd37 100644 --- a/drivers/filesystems/udfs/udf_info/physical.cpp +++ b/drivers/filesystems/udfs/udf_info/physical.c @@ -17,5 +17,5 @@ // define the file specific bug-check id #define UDF_BUG_CHECK_ID UDF_FILE_PHYSICAL -#include "Include/phys_lib.cpp" +#include "Include/phys_lib.c" diff --git a/drivers/filesystems/udfs/udf_info/remap.cpp b/drivers/filesystems/udfs/udf_info/remap.c similarity index 100% rename from drivers/filesystems/udfs/udf_info/remap.cpp rename to drivers/filesystems/udfs/udf_info/remap.c diff --git a/drivers/filesystems/udfs/udf_info/udf_info.cpp b/drivers/filesystems/udfs/udf_info/udf_info.c similarity index 99% rename from drivers/filesystems/udfs/udf_info/udf_info.cpp rename to drivers/filesystems/udfs/udf_info/udf_info.c index e9556aa93de31..fe3dde19cd202 100644 --- a/drivers/filesystems/udfs/udf_info/udf_info.cpp +++ b/drivers/filesystems/udfs/udf_info/udf_info.c @@ -4589,7 +4589,7 @@ UDFReadTagged( // Read the block if (Block == 0xFFFFFFFF) - return NULL; + return STATUS_UNSUCCESSFUL; _SEH2_TRY { RC = UDFReadSectors(IrpContext, Vcb, FALSE, Block, 1, FALSE, Buf, &ReadBytes); diff --git a/drivers/filesystems/udfs/udfdata.cpp b/drivers/filesystems/udfs/udfdata.c similarity index 100% rename from drivers/filesystems/udfs/udfdata.cpp rename to drivers/filesystems/udfs/udfdata.c diff --git a/drivers/filesystems/udfs/udffs.h b/drivers/filesystems/udfs/udffs.h index 272046b907e62..2aae42ef2fa5f 100644 --- a/drivers/filesystems/udfs/udffs.h +++ b/drivers/filesystems/udfs/udffs.h @@ -133,7 +133,7 @@ extern UDFData UdfData; // Encapsulate safe pool freeing -inline +static inline VOID UDFFreePool( _Inout_ _At_(*Pool, __drv_freesMem(Mem) _Post_null_) PVOID *Pool @@ -152,7 +152,7 @@ UDFFreePool( // small check for illegal open mode (desired access) if volume is // read only (on standard CD-ROM device or another like this) -inline +static inline BOOLEAN UDFIllegalFcbAccess( IN PVCB Vcb, @@ -398,7 +398,7 @@ UDFIllegalFcbAccess( #define FID_DIR_MASK 0x80000000 // high order bit means directory. -inline +static inline FILE_ID UdfGetFidFromLbAddr(lb_addr lbAddr) { diff --git a/drivers/filesystems/udfs/udfinit.cpp b/drivers/filesystems/udfs/udfinit.c similarity index 100% rename from drivers/filesystems/udfs/udfinit.cpp rename to drivers/filesystems/udfs/udfinit.c diff --git a/drivers/filesystems/udfs/unload.cpp b/drivers/filesystems/udfs/unload.c similarity index 100% rename from drivers/filesystems/udfs/unload.cpp rename to drivers/filesystems/udfs/unload.c diff --git a/drivers/filesystems/udfs/verfysup.cpp b/drivers/filesystems/udfs/verfysup.c similarity index 99% rename from drivers/filesystems/udfs/verfysup.cpp rename to drivers/filesystems/udfs/verfysup.c index 015af5a6b423b..aad0057c6650c 100644 --- a/drivers/filesystems/udfs/verfysup.cpp +++ b/drivers/filesystems/udfs/verfysup.c @@ -234,6 +234,9 @@ UDFVerifyVcb( UDFRaiseStatus(IrpContext, STATUS_FILE_INVALID); } break; + + default: + break; } } // end UDFVerifyVcb() diff --git a/drivers/filesystems/udfs/volinfo.cpp b/drivers/filesystems/udfs/volinfo.c similarity index 100% rename from drivers/filesystems/udfs/volinfo.cpp rename to drivers/filesystems/udfs/volinfo.c diff --git a/drivers/filesystems/udfs/write.cpp b/drivers/filesystems/udfs/write.c similarity index 99% rename from drivers/filesystems/udfs/write.cpp rename to drivers/filesystems/udfs/write.c index 076e5a6cbe305..7adf7b952c3a8 100644 --- a/drivers/filesystems/udfs/write.cpp +++ b/drivers/filesystems/udfs/write.c @@ -243,7 +243,7 @@ UDFCommonWrite( // Perform actual Write Status = UDFTWrite(IrpContext, Vcb, SystemBuffer, ByteCount, (ULONG)(StartingOffset >> Vcb->SectorShift), - &NumberBytesWritten); + &NumberBytesWritten, 0); UDFUnlockCallersBuffer(IrpContext, Irp, SystemBuffer); try_return(Status); } @@ -894,8 +894,8 @@ UDFZeroData ( --*/ { - LARGE_INTEGER ZeroStart = {0,0}; - LARGE_INTEGER BeyondZeroEnd = {0,0}; + LARGE_INTEGER ZeroStart = {{0, 0}}; + LARGE_INTEGER BeyondZeroEnd = {{0, 0}}; BOOLEAN Finished;