[UDFS] Fix all GCC warnings! By V. with one little change by me to keep MSVC build working :)

svn path=/trunk/; revision=68087
This commit is contained in:
Amine Khaldi 2015-06-09 10:40:26 +00:00
parent 7395dd7c82
commit 07d842f6c6
32 changed files with 314 additions and 274 deletions

View file

@ -663,7 +663,7 @@ UDFNormalizeFileName(
if (trailIndex != (newIndex - 1)) { if (trailIndex != (newIndex - 1)) {
newIndex = trailIndex + 1; newIndex = trailIndex + 1;
needsCRC = TRUE; needsCRC = TRUE;
hasExt = FALSE; //* Trailing period does not make an extension. hasExt = FALSE; // Trailing period does not make an extension.
} }
} }
@ -671,10 +671,10 @@ UDFNormalizeFileName(
int localExtIndex = 0; int localExtIndex = 0;
if (hasExt) { if (hasExt) {
int maxFilenameLen; int maxFilenameLen;
//* Translate extension, and store it in ext. // Translate extension, and store it in ext.
for(index = 0; index<UDF_EXT_SIZE && extIndex + index +1 < udfLen; index++ ) { for(index = 0; index<UDF_EXT_SIZE && extIndex + index +1 < udfLen; index++ ) {
current = udfName[extIndex + index + 1]; current = udfName[extIndex + index + 1];
if (UDFIsIllegalChar(current) /*|| !UnicodeIsPrint(current)) { if (UDFIsIllegalChar(current) //|| !UnicodeIsPrint(current)) {
needsCRC = TRUE; needsCRC = TRUE;
// Replace Illegal and non-displayable chars // Replace Illegal and non-displayable chars
// with underscore. // with underscore.
@ -791,7 +791,7 @@ MyAppendUnicodeStringToString_(
NTSTATUS NTSTATUS
MyAppendUnicodeToString_( MyAppendUnicodeToString_(
IN PUNICODE_STRING Str1, IN PUNICODE_STRING Str1,
IN PWSTR Str2 IN PCWSTR Str2
#ifdef UDF_TRACK_UNICODE_STR #ifdef UDF_TRACK_UNICODE_STR
,IN PCHAR Tag ,IN PCHAR Tag
#endif #endif
@ -937,7 +937,7 @@ UDFIsDirInfoCached(
{ {
PDIR_INDEX_HDR hDirNdx = DirInfo->Dloc->DirIndex; PDIR_INDEX_HDR hDirNdx = DirInfo->Dloc->DirIndex;
PDIR_INDEX_ITEM DirNdx; PDIR_INDEX_ITEM DirNdx;
for(uint_di i=2; DirNdx = UDFDirIndex(hDirNdx,i); i++) { for(uint_di i=2; (DirNdx = UDFDirIndex(hDirNdx,i)); i++) {
if(!(DirNdx->FI_Flags & UDF_FI_FLAG_SYS_ATTR) || if(!(DirNdx->FI_Flags & UDF_FI_FLAG_SYS_ATTR) ||
(DirNdx->FI_Flags & UDF_FI_FLAG_LINKED)) return FALSE; (DirNdx->FI_Flags & UDF_FI_FLAG_LINKED)) return FALSE;
} }
@ -1008,7 +1008,7 @@ UDFDoesOSAllowFileToBeUnlinked__(
// UDFFlushAFile(FileInfo->Fcb, NULL, &IoStatus, 0); // UDFFlushAFile(FileInfo->Fcb, NULL, &IoStatus, 0);
hCurDirNdx = FileInfo->Dloc->DirIndex; hCurDirNdx = FileInfo->Dloc->DirIndex;
// check if we can delete all files // check if we can delete all files
for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) { for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
// try to open Stream // try to open Stream
if(CurDirNdx->FileInfo) if(CurDirNdx->FileInfo)
return STATUS_CANNOT_DELETE; return STATUS_CANNOT_DELETE;

View file

@ -108,7 +108,7 @@ NTSTATUS MyAppendUnicodeStringToString_(IN PUNICODE_STRING Str1,
); );
NTSTATUS MyAppendUnicodeToString_(IN PUNICODE_STRING Str1, NTSTATUS MyAppendUnicodeToString_(IN PUNICODE_STRING Str1,
IN PWSTR Str2 IN PCWSTR Str2
#ifdef UDF_TRACK_UNICODE_STR #ifdef UDF_TRACK_UNICODE_STR
,IN PCHAR Tag ,IN PCHAR Tag
#endif #endif

View file

@ -1291,7 +1291,7 @@ UDFRecoverFromError(
{ {
PGET_LAST_ERROR_USER_OUT Error = NULL; PGET_LAST_ERROR_USER_OUT Error = NULL;
LARGE_INTEGER delay; LARGE_INTEGER delay;
OSSTATUS RC; // OSSTATUS RC;
uint32 i; uint32 i;
BOOLEAN UpdateBB = FALSE; BOOLEAN UpdateBB = FALSE;
@ -1361,7 +1361,7 @@ UDFRecoverFromError(
} }
KdPrint(("Error recovery: sync cache\n")); KdPrint(("Error recovery: sync cache\n"));
// ...flush device cache... // ...flush device cache...
RC = UDFSyncCache(Vcb); UDFSyncCache(Vcb);
// wait again & retry // wait again & retry
delay.QuadPart = -1000000; // 0.1 sec delay.QuadPart = -1000000; // 0.1 sec
KeDelayExecutionThread(KernelMode, FALSE, &delay); KeDelayExecutionThread(KernelMode, FALSE, &delay);
@ -1396,7 +1396,7 @@ UDFRecoverFromError(
KeDelayExecutionThread(KernelMode, FALSE, &delay); KeDelayExecutionThread(KernelMode, FALSE, &delay);
KdPrint(("Error recovery: sync cache\n")); KdPrint(("Error recovery: sync cache\n"));
// ...flush device cache... // ...flush device cache...
RC = UDFSyncCache(Vcb); UDFSyncCache(Vcb);
// wait again & retry // wait again & retry
delay.QuadPart = -1000000; // 0.1 sec delay.QuadPart = -1000000; // 0.1 sec
KeDelayExecutionThread(KernelMode, FALSE, &delay); KeDelayExecutionThread(KernelMode, FALSE, &delay);
@ -1519,7 +1519,7 @@ bad_rw_seek_recovery:
Lba+BCount <= Vcb->LastLBA+1) { Lba+BCount <= Vcb->LastLBA+1) {
KdPrint(("bad Session in streaming mode. Lba %x, try fix-up\n", Lba)); KdPrint(("bad Session in streaming mode. Lba %x, try fix-up\n", Lba));
// ...flush device cache... // ...flush device cache...
RC = UDFSyncCache(Vcb); UDFSyncCache(Vcb);
// we should wait // we should wait
delay.QuadPart = -10000000; // 1 sec delay.QuadPart = -10000000; // 1 sec
KeDelayExecutionThread(KernelMode, FALSE, &delay); KeDelayExecutionThread(KernelMode, FALSE, &delay);
@ -1572,7 +1572,7 @@ bad_rw_seek_recovery:
Lba+BCount <= Vcb->LastLBA+1) { Lba+BCount <= Vcb->LastLBA+1) {
KdPrint(("bad LBA %x in streaming mode, try fix-up\n", Lba)); KdPrint(("bad LBA %x in streaming mode, try fix-up\n", Lba));
// ...flush device cache... // ...flush device cache...
RC = UDFSyncCache(Vcb); UDFSyncCache(Vcb);
try_return(status = STATUS_SUCCESS); try_return(status = STATUS_SUCCESS);
} }
@ -1595,7 +1595,7 @@ try_exit: NOTHING;
#endif //UDF_DBG #endif //UDF_DBG
} _SEH2_END; } _SEH2_END;
if(!OS_SUCCESS(status)) { if(!OS_SUCCESS(status)) {
if((Vcb->MountPhErrorCount != -1) && if((Vcb->MountPhErrorCount != (ULONG)-1) &&
(Vcb->MountPhErrorCount < 0x7fffffff)) { (Vcb->MountPhErrorCount < 0x7fffffff)) {
Vcb->MountPhErrorCount++; Vcb->MountPhErrorCount++;
} }
@ -1647,7 +1647,7 @@ UDFReadDiscTrackInfo(
BOOLEAN ForceFP = FALSE; BOOLEAN ForceFP = FALSE;
BOOLEAN PacketTrack = FALSE; BOOLEAN PacketTrack = FALSE;
BOOLEAN MRWRetry = FALSE; BOOLEAN MRWRetry = FALSE;
BOOLEAN ReadCapacityOk = FALSE; // BOOLEAN ReadCapacityOk = FALSE;
#ifdef UDF_FORMAT_MEDIA #ifdef UDF_FORMAT_MEDIA
PUDFFmtState fms = Vcb->fms; PUDFFmtState fms = Vcb->fms;
#endif #endif
@ -1697,7 +1697,7 @@ MRWRetry_label:
// good value from ReadCapacity // good value from ReadCapacity
KdPrint(("Update Last possible LBA %#x.\n", CapacityBuffer.LogicalBlockAddress)); KdPrint(("Update Last possible LBA %#x.\n", CapacityBuffer.LogicalBlockAddress));
Vcb->LastPossibleLBA = CapacityBuffer.LogicalBlockAddress; Vcb->LastPossibleLBA = CapacityBuffer.LogicalBlockAddress;
ReadCapacityOk = TRUE; // ReadCapacityOk = TRUE;
#ifdef UDF_FORMAT_MEDIA #ifdef UDF_FORMAT_MEDIA
if(fms && fms->opt_disk_info) { if(fms && fms->opt_disk_info) {
UserPrint(("ReadCapacity OK\n")); UserPrint(("ReadCapacity OK\n"));
@ -2392,7 +2392,7 @@ UDFUseStandard(
PREAD_TOC_USER_OUT toc = (PREAD_TOC_USER_OUT)MyAllocatePool__(NonPagedPool,max(Vcb->BlockSize, sizeof(READ_TOC_USER_OUT)) ); PREAD_TOC_USER_OUT toc = (PREAD_TOC_USER_OUT)MyAllocatePool__(NonPagedPool,max(Vcb->BlockSize, sizeof(READ_TOC_USER_OUT)) );
PGET_LAST_SESSION_USER_OUT LastSes = (PGET_LAST_SESSION_USER_OUT)MyAllocatePool__(NonPagedPool,sizeof(GET_LAST_SESSION_USER_OUT) ); PGET_LAST_SESSION_USER_OUT LastSes = (PGET_LAST_SESSION_USER_OUT)MyAllocatePool__(NonPagedPool,sizeof(GET_LAST_SESSION_USER_OUT) );
uint32 LocalTrackCount; uint32 LocalTrackCount;
uint32 LocalTocLength; // uint32 LocalTocLength;
uint32 TocEntry; uint32 TocEntry;
#ifdef _BROWSE_UDF_ #ifdef _BROWSE_UDF_
uint32 OldTrkNum; uint32 OldTrkNum;
@ -2479,7 +2479,7 @@ UDFUseStandard(
#endif //_CONSOLE #endif //_CONSOLE
LocalTrackCount = toc->Tracks.Last_TrackSes - toc->Tracks.First_TrackSes + 1; LocalTrackCount = toc->Tracks.Last_TrackSes - toc->Tracks.First_TrackSes + 1;
LocalTocLength = PtrOffset( toc, &(toc->TrackData[LocalTrackCount + 1]) ); // LocalTocLength = PtrOffset( toc, &(toc->TrackData[LocalTrackCount + 1]) ); /* FIXME ReactOS Assume PtrOffset is not changing it's arguments? */
// Get out if there is an immediate problem with the TOC. // Get out if there is an immediate problem with the TOC.
if(toc->Tracks.First_TrackSes > toc->Tracks.Last_TrackSes) { if(toc->Tracks.First_TrackSes > toc->Tracks.Last_TrackSes) {
@ -2720,7 +2720,7 @@ UDFGetBlockSize(
TRUE,NULL ); TRUE,NULL );
if(!NT_SUCCESS(RC)) { if(!NT_SUCCESS(RC)) {
KdPrint(("UDFGetBlockSize: IOCTL_DISK_GET_PARTITION_INFO failed\n")); KdPrint(("UDFGetBlockSize: IOCTL_DISK_GET_PARTITION_INFO failed\n"));
if(RC = STATUS_INVALID_DEVICE_REQUEST) if(RC == STATUS_INVALID_DEVICE_REQUEST) /* ReactOS Code Change (was =) */
RC = STATUS_UNRECOGNIZED_VOLUME; RC = STATUS_UNRECOGNIZED_VOLUME;
try_return(RC); try_return(RC);
} }
@ -3704,7 +3704,7 @@ UDFPrepareForReadOperation(
!(Vcb->VCBFlags & UDF_VCB_FLAGS_NO_SYNC_CACHE) && !(Vcb->VCBFlags & UDF_VCB_FLAGS_NO_SYNC_CACHE) &&
!(Vcb->CompatFlags & UDF_VCB_IC_NO_SYNCCACHE_AFTER_WRITE)){ !(Vcb->CompatFlags & UDF_VCB_IC_NO_SYNCCACHE_AFTER_WRITE)){
OSSTATUS RC; // OSSTATUS RC;
RC = UDFSyncCache(Vcb); RC = UDFSyncCache(Vcb);
} }
@ -3715,8 +3715,8 @@ UDFPrepareForReadOperation(
#endif //UDF_FORMAT_MEDIA #endif //UDF_FORMAT_MEDIA
TRUE) TRUE)
{ {
OSSTATUS RC; // OSSTATUS RC;
RC = UDFSyncCache(Vcb); UDFSyncCache(Vcb);
} }
#ifdef _BROWSE_UDF_ #ifdef _BROWSE_UDF_
@ -3969,7 +3969,7 @@ UDFReadData(
return STATUS_NO_SUCH_DEVICE; return STATUS_NO_SUCH_DEVICE;
// read tail of the 1st sector if Offset is not sector_size-aligned // read tail of the 1st sector if Offset is not sector_size-aligned
Lba = (uint32)(Offset >> BSh); Lba = (uint32)(Offset >> BSh);
if(i = (uint32)(Offset & (BS-1))) { if((i = (uint32)(Offset & (BS-1)))) {
l = (BS - i) < Length ? l = (BS - i) < Length ?
(BS - i) : Length; (BS - i) : Length;
// here we use 'ReadBytes' 'cause now it's set to zero // here we use 'ReadBytes' 'cause now it's set to zero
@ -4161,7 +4161,7 @@ UDFWriteData(
return STATUS_NO_SUCH_DEVICE; return STATUS_NO_SUCH_DEVICE;
// write tail of the 1st sector if Offset is not sector_size-aligned // write tail of the 1st sector if Offset is not sector_size-aligned
Lba = (uint32)(Offset >> BSh); Lba = (uint32)(Offset >> BSh);
if(i = ((uint32)Offset & (BS-1))) { if((i = ((uint32)Offset & (BS-1)))) {
l = (BS - i) < Length ? l = (BS - i) < Length ?
(BS - i) : Length; (BS - i) : Length;
status = UDFWriteInSector(Vcb, Translate, Lba, i, l, Direct, Buffer, WrittenBytes); status = UDFWriteInSector(Vcb, Translate, Lba, i, l, Direct, Buffer, WrittenBytes);
@ -4276,7 +4276,11 @@ UDFSetCaching(
MODE_READ_WRITE_RECOVERY_PAGE Data; MODE_READ_WRITE_RECOVERY_PAGE Data;
CHAR Padding [16]; CHAR Padding [16];
} RecoveryPage; } RecoveryPage;
#ifdef _MSC_VER
#pragma pack(pop,1) #pragma pack(pop,1)
#else
#pragma pack(pop)
#endif
MODE_SENSE_USER_IN ModeSenseCtl; MODE_SENSE_USER_IN ModeSenseCtl;
OSSTATUS RC; OSSTATUS RC;

View file

@ -11,7 +11,7 @@
NTSTATUS NTSTATUS
RegTGetKeyHandle( RegTGetKeyHandle(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWCHAR KeyName, IN PCWSTR KeyName,
OUT HKEY* hKey OUT HKEY* hKey
) )
{ {
@ -21,9 +21,7 @@ RegTGetKeyHandle(
//KdPrint(("RegTGetKeyHandle: h=%x, %S\n", hRootKey, KeyName)); //KdPrint(("RegTGetKeyHandle: h=%x, %S\n", hRootKey, KeyName));
NameString.Buffer = KeyName; RtlInitUnicodeString(&NameString, KeyName);
NameString.Length = wcslen(KeyName)*sizeof(WCHAR);
NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
InitializeObjectAttributes( InitializeObjectAttributes(
&ObjectAttributes, &ObjectAttributes,
@ -100,8 +98,8 @@ RegTCloseKeyHandle(
BOOLEAN BOOLEAN
RegTGetDwordValue( RegTGetDwordValue(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWSTR RegistryPath, IN PCWSTR RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PULONG pUlong IN PULONG pUlong
) )
{ {
@ -150,9 +148,7 @@ RegTGetDwordValue(
return FALSE; return FALSE;
} }
NameString.Buffer = Name; RtlInitUnicodeString(&NameString, Name);
NameString.Length = wcslen(Name)*sizeof(WCHAR);
NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
status = ZwQueryValueKey(hKey, status = ZwQueryValueKey(hKey,
&NameString, &NameString,
@ -192,8 +188,8 @@ RegTGetDwordValue(
BOOLEAN BOOLEAN
RegTGetStringValue( RegTGetStringValue(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWSTR RegistryPath, IN PCWSTR RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PWCHAR pStr, IN PWCHAR pStr,
IN ULONG MaxLen IN ULONG MaxLen
) )
@ -240,9 +236,7 @@ RegTGetStringValue(
return FALSE; return FALSE;
} }
NameString.Buffer = Name; RtlInitUnicodeString(&NameString, Name);
NameString.Length = wcslen(Name)*sizeof(WCHAR);
NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
status = ZwQueryValueKey(hKey, status = ZwQueryValueKey(hKey,
&NameString, &NameString,

View file

@ -16,7 +16,7 @@
NTSTATUS NTSTATUS
RegTGetKeyHandle( RegTGetKeyHandle(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWCHAR KeyName, IN PCWSTR KeyName,
OUT HKEY* hKey OUT HKEY* hKey
); );
@ -28,16 +28,16 @@ RegTCloseKeyHandle(
BOOLEAN BOOLEAN
RegTGetDwordValue( RegTGetDwordValue(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWSTR RegistryPath, IN PCWSTR RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PULONG pUlong IN PULONG pUlong
); );
BOOLEAN BOOLEAN
RegTGetStringValue( RegTGetStringValue(
IN HKEY hRootKey, IN HKEY hRootKey,
IN PWSTR RegistryPath, IN PCWSTR RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PWCHAR pStr, IN PWCHAR pStr,
IN ULONG MaxLen IN ULONG MaxLen
); );

View file

@ -27,7 +27,7 @@ typedef struct _UDF_KEY_LIST {
struct UDF_MEDIA_CLASS_NAMES struct UDF_MEDIA_CLASS_NAMES
{ {
UDFFSD_MEDIA_TYPE MediaClass; UDFFSD_MEDIA_TYPE MediaClass;
PWCHAR ClassName; PCWSTR ClassName;
}; };
extern struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[]; extern struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[];
@ -114,7 +114,7 @@ typedef struct _UDFVolumeControlBlock {
// device object when requesting a mount operation. // device object when requesting a mount operation.
PDEVICE_OBJECT TargetDeviceObject; PDEVICE_OBJECT TargetDeviceObject;
UNICODE_STRING TargetDevName; UNICODE_STRING TargetDevName;
PWSTR DefaultRegName; PCWSTR DefaultRegName;
// the volume structure contains a pointer to the root directory FCB // the volume structure contains a pointer to the root directory FCB
PtrUDFFCB RootDirFCB; PtrUDFFCB RootDirFCB;
// the complete name of the user visible drive letter we serve // the complete name of the user visible drive letter we serve

View file

@ -439,8 +439,10 @@ WCacheFindFrameToRelease(
Internal routine Internal routine
*/ */
#ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
ULONG ULONG
//__fastcall //__fastcall
@ -566,7 +568,9 @@ EO_while_2:
} }
#ifdef _MSC_VER
#pragma warning(pop) // re-enable warning #4035 #pragma warning(pop) // re-enable warning #4035
#endif
/* /*
WCacheInsertRangeToList() inserts values laying in range described WCacheInsertRangeToList() inserts values laying in range described
@ -823,7 +827,7 @@ WCacheRemoveFrame(
Internal routine Internal routine
*/ */
#define WCacheGetModFlag(block_array, i) \ #define WCacheGetModFlag(block_array, i) \
(((UCHAR)(block_array[i].Sector)) & WCACHE_FLAG_MODIFIED) (*((PULONG)&(block_array[i].Sector)) & WCACHE_FLAG_MODIFIED)
#if 0 #if 0
/* /*
@ -1643,9 +1647,9 @@ WCacheCheckLimitsRAM(
// ULONG BS = Cache->BlockSize; // ULONG BS = Cache->BlockSize;
// ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes) // ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
ULONG PSs = Cache->PacketSize; ULONG PSs = Cache->PacketSize;
ULONG try_count = 0; // ULONG try_count = 0;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
ULONG FreeFrameCount = 0; ULONG FreeFrameCount = 0;
// PVOID addr; // PVOID addr;
@ -1679,11 +1683,13 @@ Try_Another_Frame:
try_count = 0; try_count = 0;
} }
#else #else
/*
if(Cache->FrameList[frame].UpdateCount) { if(Cache->FrameList[frame].UpdateCount) {
try_count = MAX_TRIES_FOR_NA; try_count = MAX_TRIES_FOR_NA;
} else { } else {
try_count = 0; try_count = 0;
} }
*/
#endif #endif
if(FreeFrameCount) if(FreeFrameCount)
@ -1700,7 +1706,7 @@ Try_Another_Frame:
BrutePoint(); BrutePoint();
return STATUS_DRIVER_INTERNAL_ERROR; return STATUS_DRIVER_INTERNAL_ERROR;
} }
status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE); WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame); WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame);
WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame); WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
@ -1715,7 +1721,7 @@ Try_Another_Frame:
// remove(flush) packet // remove(flush) packet
while((Cache->BlockCount + WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba) + while((Cache->BlockCount + WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba) +
BCount - WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba+BCount)) > Cache->MaxBlocks) { BCount - WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba+BCount)) > Cache->MaxBlocks) {
try_count = 0; // try_count = 0;
//Try_Another_Block: //Try_Another_Block:
ASSERT(Cache->FrameCount <= Cache->MaxFrames); ASSERT(Cache->FrameCount <= Cache->MaxFrames);
@ -1734,7 +1740,7 @@ Try_Another_Frame:
ASSERT(FALSE); ASSERT(FALSE);
return STATUS_DRIVER_INTERNAL_ERROR; return STATUS_DRIVER_INTERNAL_ERROR;
} }
status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE); WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
WCacheRemoveRangeFromList(List, &(Cache->BlockCount), Lba, PSs); WCacheRemoveRangeFromList(List, &(Cache->BlockCount), Lba, PSs);
WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), Lba, PSs); WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), Lba, PSs);
// check if frame is empty // check if frame is empty
@ -1765,7 +1771,7 @@ WCachePurgeAllRAM(
ULONG firstPos; ULONG firstPos;
ULONG lastPos; ULONG lastPos;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
// remove(flush) some frames // remove(flush) some frames
while(Cache->FrameCount) { while(Cache->FrameCount) {
@ -1783,7 +1789,7 @@ WCachePurgeAllRAM(
BrutePoint(); BrutePoint();
return STATUS_DRIVER_INTERNAL_ERROR; return STATUS_DRIVER_INTERNAL_ERROR;
} }
status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE); WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame); WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame);
WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame); WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
@ -1813,7 +1819,7 @@ WCacheFlushAllRAM(
ULONG firstPos; ULONG firstPos;
ULONG lastPos; ULONG lastPos;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
// flush frames // flush frames
while(Cache->WriteCount) { while(Cache->WriteCount) {
@ -1831,7 +1837,7 @@ WCacheFlushAllRAM(
BrutePoint(); BrutePoint();
return STATUS_DRIVER_INTERNAL_ERROR; return STATUS_DRIVER_INTERNAL_ERROR;
} }
status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, FALSE); WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, FALSE);
WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame); WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
} }
@ -2621,14 +2627,14 @@ WCachePurgeAllRW(
lba_t firstLba; lba_t firstLba;
lba_t* List = Cache->CachedBlocksList; lba_t* List = Cache->CachedBlocksList;
lba_t Lba; lba_t Lba;
ULONG firstPos; // ULONG firstPos;
ULONG lastPos; // ULONG lastPos;
ULONG BSh = Cache->BlockSizeSh; ULONG BSh = Cache->BlockSizeSh;
ULONG BS = Cache->BlockSize; ULONG BS = Cache->BlockSize;
ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes) ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
ULONG PSs = Cache->PacketSize; ULONG PSs = Cache->PacketSize;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
ULONG ReadBytes; ULONG ReadBytes;
PW_CACHE_ASYNC FirstWContext = NULL; PW_CACHE_ASYNC FirstWContext = NULL;
PW_CACHE_ASYNC PrevWContext = NULL; PW_CACHE_ASYNC PrevWContext = NULL;
@ -2640,15 +2646,15 @@ WCachePurgeAllRW(
Lba = List[0] & ~(PSs-1); Lba = List[0] & ~(PSs-1);
frame = Lba >> Cache->BlocksPerFrameSh; frame = Lba >> Cache->BlocksPerFrameSh;
firstLba = frame << Cache->BlocksPerFrameSh; firstLba = frame << Cache->BlocksPerFrameSh;
firstPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba); // firstPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba);
lastPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba+PSs); // lastPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba+PSs);
block_array = Cache->FrameList[frame].Frame; block_array = Cache->FrameList[frame].Frame;
if(!block_array) { if(!block_array) {
BrutePoint(); BrutePoint();
return; return;
} }
status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba, WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE); Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
// free memory // free memory
@ -2688,15 +2694,15 @@ WCacheFlushAllRW(
lba_t firstLba; lba_t firstLba;
lba_t* List = Cache->CachedModifiedBlocksList; lba_t* List = Cache->CachedModifiedBlocksList;
lba_t Lba; lba_t Lba;
ULONG firstPos; // ULONG firstPos;
ULONG lastPos; // ULONG lastPos;
ULONG BSh = Cache->BlockSizeSh; ULONG BSh = Cache->BlockSizeSh;
ULONG BS = Cache->BlockSize; ULONG BS = Cache->BlockSize;
ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes) ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
ULONG PSs = Cache->PacketSize; ULONG PSs = Cache->PacketSize;
ULONG BFs = Cache->BlocksPerFrameSh; ULONG BFs = Cache->BlocksPerFrameSh;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
ULONG ReadBytes; ULONG ReadBytes;
PW_CACHE_ASYNC FirstWContext = NULL; PW_CACHE_ASYNC FirstWContext = NULL;
PW_CACHE_ASYNC PrevWContext = NULL; PW_CACHE_ASYNC PrevWContext = NULL;
@ -2710,15 +2716,15 @@ WCacheFlushAllRW(
Lba = List[0] & ~(PSs-1); Lba = List[0] & ~(PSs-1);
frame = Lba >> BFs; frame = Lba >> BFs;
firstLba = frame << BFs; firstLba = frame << BFs;
firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba); // firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs); // lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
block_array = Cache->FrameList[frame].Frame; block_array = Cache->FrameList[frame].Frame;
if(!block_array) { if(!block_array) {
BrutePoint(); BrutePoint();
continue;; continue;;
} }
// queue modify request // queue modify request
status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba, WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE); Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
// clear MODIFIED flag for queued blocks // clear MODIFIED flag for queued blocks
WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs); WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs);
@ -2827,15 +2833,15 @@ WCacheFlushBlocksRW(
lba_t firstLba; lba_t firstLba;
lba_t* List = Cache->CachedModifiedBlocksList; lba_t* List = Cache->CachedModifiedBlocksList;
lba_t Lba; lba_t Lba;
ULONG firstPos; // ULONG firstPos;
ULONG lastPos; // ULONG lastPos;
ULONG BSh = Cache->BlockSizeSh; ULONG BSh = Cache->BlockSizeSh;
ULONG BS = Cache->BlockSize; ULONG BS = Cache->BlockSize;
ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes) ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
ULONG PSs = Cache->PacketSize; ULONG PSs = Cache->PacketSize;
ULONG BFs = Cache->BlocksPerFrameSh; ULONG BFs = Cache->BlocksPerFrameSh;
PW_CACHE_ENTRY block_array; PW_CACHE_ENTRY block_array;
OSSTATUS status; // OSSTATUS status;
ULONG ReadBytes; ULONG ReadBytes;
PW_CACHE_ASYNC FirstWContext = NULL; PW_CACHE_ASYNC FirstWContext = NULL;
PW_CACHE_ASYNC PrevWContext = NULL; PW_CACHE_ASYNC PrevWContext = NULL;
@ -2850,8 +2856,8 @@ WCacheFlushBlocksRW(
for(Lba = _Lba & ~(PSs-1);Lba < lim ; Lba += PSs) { for(Lba = _Lba & ~(PSs-1);Lba < lim ; Lba += PSs) {
frame = Lba >> BFs; frame = Lba >> BFs;
firstLba = frame << BFs; firstLba = frame << BFs;
firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba); // firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs); // lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
block_array = Cache->FrameList[frame].Frame; block_array = Cache->FrameList[frame].Frame;
if(!block_array) { if(!block_array) {
// not cached block may be requested for flush // not cached block may be requested for flush
@ -2859,7 +2865,7 @@ WCacheFlushBlocksRW(
continue; continue;
} }
// queue modify request // queue modify request
status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba, WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE); Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
// clear MODIFIED flag for queued blocks // clear MODIFIED flag for queued blocks
WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs); WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs);

View file

@ -549,7 +549,7 @@ DiscardDelete:
if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) && if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
!(Fcb->FCBFlags & (UDF_FCB_DELETE_ON_CLOSE | !(Fcb->FCBFlags & (UDF_FCB_DELETE_ON_CLOSE |
UDF_FCB_DELETED /*| UDF_FCB_DELETED /*|
UDF_FCB_DIRECTORY /*| UDF_FCB_DIRECTORY |
UDF_FCB_READ_ONLY*/)) && UDF_FCB_READ_ONLY*/)) &&
!UDFIsAStreamDir(NextFileInfo)) { !UDFIsAStreamDir(NextFileInfo)) {
LONGLONG NtTime; LONGLONG NtTime;
@ -719,7 +719,7 @@ UDFCloseFileInfoChain(
ValidateFileInfo(fi); ValidateFileInfo(fi);
// acquire parent // acquire parent
if(ParentFI = fi->ParentFile) { if((ParentFI = fi->ParentFile)) {
ParentFcb = fi->Fcb->ParentFcb; ParentFcb = fi->Fcb->ParentFcb;
ASSERT(ParentFcb); ASSERT(ParentFcb);
ASSERT(ParentFcb->NTRequiredFCB); ASSERT(ParentFcb->NTRequiredFCB);
@ -734,7 +734,7 @@ UDFCloseFileInfoChain(
} }
// acquire current file/dir // acquire current file/dir
// we must assure that no more threads try to reuse this object // we must assure that no more threads try to reuse this object
if(Fcb = fi->Fcb) { if((Fcb = fi->Fcb)) {
UDF_CHECK_PAGING_IO_RESOURCE(Fcb->NTRequiredFCB); UDF_CHECK_PAGING_IO_RESOURCE(Fcb->NTRequiredFCB);
UDFAcquireResourceExclusive(&(Fcb->NTRequiredFCB->MainResource),TRUE); UDFAcquireResourceExclusive(&(Fcb->NTRequiredFCB->MainResource),TRUE);
ASSERT_REF(Fcb->ReferenceCount >= fi->RefCount); ASSERT_REF(Fcb->ReferenceCount >= fi->RefCount);

View file

@ -150,7 +150,7 @@ UDFCommonClose(
BOOLEAN AcquiredGD = FALSE; BOOLEAN AcquiredGD = FALSE;
PUDF_FILE_INFO fi; PUDF_FILE_INFO fi;
ULONG i = 0; ULONG i = 0;
ULONG clean_stat = 0; // ULONG clean_stat = 0;
// BOOLEAN CompleteIrp = TRUE; // BOOLEAN CompleteIrp = TRUE;
BOOLEAN PostRequest = FALSE; BOOLEAN PostRequest = FALSE;
@ -337,7 +337,7 @@ UDFCommonClose(
AdPrint(("UDF: ReferenceCount: %x\n",Fcb->ReferenceCount)); AdPrint(("UDF: ReferenceCount: %x\n",Fcb->ReferenceCount));
#endif // UDF_DBG #endif // UDF_DBG
// try to clean up as long chain as it is possible // try to clean up as long chain as it is possible
clean_stat = UDFCleanUpFcbChain(Vcb, fi, i, TRUE); UDFCleanUpFcbChain(Vcb, fi, i, TRUE);
try_exit: NOTHING; try_exit: NOTHING;
@ -426,7 +426,7 @@ UDFCleanUpFcbChain(
while(fi) { while(fi) {
// acquire parent // acquire parent
if(ParentFI = fi->ParentFile) { if((ParentFI = fi->ParentFile)) {
ASSERT(fi->Fcb); ASSERT(fi->Fcb);
ParentFcb = fi->Fcb->ParentFcb; ParentFcb = fi->Fcb->ParentFcb;
ASSERT(ParentFcb); ASSERT(ParentFcb);
@ -545,7 +545,7 @@ UDFCleanUpFcbChain(
fi->Dloc->CommonFcb = NULL; fi->Dloc->CommonFcb = NULL;
} }
if(CleanCode = UDFCleanUpFile__(Vcb, fi)) { if((CleanCode = UDFCleanUpFile__(Vcb, fi))) {
// Check, if we can uninitialize & deallocate CommonFcb part // Check, if we can uninitialize & deallocate CommonFcb part
// kill some cross links // kill some cross links
Fcb->FileInfo = NULL; Fcb->FileInfo = NULL;
@ -865,12 +865,12 @@ UDFBuildTreeItemsList(
} }
// walk through SDir (if any) // walk through SDir (if any)
if(SDirInfo = FileInfo->Dloc->SDirInfo) if((SDirInfo = FileInfo->Dloc->SDirInfo))
UDFBuildTreeItemsList(Vcb, SDirInfo, CheckItemProc, UDFBuildTreeItemsList(Vcb, SDirInfo, CheckItemProc,
PassedList, PassedListSize, FoundList, FoundListSize); PassedList, PassedListSize, FoundList, FoundListSize);
// walk through subsequent objects (if any) // walk through subsequent objects (if any)
if(hDirNdx = FileInfo->Dloc->DirIndex) { if((hDirNdx = FileInfo->Dloc->DirIndex)) {
// scan DirIndex // scan DirIndex
UDF_DIR_SCAN_CONTEXT ScanContext; UDF_DIR_SCAN_CONTEXT ScanContext;
@ -878,7 +878,7 @@ UDFBuildTreeItemsList(
PUDF_FILE_INFO CurFileInfo; PUDF_FILE_INFO CurFileInfo;
if(UDFDirIndexInitScan(FileInfo, &ScanContext, 2)) { if(UDFDirIndexInitScan(FileInfo, &ScanContext, 2)) {
while(DirNdx = UDFDirIndexScan(&ScanContext, &CurFileInfo)) { while((DirNdx = UDFDirIndexScan(&ScanContext, &CurFileInfo))) {
if(!CurFileInfo) if(!CurFileInfo)
continue; continue;
UDFBuildTreeItemsList(Vcb, CurFileInfo, CheckItemProc, UDFBuildTreeItemsList(Vcb, CurFileInfo, CheckItemProc,

View file

@ -884,7 +884,7 @@ notify_media_change:
// Copy the data from the Vcb. // Copy the data from the Vcb.
((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData = CDROM_DISK_DATA_TRACK; ((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData = CDROM_DISK_DATA_TRACK;
for(TrackNumber=Vcb->FirstTrackNum; TrackNumber<Vcb->LastTrackNum; TrackNumber++) { for(TrackNumber=Vcb->FirstTrackNum; TrackNumber<Vcb->LastTrackNum; TrackNumber++) {
if(Vcb->TrackMap[TrackNumber].TrackParam & Trk_QSubChan_Type_Mask == if((Vcb->TrackMap[TrackNumber].TrackParam & Trk_QSubChan_Type_Mask) ==
Trk_QSubChan_Type_Audio) { Trk_QSubChan_Type_Audio) {
((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData |= CDROM_DISK_AUDIO_TRACK; ((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData |= CDROM_DISK_AUDIO_TRACK;
break; break;
@ -1137,7 +1137,7 @@ UDFGetFileAllocModeFromICB(
PEXTENDED_IO_STACK_LOCATION IrpSp = PEXTENDED_IO_STACK_LOCATION IrpSp =
(PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp ); (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp );
PVCB Vcb; // PVCB Vcb;
PtrUDFFCB Fcb; PtrUDFFCB Fcb;
PtrUDFCCB Ccb; PtrUDFCCB Ccb;
PUDF_GET_FILE_ALLOCATION_MODE_OUT OutputBuffer; PUDF_GET_FILE_ALLOCATION_MODE_OUT OutputBuffer;
@ -1148,7 +1148,7 @@ UDFGetFileAllocModeFromICB(
// user volume opens. // user volume opens.
Ccb = (PtrUDFCCB)(IrpSp->FileObject->FsContext2); Ccb = (PtrUDFCCB)(IrpSp->FileObject->FsContext2);
Fcb = Ccb->Fcb; Fcb = Ccb->Fcb;
Vcb = Fcb->Vcb; // Vcb = Fcb->Vcb;
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
if(IrpSp->Parameters.FileSystemControl.OutputBufferLength < sizeof(UDF_GET_FILE_ALLOCATION_MODE_OUT)) if(IrpSp->Parameters.FileSystemControl.OutputBufferLength < sizeof(UDF_GET_FILE_ALLOCATION_MODE_OUT))

View file

@ -545,6 +545,9 @@ UDFQueryDirectory(
NamesInfo->FileIndex = NextMatch; NamesInfo->FileIndex = NextMatch;
NamesInfo->FileNameLength = FileNameBytes; NamesInfo->FileNameLength = FileNameBytes;
break; break;
default:
break;
} }
if (FileNameBytes) { if (FileNameBytes) {
// This is a Unicode name, we can copy the bytes directly. // This is a Unicode name, we can copy the bytes directly.
@ -634,7 +637,7 @@ UDFFindNextMatch(
#define IgnoreCase (FNM_Flags & UDF_FNM_FLAG_IGNORE_CASE) #define IgnoreCase (FNM_Flags & UDF_FNM_FLAG_IGNORE_CASE)
#define ContainsWC (FNM_Flags & UDF_FNM_FLAG_CONTAINS_WC) #define ContainsWC (FNM_Flags & UDF_FNM_FLAG_CONTAINS_WC)
for(;DirNdx = UDFDirIndex(hDirIndex, EntryNumber);EntryNumber++) { for(;(DirNdx = UDFDirIndex(hDirIndex, EntryNumber));EntryNumber++) {
if(!DirNdx->FName.Buffer || if(!DirNdx->FName.Buffer ||
UDFIsDeleted(DirNdx)) UDFIsDeleted(DirNdx))
continue; continue;

View file

@ -316,10 +316,14 @@ UDFPhWriteSynchronous(
#ifdef DBG #ifdef DBG
if(UDF_SIMULATE_WRITES) { if(UDF_SIMULATE_WRITES) {
/* FIXME ReactOS
If this function is to force a read from the bufffer to simulate any segfaults, then it makes sense.
Else, this forloop is useless.
UCHAR a; UCHAR a;
for(ULONG i=0; i<Length; i++) { for(ULONG i=0; i<Length; i++) {
a = ((PUCHAR)Buffer)[i]; a = ((PUCHAR)Buffer)[i];
} }
*/
*WrittenBytes = Length; *WrittenBytes = Length;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
@ -621,7 +625,8 @@ UDFNotifyVolumeEvent(
IN ULONG EventCode IN ULONG EventCode
) )
{ {
if(!FsRtlNotifyVolumeEvent) /* ReactOS FIXME This is always true, and we return anyway. */
// if(!FsRtlNotifyVolumeEvent)
return; return;
//FsRtlNotifyVolumeEvent(FileObject, EventCode); //FsRtlNotifyVolumeEvent(FileObject, EventCode);
} // end UDFNotifyVolumeEvent() } // end UDFNotifyVolumeEvent()

View file

@ -260,7 +260,7 @@ UDFFastIoQueryStdInfo(
LONG Length = sizeof(FILE_STANDARD_INFORMATION); LONG Length = sizeof(FILE_STANDARD_INFORMATION);
PtrUDFFCB Fcb; PtrUDFFCB Fcb;
PtrUDFCCB Ccb; PtrUDFCCB Ccb;
PtrUDFNTRequiredFCB NtReqFcb = NULL; // PtrUDFNTRequiredFCB NtReqFcb = NULL;
// BOOLEAN MainResourceAcquired = FALSE; // BOOLEAN MainResourceAcquired = FALSE;
FsRtlEnterFileSystem(); FsRtlEnterFileSystem();
@ -277,7 +277,7 @@ UDFFastIoQueryStdInfo(
ASSERT(Ccb); ASSERT(Ccb);
Fcb = Ccb->Fcb; Fcb = Ccb->Fcb;
ASSERT(Fcb); ASSERT(Fcb);
NtReqFcb = Fcb->NTRequiredFCB; // NtReqFcb = Fcb->NTRequiredFCB;
//Fcb->Vcb->VCBFlags |= UDF_VCB_SKIP_EJECT_CHECK; //Fcb->Vcb->VCBFlags |= UDF_VCB_SKIP_EJECT_CHECK;
/* /*

View file

@ -544,7 +544,7 @@ UDFGetBasicInformation(
_SEH2_TRY { _SEH2_TRY {
if(*PtrReturnedLength < sizeof(FILE_BASIC_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_BASIC_INFORMATION)) {
try_return(RC = STATUS_BUFFER_OVERFLOW); try_return(RC = STATUS_BUFFER_OVERFLOW);
} }
@ -619,13 +619,13 @@ UDFGetStandardInformation(
{ {
NTSTATUS RC = STATUS_SUCCESS; NTSTATUS RC = STATUS_SUCCESS;
PUDF_FILE_INFO FileInfo; PUDF_FILE_INFO FileInfo;
PVCB Vcb; // PVCB Vcb;
AdPrint(("UDFGetStandardInformation: \n")); AdPrint(("UDFGetStandardInformation: \n"));
_SEH2_TRY { _SEH2_TRY {
if(*PtrReturnedLength < sizeof(FILE_STANDARD_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_STANDARD_INFORMATION)) {
try_return(RC = STATUS_BUFFER_OVERFLOW); try_return(RC = STATUS_BUFFER_OVERFLOW);
} }
@ -639,7 +639,7 @@ UDFGetStandardInformation(
AdPrint(("!!!! GetStandardInfo to unopened file !!!!\n")); AdPrint(("!!!! GetStandardInfo to unopened file !!!!\n"));
try_return(RC = STATUS_INVALID_PARAMETER); try_return(RC = STATUS_INVALID_PARAMETER);
} }
Vcb = Fcb->Vcb; // Vcb = Fcb->Vcb;
PtrBuffer->NumberOfLinks = UDFGetFileLinkCount(FileInfo); PtrBuffer->NumberOfLinks = UDFGetFileLinkCount(FileInfo);
PtrBuffer->DeletePending = (Fcb->FCBFlags & UDF_FCB_DELETE_ON_CLOSE) ? TRUE : FALSE; PtrBuffer->DeletePending = (Fcb->FCBFlags & UDF_FCB_DELETE_ON_CLOSE) ? TRUE : FALSE;
@ -686,7 +686,7 @@ UDFGetNetworkInformation(
_SEH2_TRY { _SEH2_TRY {
if(*PtrReturnedLength < sizeof(FILE_NETWORK_OPEN_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_NETWORK_OPEN_INFORMATION)) {
try_return(RC = STATUS_BUFFER_OVERFLOW); try_return(RC = STATUS_BUFFER_OVERFLOW);
} }
@ -752,7 +752,7 @@ UDFGetInternalInformation(
_SEH2_TRY { _SEH2_TRY {
if(*PtrReturnedLength < sizeof(FILE_INTERNAL_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_INTERNAL_INFORMATION)) {
try_return(RC = STATUS_BUFFER_OVERFLOW); try_return(RC = STATUS_BUFFER_OVERFLOW);
} }
@ -803,7 +803,7 @@ UDFGetEaInformation(
_SEH2_TRY { _SEH2_TRY {
if(*PtrReturnedLength < sizeof(FILE_EA_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_EA_INFORMATION)) {
try_return(RC = STATUS_BUFFER_OVERFLOW); try_return(RC = STATUS_BUFFER_OVERFLOW);
} }
@ -903,7 +903,7 @@ UDFGetPositionInformation(
IN OUT PLONG PtrReturnedLength IN OUT PLONG PtrReturnedLength
) )
{ {
if(*PtrReturnedLength < sizeof(FILE_POSITION_INFORMATION)) { if(*PtrReturnedLength < (LONG)sizeof(FILE_POSITION_INFORMATION)) {
return(STATUS_BUFFER_OVERFLOW); return(STATUS_BUFFER_OVERFLOW);
} }
PtrBuffer->CurrentByteOffset = FileObject->CurrentByteOffset; PtrBuffer->CurrentByteOffset = FileObject->CurrentByteOffset;
@ -960,7 +960,7 @@ UDFGetFileStreamInformation(
NTFileInfo = (PFILE_BOTH_DIR_INFORMATION)MyAllocatePool__(NonPagedPool, sizeof(FILE_BOTH_DIR_INFORMATION)+UDF_NAME_LEN*sizeof(WCHAR)); NTFileInfo = (PFILE_BOTH_DIR_INFORMATION)MyAllocatePool__(NonPagedPool, sizeof(FILE_BOTH_DIR_INFORMATION)+UDF_NAME_LEN*sizeof(WCHAR));
if(!NTFileInfo) try_return(RC = STATUS_INSUFFICIENT_RESOURCES); if(!NTFileInfo) try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
for(i=2; SDirIndex = UDFDirIndex(hSDirIndex,i); i++) { for(i=2; (SDirIndex = UDFDirIndex(hSDirIndex,i)); i++) {
if((SDirIndex->FI_Flags & UDF_FI_FLAG_FI_INTERNAL) || if((SDirIndex->FI_Flags & UDF_FI_FLAG_FI_INTERNAL) ||
UDFIsDeleted(SDirIndex) || UDFIsDeleted(SDirIndex) ||
!SDirIndex->FName.Buffer ) !SDirIndex->FName.Buffer )
@ -1176,7 +1176,7 @@ UDFMarkStreamsForDeletion(
UDFDirIndexInitScan(SDirInfo, &ScanContext, 2)) { UDFDirIndexInitScan(SDirInfo, &ScanContext, 2)) {
// Check if we can delete Streams // Check if we can delete Streams
while(DirNdx = UDFDirIndexScan(&ScanContext, &FileInfo)) { while((DirNdx = UDFDirIndexScan(&ScanContext, &FileInfo))) {
if(!FileInfo) if(!FileInfo)
continue; continue;
if(FileInfo->Fcb) { if(FileInfo->Fcb) {
@ -1631,7 +1631,7 @@ UDFSetEOF(
PDIR_INDEX_ITEM DirNdx; PDIR_INDEX_ITEM DirNdx;
PtrUDFNTRequiredFCB NtReqFcb = NULL; PtrUDFNTRequiredFCB NtReqFcb = NULL;
LONGLONG OldFileSize; LONGLONG OldFileSize;
BOOLEAN ZeroBlock; // BOOLEAN ZeroBlock;
BOOLEAN CacheMapInitialized = FALSE; BOOLEAN CacheMapInitialized = FALSE;
BOOLEAN AcquiredPagingIo = FALSE; BOOLEAN AcquiredPagingIo = FALSE;
@ -1712,8 +1712,10 @@ UDFSetEOF(
// Yes. Do the FSD specific stuff i.e. increase reserved // Yes. Do the FSD specific stuff i.e. increase reserved
// space on disk. // space on disk.
/*
if (FileObject->PrivateCacheMap) if (FileObject->PrivateCacheMap)
ZeroBlock = TRUE; ZeroBlock = TRUE;
*/
// reference file to pretend that it is opened // reference file to pretend that it is opened
UDFReferenceFile__(Fcb->FileInfo); UDFReferenceFile__(Fcb->FileInfo);
@ -1828,7 +1830,7 @@ UDFSetEOF(
UDFZeroDataEx(NtReqFcb, UDFZeroDataEx(NtReqFcb,
OldFileSize, OldFileSize,
PtrBuffer->EndOfFile.QuadPart - OldFileSize, PtrBuffer->EndOfFile.QuadPart - OldFileSize,
TRUE/*CanWait, Vcb, FileObject); TRUE // CanWait, Vcb, FileObject);
}*/ }*/
Fcb->NTRequiredFCB->NtReqFCBFlags |= UDF_NTREQ_FCB_MODIFIED; Fcb->NTRequiredFCB->NtReqFCBFlags |= UDF_NTREQ_FCB_MODIFIED;

View file

@ -293,7 +293,7 @@ UDFFlushAFile(
) )
{ {
BOOLEAN SetArchive = FALSE; BOOLEAN SetArchive = FALSE;
BOOLEAN PurgeCache = FALSE; // BOOLEAN PurgeCache = FALSE;
ULONG ret_val = 0; ULONG ret_val = 0;
KdPrint(("UDFFlushAFile: \n")); KdPrint(("UDFFlushAFile: \n"));
@ -339,7 +339,7 @@ UDFFlushAFile(
// notice, that we should purge cache // notice, that we should purge cache
// we can't do it now, because it may cause last Close // we can't do it now, because it may cause last Close
// request & thus, structure deallocation // request & thus, structure deallocation
PurgeCache = TRUE; // PurgeCache = TRUE;
#ifndef UDF_READ_ONLY_BUILD #ifndef UDF_READ_ONLY_BUILD
if(Ccb) { if(Ccb) {
@ -420,7 +420,7 @@ UDFFlushADirectory(
) )
{ {
KdPrint(("UDFFlushADirectory: \n")); KdPrint(("UDFFlushADirectory: \n"));
PDIR_INDEX_HDR hDI; // PDIR_INDEX_HDR hDI;
PDIR_INDEX_ITEM DI; PDIR_INDEX_ITEM DI;
// BOOLEAN Referenced = FALSE; // BOOLEAN Referenced = FALSE;
ULONG ret_val = 0; ULONG ret_val = 0;
@ -429,7 +429,7 @@ UDFFlushADirectory(
return 0; return 0;
if(!FI || !FI->Dloc || !FI->Dloc->DirIndex) goto SkipFlushDir; if(!FI || !FI->Dloc || !FI->Dloc->DirIndex) goto SkipFlushDir;
hDI = FI->Dloc->DirIndex; // hDI = FI->Dloc->DirIndex;
// Flush Security if required // Flush Security if required
_SEH2_TRY { _SEH2_TRY {
@ -455,7 +455,7 @@ UDFFlushADirectory(
PUDF_FILE_INFO tempFI; PUDF_FILE_INFO tempFI;
if(UDFDirIndexInitScan(FI, &ScanContext, 2)) { if(UDFDirIndexInitScan(FI, &ScanContext, 2)) {
while(DI = UDFDirIndexScan(&ScanContext, &tempFI)) { while((DI = UDFDirIndexScan(&ScanContext, &tempFI))) {
// Flush Dir entry // Flush Dir entry
_SEH2_TRY { _SEH2_TRY {
if(!tempFI) continue; if(!tempFI) continue;

View file

@ -851,7 +851,7 @@ UDFStartEjectWaiter(
IN PVCB Vcb IN PVCB Vcb
) )
{ {
NTSTATUS RC; // NTSTATUS RC;
PREVENT_MEDIA_REMOVAL_USER_IN Buff; PREVENT_MEDIA_REMOVAL_USER_IN Buff;
KdPrint(("UDFStartEjectWaiter:\n")); KdPrint(("UDFStartEjectWaiter:\n"));
@ -879,11 +879,11 @@ UDFStartEjectWaiter(
// prevent media removal // prevent media removal
KdPrint(("UDFStartEjectWaiter: lock media\n")); KdPrint(("UDFStartEjectWaiter: lock media\n"));
Buff.PreventMediaRemoval = TRUE; Buff.PreventMediaRemoval = TRUE;
RC = UDFTSendIOCTL( IOCTL_STORAGE_MEDIA_REMOVAL, UDFTSendIOCTL( IOCTL_STORAGE_MEDIA_REMOVAL,
Vcb, Vcb,
&Buff,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN), &Buff,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN),
NULL,0, NULL,0,
FALSE,NULL ); FALSE,NULL );
Vcb->VCBFlags |= UDF_VCB_FLAGS_MEDIA_LOCKED; Vcb->VCBFlags |= UDF_VCB_FLAGS_MEDIA_LOCKED;
} }
KdPrint(("UDFStartEjectWaiter: prepare to start\n")); KdPrint(("UDFStartEjectWaiter: prepare to start\n"));
@ -1267,9 +1267,7 @@ bl_unwind_1:
DirNdx->FileCharacteristics = FILE_DIRECTORY; DirNdx->FileCharacteristics = FILE_DIRECTORY;
DirNdx->FI_Flags = UDF_FI_FLAG_SYS_ATTR; DirNdx->FI_Flags = UDF_FI_FLAG_SYS_ATTR;
DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY; DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY;
DirNdx->FName.Buffer = L"."; RtlInitUnicodeString(&DirNdx->FName, L".");
DirNdx->FName.Length =
(DirNdx->FName.MaximumLength = sizeof(L".")) - sizeof(WCHAR);
DirNdx->FileInfo = RootFcb->FileInfo; DirNdx->FileInfo = RootFcb->FileInfo;
DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL | HASH_KEEP_NAME); DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL | HASH_KEEP_NAME);
@ -1279,9 +1277,7 @@ bl_unwind_1:
DirNdx->FI_Flags |= UDF_FI_FLAG_FI_INTERNAL; DirNdx->FI_Flags |= UDF_FI_FLAG_FI_INTERNAL;
} }
DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY; DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY;
DirNdx->FName.Buffer = L"Blank.CD"; RtlInitUnicodeString(&DirNdx->FName, L"Blank.CD");
DirNdx->FName.Length =
(DirNdx->FName.MaximumLength = sizeof(L"Blank.CD")) - sizeof(WCHAR);
DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL); DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL);
RootFcb->FileInfo->Dloc->DirIndex = hDirNdx; RootFcb->FileInfo->Dloc->DirIndex = hDirNdx;
@ -1820,12 +1816,12 @@ UDFLockVolume(
IoAcquireVpbSpinLock( &SavedIrql ); IoAcquireVpbSpinLock( &SavedIrql );
if (!(Vcb->Vpb->Flags & VPB_LOCKED) && if (!(Vcb->Vpb->Flags & VPB_LOCKED) &&
(Vcb->VolumeLockPID == -1) && (Vcb->VolumeLockPID == (ULONG)-1) &&
(Vcb->VCBOpenCount <= UDF_RESIDUAL_REFERENCE+1) && (Vcb->VCBOpenCount <= UDF_RESIDUAL_REFERENCE+1) &&
(Vcb->Vpb->ReferenceCount == 2)) { (Vcb->Vpb->ReferenceCount == 2)) {
// Mark volume as locked // Mark volume as locked
if(PID == -1) { if(PID == (ULONG)-1) {
Vcb->Vpb->Flags |= VPB_LOCKED; Vcb->Vpb->Flags |= VPB_LOCKED;
} }
Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_LOCKED; Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_LOCKED;
@ -2075,7 +2071,7 @@ UDFGetVolumeBitmap(
IN PIRP Irp IN PIRP Irp
) )
{ {
NTSTATUS RC; // NTSTATUS RC;
PEXTENDED_IO_STACK_LOCATION IrpSp = PEXTENDED_IO_STACK_LOCATION IrpSp =
(PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp ); (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp );
@ -2095,7 +2091,8 @@ UDFGetVolumeBitmap(
LARGE_INTEGER StartingLcn; LARGE_INTEGER StartingLcn;
PVOLUME_BITMAP_BUFFER OutputBuffer; PVOLUME_BITMAP_BUFFER OutputBuffer;
ULONG i, lim; ULONG i, lim;
PULONG FSBM, Dest; PULONG FSBM;
// PULONG Dest;
ULONG LSh; ULONG LSh;
// Decode the file object, the only type of opens we accept are // Decode the file object, the only type of opens we accept are
@ -2149,12 +2146,12 @@ UDFGetVolumeBitmap(
if (OutputBufferLength < (DesiredClusters + 7) / 8) { if (OutputBufferLength < (DesiredClusters + 7) / 8) {
BytesToCopy = OutputBufferLength; BytesToCopy = OutputBufferLength;
RC = STATUS_BUFFER_OVERFLOW; // RC = STATUS_BUFFER_OVERFLOW;
} else { } else {
BytesToCopy = (DesiredClusters + 7) / 8; BytesToCopy = (DesiredClusters + 7) / 8;
RC = STATUS_SUCCESS; // RC = STATUS_SUCCESS;
} }
UDFAcquireResourceExclusive(&(Vcb->VCBResource), TRUE ); UDFAcquireResourceExclusive(&(Vcb->VCBResource), TRUE );
@ -2169,7 +2166,7 @@ UDFGetVolumeBitmap(
lim = BytesToCopy * 8; lim = BytesToCopy * 8;
FSBM = (PULONG)(Vcb->FSBM_Bitmap); FSBM = (PULONG)(Vcb->FSBM_Bitmap);
LSh = Vcb->LB2B_Bits; LSh = Vcb->LB2B_Bits;
Dest = (PULONG)(&OutputBuffer->Buffer[0]); // Dest = (PULONG)(&OutputBuffer->Buffer[0]);
for(i=StartingCluster & ~7; i<lim; i++) { for(i=StartingCluster & ~7; i<lim; i++) {
if(UDFGetFreeBit(FSBM, i<<LSh)) if(UDFGetFreeBit(FSBM, i<<LSh))

View file

@ -109,7 +109,7 @@ UDFCommonLockControl(
NTSTATUS RC = STATUS_SUCCESS; NTSTATUS RC = STATUS_SUCCESS;
PIO_STACK_LOCATION IrpSp = NULL; PIO_STACK_LOCATION IrpSp = NULL;
//IO_STATUS_BLOCK LocalIoStatus; //IO_STATUS_BLOCK LocalIoStatus;
BOOLEAN CompleteRequest = FALSE; // BOOLEAN CompleteRequest = FALSE;
BOOLEAN PostRequest = FALSE; BOOLEAN PostRequest = FALSE;
BOOLEAN CanWait = FALSE; BOOLEAN CanWait = FALSE;
PtrUDFNTRequiredFCB NtReqFcb = NULL; PtrUDFNTRequiredFCB NtReqFcb = NULL;
@ -137,7 +137,7 @@ UDFCommonLockControl(
if ( (Fcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_VCB) || if ( (Fcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_VCB) ||
(Fcb->FCBFlags & UDF_FCB_DIRECTORY)) { (Fcb->FCBFlags & UDF_FCB_DIRECTORY)) {
CompleteRequest = TRUE; // CompleteRequest = TRUE;
try_return(RC = STATUS_INVALID_PARAMETER); try_return(RC = STATUS_INVALID_PARAMETER);
} }
@ -153,7 +153,7 @@ UDFCommonLockControl(
AcquiredFCB = TRUE; AcquiredFCB = TRUE;
RC = FsRtlProcessFileLock(&(NtReqFcb->FileLock), Irp, NULL); RC = FsRtlProcessFileLock(&(NtReqFcb->FileLock), Irp, NULL);
CompleteRequest = TRUE; // CompleteRequest = TRUE;
try_exit: NOTHING; try_exit: NOTHING;
@ -253,7 +253,7 @@ UDFFastLock (
// Now call the FsRtl routine to do the actual processing of the // Now call the FsRtl routine to do the actual processing of the
// Lock request // Lock request
if (Results = FsRtlFastLock( &(Fcb->NTRequiredFCB->FileLock), if ((Results = FsRtlFastLock( &(Fcb->NTRequiredFCB->FileLock),
FileObject, FileObject,
FileOffset, FileOffset,
Length, Length,
@ -263,7 +263,7 @@ UDFFastLock (
ExclusiveLock, ExclusiveLock,
IoStatus, IoStatus,
NULL, NULL,
FALSE )) { FALSE ))) {
// Set the flag indicating if Fast I/O is possible // Set the flag indicating if Fast I/O is possible
Fcb->NTRequiredFCB->CommonFCBHeader.IsFastIoPossible = UDFIsFastIoPossible(Fcb); Fcb->NTRequiredFCB->CommonFCBHeader.IsFastIoPossible = UDFIsFastIoPossible(Fcb);

View file

@ -1750,7 +1750,7 @@ UDFGetMediaClass(
typedef ULONG typedef ULONG
(*ptrUDFGetParameter)( (*ptrUDFGetParameter)(
IN PVCB Vcb, IN PVCB Vcb,
IN PWSTR Name, IN PCWSTR Name,
IN ULONG DefValue IN ULONG DefValue
); );
@ -1759,7 +1759,7 @@ UDFUpdateCompatOption(
PVCB Vcb, PVCB Vcb,
BOOLEAN Update, BOOLEAN Update,
BOOLEAN UseCfg, BOOLEAN UseCfg,
PWCHAR Name, PCWSTR Name,
ULONG Flag, ULONG Flag,
BOOLEAN Default BOOLEAN Default
) )
@ -1824,7 +1824,7 @@ UDFReadRegKeys(
if(!Vcb->BM_FlushPriod) { if(!Vcb->BM_FlushPriod) {
Vcb->BM_FlushPriod = UDF_DEFAULT_BM_FLUSH_TIMEOUT; Vcb->BM_FlushPriod = UDF_DEFAULT_BM_FLUSH_TIMEOUT;
} else } else
if(Vcb->BM_FlushPriod == -1) { if(Vcb->BM_FlushPriod == (ULONG)-1) {
Vcb->BM_FlushPriod = 0; Vcb->BM_FlushPriod = 0;
} }
Vcb->Tree_FlushPriod = UDFGetParameter(Vcb, UDF_TREE_FLUSH_PERIOD_NAME, Vcb->Tree_FlushPriod = UDFGetParameter(Vcb, UDF_TREE_FLUSH_PERIOD_NAME,
@ -1832,7 +1832,7 @@ UDFReadRegKeys(
if(!Vcb->Tree_FlushPriod) { if(!Vcb->Tree_FlushPriod) {
Vcb->Tree_FlushPriod = UDF_DEFAULT_TREE_FLUSH_TIMEOUT; Vcb->Tree_FlushPriod = UDF_DEFAULT_TREE_FLUSH_TIMEOUT;
} else } else
if(Vcb->Tree_FlushPriod == -1) { if(Vcb->Tree_FlushPriod == (ULONG)-1) {
Vcb->Tree_FlushPriod = 0; Vcb->Tree_FlushPriod = 0;
} }
Vcb->SkipCountLimit = UDFGetParameter(Vcb, UDF_NO_UPDATE_PERIOD_NAME, Vcb->SkipCountLimit = UDFGetParameter(Vcb, UDF_NO_UPDATE_PERIOD_NAME,
@ -1982,7 +1982,7 @@ UDFReadRegKeys(
ULONG ULONG
UDFGetRegParameter( UDFGetRegParameter(
IN PVCB Vcb, IN PVCB Vcb,
IN PWSTR Name, IN PCWSTR Name,
IN ULONG DefValue IN ULONG DefValue
) )
{ {
@ -1996,7 +1996,7 @@ UDFGetRegParameter(
ULONG ULONG
UDFGetCfgParameter( UDFGetCfgParameter(
IN PVCB Vcb, IN PVCB Vcb,
IN PWSTR Name, IN PCWSTR Name,
IN ULONG DefValue IN ULONG DefValue
) )
{ {
@ -2221,9 +2221,9 @@ UDFReleaseVCB(
ULONG ULONG
UDFRegCheckParameterValue( UDFRegCheckParameterValue(
IN PUNICODE_STRING RegistryPath, IN PUNICODE_STRING RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PUNICODE_STRING PtrVolumePath, IN PUNICODE_STRING PtrVolumePath,
IN PWSTR DefaultPath, IN PCWSTR DefaultPath,
IN ULONG DefValue IN ULONG DefValue
) )
{ {
@ -2357,19 +2357,19 @@ UDFRegCheckParameterValue(
// *** Read GLOBAL_DEFAULTS from // *** Read GLOBAL_DEFAULTS from
// \DwUdf\Parameters_Unknown\ // "\DwUdf\Parameters_Unknown\"
status = RegTGetDwordValue(NULL, paramPath.Buffer, Name, &val); status = RegTGetDwordValue(NULL, paramPath.Buffer, Name, &val);
// *** Read DEV_CLASS_SPEC_DEFAULTS (if any) from // *** Read DEV_CLASS_SPEC_DEFAULTS (if any) from
// \DwUdf\Parameters_%DevClass%\ // "\DwUdf\Parameters_%DevClass%\"
if(DefaultPath) { if(DefaultPath) {
status = RegTGetDwordValue(NULL, defaultParamPath.Buffer, Name, &val); status = RegTGetDwordValue(NULL, defaultParamPath.Buffer, Name, &val);
} }
// *** Read DEV_SPEC_PARAMS from (if device supports GetDevName) // *** Read DEV_SPEC_PARAMS from (if device supports GetDevName)
// \DwUdf\Parameters\%DevName%\ // "\DwUdf\Parameters\%DevName%\"
status = RegTGetDwordValue(NULL, paramDevPath.Buffer, Name, &val); status = RegTGetDwordValue(NULL, paramDevPath.Buffer, Name, &val);

View file

@ -414,7 +414,7 @@ UDFPnpRemove (
// The device will be going away. Remove our lock (benign // The device will be going away. Remove our lock (benign
// if we never had it). // if we never had it).
if((Vcb->Vpb->Flags & VPB_LOCKED) || if((Vcb->Vpb->Flags & VPB_LOCKED) ||
(Vcb->VolumeLockPID != -1) ) { (Vcb->VolumeLockPID != (ULONG)-1) ) {
Vcb->Vpb->Flags &= ~VPB_LOCKED; Vcb->Vpb->Flags &= ~VPB_LOCKED;
Vcb->VCBFlags &= ~UDF_VCB_FLAGS_VOLUME_LOCKED; Vcb->VCBFlags &= ~UDF_VCB_FLAGS_VOLUME_LOCKED;
Vcb->VolumeLockFileObject = NULL; Vcb->VolumeLockFileObject = NULL;
@ -628,7 +628,7 @@ try_exit: NOTHING;
return RC; return RC;
} }
/* /*
NTSTATUS NTSTATUS
UDFPnpCancelRemove ( UDFPnpCancelRemove (
PtrUDFIrpContext PtrIrpContext, PtrUDFIrpContext PtrIrpContext,
@ -636,6 +636,7 @@ UDFPnpCancelRemove (
PVCB Vcb PVCB Vcb
) )
*/
/*++ /*++
Routine Description: Routine Description:

View file

@ -658,13 +658,13 @@ UDFReadRegKeys(
extern ULONG UDFGetRegParameter( extern ULONG UDFGetRegParameter(
IN PVCB Vcb, IN PVCB Vcb,
IN PWSTR Name, IN PCWSTR Name,
IN ULONG DefValue = 0); IN ULONG DefValue = 0);
extern ULONG extern ULONG
UDFGetCfgParameter( UDFGetCfgParameter(
IN PVCB Vcb, IN PVCB Vcb,
IN PWSTR Name, IN PCWSTR Name,
IN ULONG DefValue IN ULONG DefValue
); );
@ -673,9 +673,9 @@ extern VOID UDFReleaseVCB(
extern ULONG UDFRegCheckParameterValue( extern ULONG UDFRegCheckParameterValue(
IN PUNICODE_STRING RegistryPath, IN PUNICODE_STRING RegistryPath,
IN PWSTR Name, IN PCWSTR Name,
IN PUNICODE_STRING PtrVolumePath, IN PUNICODE_STRING PtrVolumePath,
IN PWSTR DefaultPath, IN PCWSTR DefaultPath,
IN ULONG DefValue = 0); IN ULONG DefValue = 0);
extern VOID UDFInitializeIrpContextFromLite ( extern VOID UDFInitializeIrpContextFromLite (

View file

@ -452,7 +452,7 @@ UDFCommonRead(
NonBufferedIo = TRUE; NonBufferedIo = TRUE;
} }
if(ByteOffset.HighPart == 0xFFFFFFFF) { if(ByteOffset.HighPart == -1) {
if(ByteOffset.LowPart == FILE_USE_FILE_POINTER_POSITION) { if(ByteOffset.LowPart == FILE_USE_FILE_POINTER_POSITION) {
ByteOffset = FileObject->CurrentByteOffset; ByteOffset = FileObject->CurrentByteOffset;
} }

View file

@ -498,12 +498,12 @@ DbgWaitForSingleObject_(
{ {
PLARGE_INTEGER to; PLARGE_INTEGER to;
LARGE_INTEGER dto; LARGE_INTEGER dto;
LARGE_INTEGER cto; // LARGE_INTEGER cto;
NTSTATUS RC; NTSTATUS RC;
ULONG c = 20; ULONG c = 20;
dto.QuadPart = -5LL*1000000LL*10LL; // 5 sec dto.QuadPart = -5LL*1000000LL*10LL; // 5 sec
cto.QuadPart = Timeout->QuadPart; // cto.QuadPart = Timeout->QuadPart;
if(Timeout) { if(Timeout) {
if(dto.QuadPart > Timeout->QuadPart) { if(dto.QuadPart > Timeout->QuadPart) {
to = Timeout; to = Timeout;

View file

@ -1151,7 +1151,7 @@ UDFGetTotalSpace(
s+=Vcb->Partitions[i].PartitionLen; s+=Vcb->Partitions[i].PartitionLen;
} }
} else { } else {
if(s & ((int64)1 << 64)) s=0; if(s & ((int64)1 << 63)) s=0; /* FIXME ReactOS this shift value was 64, which is undefiened behavior. */
s= Vcb->LastPossibleLBA - Vcb->Partitions[0].PartitionRoot; s= Vcb->LastPossibleLBA - Vcb->Partitions[0].PartitionRoot;
} }
return s >> Vcb->LB2B_Bits; return s >> Vcb->LB2B_Bits;
@ -1197,9 +1197,13 @@ UDFIsBlockAllocated(
#ifdef _X86_ #ifdef _X86_
#ifdef _MSC_VER
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
#ifdef _MSC_VER
__declspec (naked) __declspec (naked)
#endif
BOOLEAN BOOLEAN
__fastcall __fastcall
UDFGetBit__( UDFGetBit__(
@ -1233,7 +1237,9 @@ UDFGetBit__(
#endif #endif
} // end UDFGetBit__() } // end UDFGetBit__()
#ifdef _MSC_VER
__declspec (naked) __declspec (naked)
#endif
void void
__fastcall __fastcall
UDFSetBit__( UDFSetBit__(
@ -1339,7 +1345,9 @@ EO_sb_loop:
#endif #endif
} // end UDFSetBits__() } // end UDFSetBits__()
#ifdef _MSC_VER
__declspec (naked) __declspec (naked)
#endif
void void
__fastcall __fastcall
UDFClrBit__( UDFClrBit__(
@ -1445,5 +1453,7 @@ EO_cp_loop:
#endif #endif
} // end UDFClrBits__() } // end UDFClrBits__()
#ifdef _MSC_VER
#pragma warning(default:4035) #pragma warning(default:4035)
#endif
#endif // _X86_ #endif // _X86_

View file

@ -236,11 +236,15 @@ UDFDirIndexTrunc(
} // end UDFDirIndexTrunc() } // end UDFDirIndexTrunc()
#if defined _X86_ && !defined UDF_LIMIT_DIR_SIZE #if defined _X86_ && !defined UDF_LIMIT_DIR_SIZE
#ifdef _MSC_VER
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
/* /*
This routine returns pointer to DirIndex item with index i. This routine returns pointer to DirIndex item with index i.
*/ */
#ifdef _MSC_VER
__declspec (naked) __declspec (naked)
#endif
PDIR_INDEX_ITEM PDIR_INDEX_ITEM
__fastcall __fastcall
UDFDirIndex( UDFDirIndex(
@ -299,7 +303,9 @@ udi_OK:
return NULL; return NULL;
#endif #endif
} }
#ifdef _MSC_VER
#pragma warning(default:4035) #pragma warning(default:4035)
#endif
#endif // _X86_ #endif // _X86_
/* /*
@ -397,7 +403,7 @@ UDFDirIndexScan(
} }
if(_FileInfo) { if(_FileInfo) {
if(FileInfo = Context->DirNdx->FileInfo) { if((FileInfo = Context->DirNdx->FileInfo)) {
if(FileInfo->ParentFile != Context->DirInfo) { if(FileInfo->ParentFile != Context->DirInfo) {
ParFileInfo = UDFLocateParallelFI(Context->DirInfo, ParFileInfo = UDFLocateParallelFI(Context->DirInfo,
Context->i, Context->i,
@ -507,7 +513,7 @@ UDFIndexDirectory(
PDIR_INDEX_ITEM DirNdx; PDIR_INDEX_ITEM DirNdx;
PFILE_IDENT_DESC FileId; PFILE_IDENT_DESC FileId;
uint32 Offset = 0; uint32 Offset = 0;
uint32 prevOffset = 0; // uint32 prevOffset = 0;
uint_di Count = 0; uint_di Count = 0;
OSSTATUS status; OSSTATUS status;
int8* buff; int8* buff;
@ -541,7 +547,7 @@ UDFIndexDirectory(
// scan Dir to get entry counter // scan Dir to get entry counter
FileId = (PFILE_IDENT_DESC)buff; FileId = (PFILE_IDENT_DESC)buff;
DirPrint((" ExtInfo->Length %x\n", ExtInfo->Length)); DirPrint((" ExtInfo->Length %x\n", ExtInfo->Length));
prevOffset = 0; // prevOffset = 0;
while(Offset<ExtInfo->Length) { while(Offset<ExtInfo->Length) {
DirPrint((" Offset %x\n", Offset)); DirPrint((" Offset %x\n", Offset));
if(!FileId->descTag.tagIdent) { if(!FileId->descTag.tagIdent) {
@ -566,7 +572,7 @@ UDFIndexDirectory(
FileInfo->Dloc->DirIndex->DelCount = Vcb->PackDirThreshold+1; FileInfo->Dloc->DirIndex->DelCount = Vcb->PackDirThreshold+1;
} }
} }
prevOffset = Offset; // prevOffset = Offset;
Offset += (FileId->lengthFileIdent + FileId->lengthOfImpUse + sizeof(FILE_IDENT_DESC) + 3) & (~((uint32)3)); Offset += (FileId->lengthFileIdent + FileId->lengthOfImpUse + sizeof(FILE_IDENT_DESC) + 3) & (~((uint32)3));
FileId = (PFILE_IDENT_DESC)((buff)+Offset); FileId = (PFILE_IDENT_DESC)((buff)+Offset);
Count++; Count++;
@ -603,7 +609,7 @@ UDFIndexDirectory(
ASSERT(PartNum != -1); ASSERT(PartNum != -1);
DirNdx->FileEntryLoc.logicalBlockNum = DirNdx->FileEntryLoc.logicalBlockNum =
UDFPhysLbaToPart(Vcb, PartNum, FileInfo->Dloc->FELoc.Mapping[0].extLocation); UDFPhysLbaToPart(Vcb, PartNum, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
if(DirNdx->FileEntryLoc.logicalBlockNum == -1) { if(DirNdx->FileEntryLoc.logicalBlockNum == (ULONG)-1) {
DirPrint((" err: FileEntryLoc=-1\n")); DirPrint((" err: FileEntryLoc=-1\n"));
DbgFreePool(buff); DbgFreePool(buff);
return STATUS_FILE_CORRUPT_ERROR; return STATUS_FILE_CORRUPT_ERROR;
@ -613,9 +619,7 @@ UDFIndexDirectory(
FILE_DIRECTORY; FILE_DIRECTORY;
// DirNdx->Offset = 0; // DirNdx->Offset = 0;
// DirNdx->Length = 0; // DirNdx->Length = 0;
DirNdx->FName.Buffer = L"."; RtlInitUnicodeString(&DirNdx->FName, L".");
DirNdx->FName.Length =
(DirNdx->FName.MaximumLength = sizeof(L".")) - sizeof(WCHAR);
DirNdx->FileInfo = FileInfo; DirNdx->FileInfo = FileInfo;
DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME; DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME;
DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes),
@ -623,7 +627,7 @@ UDFIndexDirectory(
Count++; Count++;
FileId = (PFILE_IDENT_DESC)buff; FileId = (PFILE_IDENT_DESC)buff;
status = STATUS_SUCCESS; status = STATUS_SUCCESS;
prevOffset = 0; // prevOffset = 0;
while((Offset<ExtInfo->Length) && FileId->descTag.tagIdent) { while((Offset<ExtInfo->Length) && FileId->descTag.tagIdent) {
// add new entry to index list // add new entry to index list
if(FileId->descTag.tagIdent != TID_FILE_IDENT_DESC) { if(FileId->descTag.tagIdent != TID_FILE_IDENT_DESC) {
@ -656,9 +660,7 @@ UDFIndexDirectory(
// init 'parent' entry // init 'parent' entry
// '..' points to Parent Object (if any), // '..' points to Parent Object (if any),
// otherwise it points to the Dir itself // otherwise it points to the Dir itself
DirNdx->FName.Buffer = L".."; RtlInitUnicodeString(&DirNdx->FName, L"..");
DirNdx->FName.Length =
(DirNdx->FName.MaximumLength = sizeof(L"..")) - sizeof(WCHAR);
DirNdx->FileInfo = (FileInfo->ParentFile) ? DirNdx->FileInfo = (FileInfo->ParentFile) ?
FileInfo->ParentFile : FileInfo; FileInfo->ParentFile : FileInfo;
DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME; DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME;
@ -707,7 +709,7 @@ UDFIndexDirectory(
FileId->fileCharacteristics |= FILE_DELETED; FileId->fileCharacteristics |= FILE_DELETED;
} }
#endif // UDF_CHECK_DISK_ALLOCATION #endif // UDF_CHECK_DISK_ALLOCATION
prevOffset = Offset; // prevOffset = Offset;
Offset += DirNdx->Length; Offset += DirNdx->Length;
FileId = (PFILE_IDENT_DESC)(((int8*)FileId)+DirNdx->Length); FileId = (PFILE_IDENT_DESC)(((int8*)FileId)+DirNdx->Length);
Count++; Count++;
@ -788,7 +790,7 @@ UDFPackDirectory__(
PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation); PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
ASSERT(PartNum != -1); ASSERT(PartNum != -1);
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
if(UDFIsDeleted(DirNdx)) if(UDFIsDeleted(DirNdx))
dc++; dc++;
@ -932,7 +934,7 @@ UDFReTagDirectory(
PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation); PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
ASSERT(PartNum != -1); ASSERT(PartNum != -1);
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
status = UDFReadFile__(Vcb, FileInfo, Offset = DirNdx->Offset, status = UDFReadFile__(Vcb, FileInfo, Offset = DirNdx->Offset,
l = DirNdx->Length, FALSE, Buf, &ReadBytes); l = DirNdx->Length, FALSE, Buf, &ReadBytes);
@ -996,7 +998,7 @@ UDFFindFile(
UDFBuildHashEntry(Vcb, Name, &hashes, HASH_POSIX | HASH_ULFN); UDFBuildHashEntry(Vcb, Name, &hashes, HASH_POSIX | HASH_ULFN);
if(CanBe8d3 = UDFCanNameBeA8dot3(Name)) { if((CanBe8d3 = UDFCanNameBeA8dot3(Name))) {
ShortName.MaximumLength = 13 * sizeof(WCHAR); ShortName.MaximumLength = 13 * sizeof(WCHAR);
ShortName.Buffer = (PWCHAR)&ShortNameBuffer; ShortName.Buffer = (PWCHAR)&ShortNameBuffer;
} }
@ -1007,7 +1009,7 @@ UDFFindFile(
if(!IgnoreCase && !CanBe8d3) { if(!IgnoreCase && !CanBe8d3) {
// perform case sensetive sequential directory scan // perform case sensetive sequential directory scan
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
if( (DirNdx->hashes.hPosix == hashes.hPosix) && if( (DirNdx->hashes.hPosix == hashes.hPosix) &&
DirNdx->FName.Buffer && DirNdx->FName.Buffer &&
(!RtlCompareUnicodeString(&(DirNdx->FName), Name, FALSE)) && (!RtlCompareUnicodeString(&(DirNdx->FName), Name, FALSE)) &&
@ -1021,7 +1023,7 @@ UDFFindFile(
if(hashes.hPosix == hashes.hLfn) { if(hashes.hPosix == hashes.hLfn) {
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
if(!DirNdx->FName.Buffer || if(!DirNdx->FName.Buffer ||
(NotDeleted && UDFIsDeleted(DirNdx)) ) (NotDeleted && UDFIsDeleted(DirNdx)) )
continue; continue;
@ -1042,7 +1044,7 @@ UDFFindFile(
} else { } else {
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
// perform sequential directory scan // perform sequential directory scan
if(!DirNdx->FName.Buffer || if(!DirNdx->FName.Buffer ||
(NotDeleted && UDFIsDeleted(DirNdx)) ) (NotDeleted && UDFIsDeleted(DirNdx)) )
@ -1244,7 +1246,7 @@ UDFStoreDloc(
PUDF_DATALOC_INFO Dloc; PUDF_DATALOC_INFO Dloc;
if(!Lba) return STATUS_INVALID_PARAMETER; if(!Lba) return STATUS_INVALID_PARAMETER;
if(Lba == (-1)) return STATUS_INVALID_PARAMETER; if(Lba == (ULONG)-1) return STATUS_INVALID_PARAMETER;
UDFAcquireResourceExclusive(&(Vcb->DlocResource),TRUE); UDFAcquireResourceExclusive(&(Vcb->DlocResource),TRUE);

View file

@ -86,10 +86,12 @@ UDFNextExtentToLba(
{ {
// uint32 Lba; // uint32 Lba;
uint32 l, d; uint32 l;
// uint32 d;
// scan extent table for suitable range (frag) // scan extent table for suitable range (frag)
d = (l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK)); // d = (l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK));
l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK);
if(!l) { if(!l) {
(*Index) = -1; (*Index) = -1;
@ -120,7 +122,7 @@ UDFLocateLbaInExtent(
uint32 l, BSh = Vcb->BlockSizeBits; uint32 l, BSh = Vcb->BlockSizeBits;
uint32 i=0; uint32 i=0;
while(l = ((Extent->extLength & UDF_EXTENT_LENGTH_MASK) >> BSh)) { while((l = ((Extent->extLength & UDF_EXTENT_LENGTH_MASK) >> BSh))) {
if(Extent->extLocation >= lba && if(Extent->extLocation >= lba &&
Extent->extLocation+l < lba) { Extent->extLocation+l < lba) {
@ -300,7 +302,8 @@ UDFShortAllocDescToMapping(
OUT PEXTENT_INFO AllocLoc OUT PEXTENT_INFO AllocLoc
) )
{ {
uint32 i, lim, l, len, BSh, type; uint32 i, lim, l, len, type;
// uint32 BSh;
PEXTENT_MAP Extent, Extent2, AllocMap; PEXTENT_MAP Extent, Extent2, AllocMap;
EXTENT_AD AllocExt; EXTENT_AD AllocExt;
PALLOC_EXT_DESC NextAllocDesc; PALLOC_EXT_DESC NextAllocDesc;
@ -314,7 +317,7 @@ UDFShortAllocDescToMapping(
if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL; if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
locAddr.partitionReferenceNum = (uint16)PartNum; locAddr.partitionReferenceNum = (uint16)PartNum;
BSh = Vcb->BlockSizeBits; // BSh = Vcb->BlockSizeBits;
l = ((lim = (AllocDescLength/sizeof(SHORT_AD))) + 1 ) * sizeof(EXTENT_AD); l = ((lim = (AllocDescLength/sizeof(SHORT_AD))) + 1 ) * sizeof(EXTENT_AD);
Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG); Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
if(!Extent) return NULL; if(!Extent) return NULL;
@ -461,7 +464,8 @@ UDFLongAllocDescToMapping(
OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero) OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero)
) )
{ {
uint32 i, lim, l, len, BSh, type; uint32 i, lim, l, len, type;
// uint32 BSh;
PEXTENT_MAP Extent, Extent2, AllocMap; PEXTENT_MAP Extent, Extent2, AllocMap;
EXTENT_AD AllocExt; EXTENT_AD AllocExt;
PALLOC_EXT_DESC NextAllocDesc; PALLOC_EXT_DESC NextAllocDesc;
@ -472,7 +476,7 @@ UDFLongAllocDescToMapping(
if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL; if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
BSh = Vcb->BlockSizeBits; // BSh = Vcb->BlockSizeBits;
l = ((lim = (AllocDescLength/sizeof(LONG_AD))) + 1 ) * sizeof(EXTENT_AD); l = ((lim = (AllocDescLength/sizeof(LONG_AD))) + 1 ) * sizeof(EXTENT_AD);
Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG); Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
if(!Extent) return NULL; if(!Extent) return NULL;
@ -598,7 +602,8 @@ UDFExtAllocDescToMapping(
OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero) OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero)
) )
{ {
uint32 i, lim, l, len, BSh, type; uint32 i, lim, l, len, type;
// uint32 BSh;
PEXTENT_MAP Extent, Extent2, AllocMap; PEXTENT_MAP Extent, Extent2, AllocMap;
EXTENT_AD AllocExt; EXTENT_AD AllocExt;
PALLOC_EXT_DESC NextAllocDesc; PALLOC_EXT_DESC NextAllocDesc;
@ -609,7 +614,7 @@ UDFExtAllocDescToMapping(
if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL; if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
BSh = Vcb->BlockSizeBits; // BSh = Vcb->BlockSizeBits;
l = ((lim = (AllocDescLength/sizeof(EXT_AD))) + 1 ) * sizeof(EXTENT_AD); l = ((lim = (AllocDescLength/sizeof(EXT_AD))) + 1 ) * sizeof(EXTENT_AD);
Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG); Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
if(!Extent) return NULL; if(!Extent) return NULL;
@ -852,7 +857,7 @@ UDFBuildShortAllocDescs(
ValidateFileInfo(FileInfo); ValidateFileInfo(FileInfo);
ExtPrint(("UDFBuildShortAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation)); ExtPrint(("UDFBuildShortAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation));
// calculate length // calculate length
for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i) { for(len=0; (i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); len++, ph_len+=i) {
ExtPrint(("bShExt: type %x, loc %x, len %x\n", ExtPrint(("bShExt: type %x, loc %x, len %x\n",
Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK));
} }
@ -1039,7 +1044,7 @@ UDFBuildLongAllocDescs(
ExtPrint(("UDFBuildLongAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation)); ExtPrint(("UDFBuildLongAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation));
// calculate length // calculate length
//for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i); //for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i);
for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i) { for(len=0; (i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); len++, ph_len+=i) {
ExtPrint(("bLnExt: type %x, loc %x, len %x\n", ExtPrint(("bLnExt: type %x, loc %x, len %x\n",
Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK));
} }
@ -1749,7 +1754,7 @@ UDFFreeFESpace(
j = i; j = i;
} }
} }
if(j != -1) { if(j != (ULONG)-1) {
i = j; i = j;
Ext->Mapping[i].extLocation = Lba; Ext->Mapping[i].extLocation = Lba;
Ext->Mapping[i].extLength = Vcb->LBlockSize | (EXTENT_NOT_RECORDED_ALLOCATED << 30); Ext->Mapping[i].extLength = Vcb->LBlockSize | (EXTENT_NOT_RECORDED_ALLOCATED << 30);
@ -1828,7 +1833,7 @@ UDFMarkAllocatedAsRecorded(
// I don't know what else comment can be added here. // I don't know what else comment can be added here.
// Just belive that it works // Just belive that it works
lba = UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, (Offset & ~((int64)LBS-1)), NULL, NULL, NULL, &i); lba = UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, (Offset & ~((int64)LBS-1)), NULL, NULL, NULL, &i);
if(i == -1) return STATUS_INVALID_PARAMETER; if(i == (ULONG)-1) return STATUS_INVALID_PARAMETER;
#ifdef UDF_DBG #ifdef UDF_DBG
check_size = UDFGetExtentLength(ExtInfo->Mapping); check_size = UDFGetExtentLength(ExtInfo->Mapping);
ASSERT(!(check_size & (LBS-1))); ASSERT(!(check_size & (LBS-1)));
@ -1962,7 +1967,7 @@ UDFMarkNotAllocatedAsAllocated(
#endif #endif
AdPrint(("Not->Alloc ExtInfo %x, Extent %x\n", ExtInfo, Extent)); AdPrint(("Not->Alloc ExtInfo %x, Extent %x\n", ExtInfo, Extent));
UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i); UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i);
if(i == -1) return STATUS_INVALID_PARAMETER; if(i == (ULONG)-1) return STATUS_INVALID_PARAMETER;
if((Extent[i].extLength >> 30) != EXTENT_NOT_RECORDED_NOT_ALLOCATED) return STATUS_SUCCESS; if((Extent[i].extLength >> 30) != EXTENT_NOT_RECORDED_NOT_ALLOCATED) return STATUS_SUCCESS;
uint32 PartNum = UDFGetPartNumByPhysLba(Vcb, Extent[0].extLocation); uint32 PartNum = UDFGetPartNumByPhysLba(Vcb, Extent[0].extLocation);
@ -2120,7 +2125,7 @@ UDFMarkAllocatedAsNotXXX(
DeadMapping[0].extLocation = DeadMapping[0].extLocation =
UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i); UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i);
if(i == -1) { if(i == (ULONG)-1) {
BrutePoint(); BrutePoint();
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
} }
@ -2620,7 +2625,7 @@ UDFBuildAllocDescs(
OUT int8** AllocData OUT int8** AllocData
) )
{ {
PEXTENT_MAP InMap; // PEXTENT_MAP InMap;
// uint32 i=0; // uint32 i=0;
int8* Allocs; int8* Allocs;
uint16 AllocMode; uint16 AllocMode;
@ -2637,7 +2642,7 @@ UDFBuildAllocDescs(
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
} }
RtlZeroMemory(Allocs, InitSz); RtlZeroMemory(Allocs, InitSz);
InMap = FileInfo->Dloc->DataLoc.Mapping; // InMap = FileInfo->Dloc->DataLoc.Mapping;
UDFCheckSpaceAllocation(Vcb, 0, InMap, AS_USED); // check if used UDFCheckSpaceAllocation(Vcb, 0, InMap, AS_USED); // check if used
// TODO: move data from mapped locations here // TODO: move data from mapped locations here
@ -2860,7 +2865,7 @@ UDFUnPackMapping(
j=0; j=0;
d = LBS >> Vcb->BlockSizeBits; d = LBS >> Vcb->BlockSizeBits;
for(i=0; l = (Mapping[i].extLength & UDF_EXTENT_LENGTH_MASK); i++) { for(i=0; (l = (Mapping[i].extLength & UDF_EXTENT_LENGTH_MASK)); i++) {
base = Mapping[i].extLocation; base = Mapping[i].extLocation;
type = Mapping[i].extLength & UDF_EXTENT_FLAG_MASK; type = Mapping[i].extLength & UDF_EXTENT_FLAG_MASK;
for(; l>=(LONG)LBS; j++) { for(; l>=(LONG)LBS; j++) {
@ -2912,7 +2917,7 @@ UDFIsExtentCached(
PEXTENT_MAP Extent = ExtInfo->Mapping; // Extent array PEXTENT_MAP Extent = ExtInfo->Mapping; // Extent array
uint32 to_read, Lba, sect_offs, flags, i; uint32 to_read, Lba, sect_offs, flags, i;
WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE/*FALSE/*ForWrite*/); WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE/*FALSE*//*ForWrite*/);
if(!ExtInfo || !ExtInfo->Mapping) goto EO_IsCached; if(!ExtInfo || !ExtInfo->Mapping) goto EO_IsCached;
if(!Length) { if(!Length) {
retstat = TRUE; retstat = TRUE;
@ -3078,7 +3083,7 @@ UDFReadExtentLocation(
int32 SubExtInfoSz = *_SubExtInfoSz; int32 SubExtInfoSz = *_SubExtInfoSz;
int64 Length; int64 Length;
int64 NextOffset; int64 NextOffset;
OSSTATUS status = STATUS_BUFFER_OVERFLOW; // OSSTATUS status = STATUS_BUFFER_OVERFLOW;
(*_SubExtInfo) = NULL; (*_SubExtInfo) = NULL;
(*_SubExtInfoSz) = 0; (*_SubExtInfoSz) = 0;
@ -3121,7 +3126,7 @@ UDFReadExtentLocation(
// prepare for reading next frag... // prepare for reading next frag...
Length -= to_read; Length -= to_read;
if(!Length) { if(!Length) {
status = STATUS_SUCCESS; // status = STATUS_SUCCESS;
break; break;
} }
ASSERT(to_read); ASSERT(to_read);
@ -3132,8 +3137,10 @@ UDFReadExtentLocation(
return STATUS_SUCCESS; return STATUS_SUCCESS;
} // end UDFReadExtentLocation() } // end UDFReadExtentLocation()
#ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
uint32 uint32
UDFGetZeroLength( UDFGetZeroLength(
@ -3150,7 +3157,9 @@ UDFGetZeroLength(
return Length*sizeof(uint32); return Length*sizeof(uint32);
} }
#ifdef _MSC_VER
#pragma warning(pop) // re-enable warning #4035 #pragma warning(pop) // re-enable warning #4035
#endif
#ifndef UDF_READ_ONLY_BUILD #ifndef UDF_READ_ONLY_BUILD
/* /*

View file

@ -17,7 +17,11 @@
#include "udf.h" #include "udf.h"
/* FIXME*/ /* FIXME */
#ifdef XCHG_DD
#undef XCHG_DD
#endif
#define XCHG_DD(a,b) \ #define XCHG_DD(a,b) \
{ \ { \
ULONG _temp_; \ ULONG _temp_; \
@ -197,13 +201,13 @@ UDFUpdateXSpaceBitmaps(
int8* FSBM=NULL; int8* FSBM=NULL;
uint32 USl, FSl; uint32 USl, FSl;
EXTENT_INFO FSBMExtInfo, USBMExtInfo; EXTENT_INFO FSBMExtInfo, USBMExtInfo;
lb_addr locAddr; // lb_addr locAddr;
uint32 WrittenBytes; uint32 WrittenBytes;
UDF_CHECK_BITMAP_RESOURCE(Vcb); UDF_CHECK_BITMAP_RESOURCE(Vcb);
plen = UDFPartLen(Vcb, PartNum); plen = UDFPartLen(Vcb, PartNum);
locAddr.partitionReferenceNum = (uint16)PartNum; // locAddr.partitionReferenceNum = (uint16)PartNum;
// prepare bitmaps for updating // prepare bitmaps for updating
status = UDFPrepareXSpaceBitmap(Vcb, &(phd->unallocatedSpaceBitmap), &USBMExtInfo, &USBM, &USl); status = UDFPrepareXSpaceBitmap(Vcb, &(phd->unallocatedSpaceBitmap), &USBMExtInfo, &USBM, &USl);
@ -996,7 +1000,7 @@ UDFUmount__(
return STATUS_SUCCESS; return STATUS_SUCCESS;
} // end UDFUmount__() } // end UDFUmount__()
/************************************************************************* /*************************************************************************/
/* /*
Find an anchor volume descriptor. Find an anchor volume descriptor.
@ -1668,9 +1672,9 @@ UDFVerifyXSpaceBitmap(
) )
{ {
int8* tmp; int8* tmp;
int8* tmp_bm; // int8* tmp_bm;
// uint32 i, lim, j, lba, l, lim2, l2, k; // uint32 i, l2, k, lim, j, lim2;
uint32 i, lim, j, lba, lim2; uint32 lba;
lb_addr locAddr; lb_addr locAddr;
OSSTATUS status; OSSTATUS status;
uint16 Ident; uint16 Ident;
@ -1684,7 +1688,7 @@ UDFVerifyXSpaceBitmap(
KdPrint((" UDFVerifyXSpaceBitmap: part %x\n", PartNum)); KdPrint((" UDFVerifyXSpaceBitmap: part %x\n", PartNum));
if(!(Length = (bm->extLength & UDF_EXTENT_LENGTH_MASK))) return STATUS_SUCCESS; if(!(Length = (bm->extLength & UDF_EXTENT_LENGTH_MASK))) return STATUS_SUCCESS;
i=UDFPartStart(Vcb, PartNum); // i=UDFPartStart(Vcb, PartNum);
flags = bm->extLength >> 30; flags = bm->extLength >> 30;
if(!flags /*|| flags == EXTENT_NOT_RECORDED_ALLOCATED*/) { if(!flags /*|| flags == EXTENT_NOT_RECORDED_ALLOCATED*/) {
tmp = (int8*)DbgAllocatePool(NonPagedPool, max(Length, Vcb->BlockSize)); tmp = (int8*)DbgAllocatePool(NonPagedPool, max(Length, Vcb->BlockSize));
@ -1707,9 +1711,9 @@ err_vfyxsbm_1:
if(!OS_SUCCESS(status = UDFReadData(Vcb, FALSE, ((uint64)lba)<<Vcb->BlockSizeBits, Length, FALSE, tmp, &ReadBytes))) if(!OS_SUCCESS(status = UDFReadData(Vcb, FALSE, ((uint64)lba)<<Vcb->BlockSizeBits, Length, FALSE, tmp, &ReadBytes)))
goto err_vfyxsbm_1; goto err_vfyxsbm_1;
UDFRegisterFsStructure(Vcb, lba, Length); UDFRegisterFsStructure(Vcb, lba, Length);
lim = min(i + ((lim2 = ((PSPACE_BITMAP_DESC)tmp)->numOfBits) << Vcb->LB2B_Bits), Vcb->FSBM_BitCount); // lim = min(i + ((lim2 = ((PSPACE_BITMAP_DESC)tmp)->numOfBits) << Vcb->LB2B_Bits), Vcb->FSBM_BitCount);
tmp_bm = tmp + sizeof(SPACE_BITMAP_DESC); // tmp_bm = tmp + sizeof(SPACE_BITMAP_DESC);
j = 0; // j = 0;
/* for(;(l = UDFGetBitmapLen((uint32*)tmp_bm, j, lim2)) && (i<lim);) { /* for(;(l = UDFGetBitmapLen((uint32*)tmp_bm, j, lim2)) && (i<lim);) {
// expand LBlocks to Sectors... // expand LBlocks to Sectors...
l2 = l << Vcb->LB2B_Bits; l2 = l << Vcb->LB2B_Bits;
@ -2364,7 +2368,7 @@ UDFProcessSequence(
OSSTATUS RC = STATUS_SUCCESS; OSSTATUS RC = STATUS_SUCCESS;
int8* Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize); int8* Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize);
UDF_VDS_RECORD vds[VDS_POS_LENGTH]; UDF_VDS_RECORD vds[VDS_POS_LENGTH];
GenericDesc *gd; // GenericDesc *gd;
uint32 i,j; uint32 i,j;
uint16 ident; uint16 ident;
int8* Buf2 = NULL; int8* Buf2 = NULL;
@ -2416,7 +2420,7 @@ UDFProcessSequence(
RC = UDFReadTagged(Vcb,Buf2, j, j, &ident); RC = UDFReadTagged(Vcb,Buf2, j, j, &ident);
if(!OS_SUCCESS(RC)) try_return(RC); if(!OS_SUCCESS(RC)) try_return(RC);
UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize); UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize);
gd = (struct GenericDesc *)Buf2; // gd = (struct GenericDesc *)Buf2;
if(ident == TID_PARTITION_DESC) { if(ident == TID_PARTITION_DESC) {
RC = UDFLoadPartDesc(Vcb,Buf2); RC = UDFLoadPartDesc(Vcb,Buf2);
if(!OS_SUCCESS(RC)) try_return(RC); if(!OS_SUCCESS(RC)) try_return(RC);
@ -2465,7 +2469,7 @@ UDFVerifySequence(
OSSTATUS RC = STATUS_SUCCESS; OSSTATUS RC = STATUS_SUCCESS;
int8* Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize); int8* Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize);
UDF_VDS_RECORD vds[VDS_POS_LENGTH]; UDF_VDS_RECORD vds[VDS_POS_LENGTH];
GenericDesc *gd; // GenericDesc *gd;
uint32 i,j; uint32 i,j;
uint16 ident; uint16 ident;
int8* Buf2 = NULL; int8* Buf2 = NULL;
@ -2502,7 +2506,7 @@ UDFVerifySequence(
RC = UDFReadTagged(Vcb,Buf2, j, j, &ident); RC = UDFReadTagged(Vcb,Buf2, j, j, &ident);
if(!OS_SUCCESS(RC)) try_return(RC); if(!OS_SUCCESS(RC)) try_return(RC);
UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize); UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize);
gd = (struct GenericDesc *)Buf2; // gd = (struct GenericDesc *)Buf2;
if(ident == TID_PARTITION_DESC) { if(ident == TID_PARTITION_DESC) {
RC = UDFVerifyPartDesc(Vcb,Buf2); RC = UDFVerifyPartDesc(Vcb,Buf2);
if(!OS_SUCCESS(RC)) try_return(RC); if(!OS_SUCCESS(RC)) try_return(RC);
@ -2927,11 +2931,12 @@ UDFCheckZeroBuf(
IN uint32 Length IN uint32 Length
) )
{ {
BOOLEAN RC = FALSE;
//#ifdef _X86_ //#ifdef _X86_
#ifdef _MSC_VER #ifdef _MSC_VER
BOOLEAN RC = FALSE;
uint32 len = Length; uint32 len = Length;
__asm push ecx __asm push ecx
__asm push edi __asm push edi

View file

@ -55,7 +55,7 @@ UDFEjectReqWaiter(
BOOLEAN SkipEject = FALSE; BOOLEAN SkipEject = FALSE;
BOOLEAN SkipFlush = FALSE; BOOLEAN SkipFlush = FALSE;
BOOLEAN FlushAndEject = FALSE; // BOOLEAN FlushAndEject = FALSE;
KdPrint((" UDFEjectReqWaiter: start\n")); KdPrint((" UDFEjectReqWaiter: start\n"));
uint8 supported_evt_classes = 0; uint8 supported_evt_classes = 0;
@ -604,7 +604,7 @@ media_loss:
try_return(RC); try_return(RC);
} }
} }
FlushAndEject = TRUE; // FlushAndEject = TRUE;
device_failure: device_failure:
// Ok. Lets flush all we have in memory, dismount volume & eject disc // Ok. Lets flush all we have in memory, dismount volume & eject disc
// Acquire Vcb resource // Acquire Vcb resource
@ -707,7 +707,7 @@ UDFDoDismountSequence(
) )
{ {
LARGE_INTEGER delay; LARGE_INTEGER delay;
OSSTATUS RC; // OSSTATUS RC;
ULONG i; ULONG i;
// flush system cache // flush system cache
@ -731,11 +731,11 @@ UDFDoDismountSequence(
KdPrint((" cleanup tray-lock (%d+2):\n", Vcb->MediaLockCount)); KdPrint((" cleanup tray-lock (%d+2):\n", Vcb->MediaLockCount));
for(i=0; i<Vcb->MediaLockCount+2; i++) { for(i=0; i<Vcb->MediaLockCount+2; i++) {
Buf->PreventMediaRemoval = FALSE; Buf->PreventMediaRemoval = FALSE;
RC = UDFPhSendIOCTL(IOCTL_STORAGE_MEDIA_REMOVAL, UDFPhSendIOCTL(IOCTL_STORAGE_MEDIA_REMOVAL,
Vcb->TargetDeviceObject, Vcb->TargetDeviceObject,
Buf,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN), Buf,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN),
NULL,0, NULL,0,
FALSE,NULL); FALSE,NULL);
KeDelayExecutionThread(KernelMode, FALSE, &delay); KeDelayExecutionThread(KernelMode, FALSE, &delay);
} }
delay.QuadPart = -2000000; // 0.2 sec delay.QuadPart = -2000000; // 0.2 sec
@ -771,11 +771,11 @@ UDFDoDismountSequence(
CBuff.Byte2.Flags = CloseTrkSes_Ses; CBuff.Byte2.Flags = CloseTrkSes_Ses;
CBuff.TrackNum = 1; CBuff.TrackNum = 1;
RC = UDFPhSendIOCTL(IOCTL_CDRW_CLOSE_TRK_SES, UDFPhSendIOCTL(IOCTL_CDRW_CLOSE_TRK_SES,
Vcb->TargetDeviceObject, Vcb->TargetDeviceObject,
&CBuff,sizeof(CLOSE_TRK_SES_USER_IN), &CBuff,sizeof(CLOSE_TRK_SES_USER_IN),
&CBuff,sizeof(CLOSE_TRK_SES_USER_IN), &CBuff,sizeof(CLOSE_TRK_SES_USER_IN),
FALSE, NULL ); FALSE, NULL );
/* } else /* } else
if(Vcb->MediaClassEx == CdMediaClass_DVDRW) { if(Vcb->MediaClassEx == CdMediaClass_DVDRW) {
KdPrint((" Close BG-formatted track\n")); KdPrint((" Close BG-formatted track\n"));
@ -800,11 +800,11 @@ UDFDoDismountSequence(
if(Eject && if(Eject &&
(Vcb->VCBFlags & UDF_VCB_FLAGS_REMOVABLE_MEDIA)) { (Vcb->VCBFlags & UDF_VCB_FLAGS_REMOVABLE_MEDIA)) {
RC = UDFPhSendIOCTL(IOCTL_STORAGE_EJECT_MEDIA, UDFPhSendIOCTL(IOCTL_STORAGE_EJECT_MEDIA,
Vcb->TargetDeviceObject, Vcb->TargetDeviceObject,
NULL,0, NULL,0,
NULL,0, NULL,0,
FALSE,NULL); FALSE,NULL);
} }
// notify media change // notify media change
/* if(Vcb->VCBFlags & UDF_VCB_FLAGS_OUR_DEVICE_DRIVER) { /* if(Vcb->VCBFlags & UDF_VCB_FLAGS_OUR_DEVICE_DRIVER) {

View file

@ -117,7 +117,7 @@ UDFVWaitQueued(
w = InterlockedIncrement((PLONG)&(VerifyCtx->WaiterCount)); w = InterlockedIncrement((PLONG)&(VerifyCtx->WaiterCount));
KdPrint((" %d waiters\n", w)); KdPrint((" %d waiters\n", w));
DbgWaitForSingleObject(&(VerifyCtx->vrfEvent), NULL); DbgWaitForSingleObject(&(VerifyCtx->vrfEvent), NULL);
if(w = InterlockedDecrement((PLONG)&(VerifyCtx->WaiterCount))) { if((w = InterlockedDecrement((PLONG)&(VerifyCtx->WaiterCount)))) {
KdPrint((" still %d waiters, q %d\n", w, VerifyCtx->QueuedCount)); KdPrint((" still %d waiters, q %d\n", w, VerifyCtx->QueuedCount));
if(!VerifyCtx->QueuedCount) { if(!VerifyCtx->QueuedCount) {
KdPrint((" pulse event\n", w)); KdPrint((" pulse event\n", w));
@ -543,7 +543,7 @@ UDFVWorkItem(
{ {
PVCB Vcb = VerifyReq->Vcb; PVCB Vcb = VerifyReq->Vcb;
ULONG ReadBytes; ULONG ReadBytes;
OSSTATUS RC; // OSSTATUS RC;
ULONG i; ULONG i;
ReadBytes = (ULONG)Vcb; ReadBytes = (ULONG)Vcb;
@ -551,20 +551,20 @@ UDFVWorkItem(
if(Vcb->SparingCountFree) { if(Vcb->SparingCountFree) {
WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE); WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE);
for(i=0; i<VerifyReq->nReq; i++) { for(i=0; i<VerifyReq->nReq; i++) {
RC = UDFTIOVerify(Vcb, UDFTIOVerify(Vcb,
VerifyReq->Buffer, // Target buffer VerifyReq->Buffer, // Target buffer
VerifyReq->vr[i].BCount << Vcb->BlockSizeBits, VerifyReq->vr[i].BCount << Vcb->BlockSizeBits,
VerifyReq->vr[i].lba, VerifyReq->vr[i].lba,
&ReadBytes, &ReadBytes,
PH_TMP_BUFFER | PH_VCB_IN_RETLEN /*| PH_LOCK_CACHE*/); PH_TMP_BUFFER | PH_VCB_IN_RETLEN /*| PH_LOCK_CACHE*/);
} }
WCacheEODirect__(&(Vcb->FastCache), Vcb); WCacheEODirect__(&(Vcb->FastCache), Vcb);
} else { } else {
for(i=0; i<VerifyReq->nReq; i++) { for(i=0; i<VerifyReq->nReq; i++) {
KdPrint(("!!! No more space for remap !!!\n")); KdPrint(("!!! No more space for remap !!!\n"));
KdPrint((" try del from verify cache @ %x\n", VerifyReq->vr[i].lba)); KdPrint((" try del from verify cache @ %x\n", VerifyReq->vr[i].lba));
RC = UDFVRead(Vcb, VerifyReq->Buffer, VerifyReq->vr[i].BCount, VerifyReq->vr[i].lba, UDFVRead(Vcb, VerifyReq->Buffer, VerifyReq->vr[i].BCount, VerifyReq->vr[i].lba,
PH_FORGET_VERIFIED | PH_READ_VERIFY_CACHE | PH_TMP_BUFFER); PH_FORGET_VERIFIED | PH_READ_VERIFY_CACHE | PH_TMP_BUFFER);
} }
} }
#else #else
@ -775,7 +775,7 @@ UDFCheckArea(
buff = (uint8*)DbgAllocatePoolWithTag(NonPagedPool, Vcb->WriteBlockSize, 'bNWD' ); buff = (uint8*)DbgAllocatePoolWithTag(NonPagedPool, Vcb->WriteBlockSize, 'bNWD' );
if(buff) { if(buff) {
for(i=0; i<BCount; i+=d) { for(i=0; i<BCount; i+=d) {
if(!(LBA+i & (PS-1)) && if(!((LBA+i) & (PS-1)) &&
(i+PS <= BCount)) { (i+PS <= BCount)) {
d = PS; d = PS;
} else { } else {
@ -821,7 +821,7 @@ UDFRemapPacket(
BS = Vcb->SparingBlockSize; BS = Vcb->SparingBlockSize;
// use sparing table for relocation // use sparing table for relocation
if(Vcb->SparingCountFree == -1) { if(Vcb->SparingCountFree == (ULONG)-1) {
KdPrint(("calculate free spare areas\n")); KdPrint(("calculate free spare areas\n"));
re_check: re_check:
KdPrint(("verify spare area\n")); KdPrint(("verify spare area\n"));

View file

@ -356,11 +356,15 @@ UDFUnicodeInString(
Decides whether character passed is an illegal character for a Decides whether character passed is an illegal character for a
DOS file name. DOS file name.
*/ */
#ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
#ifdef _X86_ #ifdef _X86_
#ifdef _MSC_VER
__declspec (naked) __declspec (naked)
#endif
#endif // _X86_ #endif // _X86_
BOOLEAN BOOLEAN
__fastcall __fastcall
@ -398,7 +402,9 @@ ERR_IIC2:
#endif // _X86_ #endif // _X86_
} // end UDFIsIllegalChar() } // end UDFIsIllegalChar()
#ifdef _MSC_VER
#pragma warning(pop) // re-enable warning #4035 #pragma warning(pop) // re-enable warning #4035
#endif
/* /*
Translate udfName to dosName using OSTA compliant. Translate udfName to dosName using OSTA compliant.
@ -881,7 +887,7 @@ UDFDOSName201(
/* If the name has illegal characters or and extension, it */ /* If the name has illegal characters or and extension, it */
/* is not a DOS device name. */ /* is not a DOS device name. */
/* if (needsCRC == FALSE && extLen == 0) { /* if (needsCRC == FALSE && extLen == 0) { */
/* If this is the name of a DOS device, a CRC code should */ /* If this is the name of a DOS device, a CRC code should */
/* be appended to the file name. /* be appended to the file name.
if (IsDeviceName(udfName, udfLen)) if (IsDeviceName(udfName, udfLen))
@ -976,7 +982,7 @@ UDFBuildFileEntry(
{ {
PFILE_ENTRY FileEntry; PFILE_ENTRY FileEntry;
OSSTATUS status; OSSTATUS status;
EntityID* eID; // EntityID* eID;
uint32 l; uint32 l;
EXTENT_INFO _FEExtInfo; EXTENT_INFO _FEExtInfo;
uint16* lcp; uint16* lcp;
@ -1021,11 +1027,11 @@ UDFBuildFileEntry(
FileEntry->gid = Vcb->DefaultGID; FileEntry->gid = Vcb->DefaultGID;
if(Extended) { if(Extended) {
eID = &(((PEXTENDED_FILE_ENTRY)FileEntry)->impIdent); // eID = &(((PEXTENDED_FILE_ENTRY)FileEntry)->impIdent);
lcp = &(((PEXTENDED_FILE_ENTRY)FileEntry)->fileLinkCount); lcp = &(((PEXTENDED_FILE_ENTRY)FileEntry)->fileLinkCount);
((PEXTENDED_FILE_ENTRY)FileEntry)->checkpoint = 1; ((PEXTENDED_FILE_ENTRY)FileEntry)->checkpoint = 1;
} else { } else {
eID = &(FileEntry->impIdent); // eID = &(FileEntry->impIdent);
lcp = &(FileEntry->fileLinkCount); lcp = &(FileEntry->fileLinkCount);
((PFILE_ENTRY)FileEntry)->checkpoint = 1; ((PFILE_ENTRY)FileEntry)->checkpoint = 1;
} }
@ -1523,7 +1529,7 @@ UDFChangeFileCounter(
counter = FileCounter ? counter = FileCounter ?
&(Vcb->numFiles) : &(Vcb->numFiles) :
&(Vcb->numDirs); &(Vcb->numDirs);
if(*counter == -1) if(*counter == (ULONG)-1)
return; return;
if(Increase) { if(Increase) {
UDFInterlockedIncrement((int32*)counter); UDFInterlockedIncrement((int32*)counter);
@ -1950,13 +1956,13 @@ UDFUnlinkAllFilesInDir(
hCurDirNdx = DirInfo->Dloc->DirIndex; hCurDirNdx = DirInfo->Dloc->DirIndex;
// check if we can delete all files // check if we can delete all files
for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) { for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
// try to open Stream // try to open Stream
if(CurDirNdx->FileInfo) if(CurDirNdx->FileInfo)
return STATUS_CANNOT_DELETE; return STATUS_CANNOT_DELETE;
} }
// start deletion // start deletion
for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) { for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
// try to open Stream // try to open Stream
status = UDFOpenFile__(Vcb, FALSE, TRUE, NULL, DirInfo, &FileInfo, &i); status = UDFOpenFile__(Vcb, FALSE, TRUE, NULL, DirInfo, &FileInfo, &i);
if(status == STATUS_FILE_DELETED) { if(status == STATUS_FILE_DELETED) {
@ -2030,7 +2036,7 @@ UDFOpenFile__(
// some routines may send invalid Index // some routines may send invalid Index
if(!(DirNdx = UDFDirIndex(hDirNdx,i))) if(!(DirNdx = UDFDirIndex(hDirNdx,i)))
return STATUS_OBJECT_NAME_NOT_FOUND; return STATUS_OBJECT_NAME_NOT_FOUND;
if(FileInfo = DirNdx->FileInfo) { if((FileInfo = DirNdx->FileInfo)) {
// file is already opened. // file is already opened.
if((DirNdx->FileCharacteristics & FILE_DELETED) && NotDeleted) { if((DirNdx->FileCharacteristics & FILE_DELETED) && NotDeleted) {
AdPrint((" FILE_DELETED on open\n")); AdPrint((" FILE_DELETED on open\n"));
@ -2307,7 +2313,7 @@ UDFCleanUpFile__(
IsASDir = UDFIsAStreamDir(FileInfo); IsASDir = UDFIsAStreamDir(FileInfo);
if(Dloc = FileInfo->Dloc) { if((Dloc = FileInfo->Dloc)) {
#ifdef UDF_DBG #ifdef UDF_DBG
DirInfo = FileInfo->ParentFile; DirInfo = FileInfo->ParentFile;
@ -2349,7 +2355,7 @@ UDFCleanUpFile__(
if(Dloc->DirIndex) { if(Dloc->DirIndex) {
uint_di i; uint_di i;
for(i=2; DirNdx = UDFDirIndex(Dloc->DirIndex,i); i++) { for(i=2; (DirNdx = UDFDirIndex(Dloc->DirIndex,i)); i++) {
if(DirNdx->FileInfo) { if(DirNdx->FileInfo) {
if(!KeepDloc) { if(!KeepDloc) {
BrutePoint(); BrutePoint();
@ -2433,7 +2439,7 @@ UDFCleanUpFile__(
#endif //UDF_TRACK_ONDISK_ALLOCATION #endif //UDF_TRACK_ONDISK_ALLOCATION
if(FileInfo->Dloc->DirIndex) { if(FileInfo->Dloc->DirIndex) {
uint_di i; uint_di i;
for(i=2; DirNdx = UDFDirIndex(Dloc->DirIndex,i); i++) { for(i=2; (DirNdx = UDFDirIndex(Dloc->DirIndex,i)); i++) {
ASSERT(!DirNdx->FileInfo); ASSERT(!DirNdx->FileInfo);
if(DirNdx->FName.Buffer) if(DirNdx->FName.Buffer)
MyFreePool__(DirNdx->FName.Buffer); MyFreePool__(DirNdx->FName.Buffer);
@ -2736,7 +2742,7 @@ CreateUndel:
#endif // UDF_LIMIT_DIR_SIZE #endif // UDF_LIMIT_DIR_SIZE
// search for suitable unused entry // search for suitable unused entry
if(UDFDirIndexInitScan(DirInfo, &ScanContext, 2)) { if(UDFDirIndexInitScan(DirInfo, &ScanContext, 2)) {
while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) { while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
if((DirNdx->Length == l) && UDFIsDeleted(DirNdx) && if((DirNdx->Length == l) && UDFIsDeleted(DirNdx) &&
!DirNdx->FileInfo ) { !DirNdx->FileInfo ) {
// free unicode-buffer with old name // free unicode-buffer with old name
@ -2773,7 +2779,7 @@ CreateUndel:
DirNdx->Offset = 0; DirNdx->Offset = 0;
} }
// new terminator is recorded by UDFDirIndexGrow() // new terminator is recorded by UDFDirIndexGrow()
if( ((d = (LBS - (DirNdx->Offset + l + DirInfo->Dloc->DataLoc.Offset) & (LBS-1) )) < sizeof(FILE_IDENT_DESC)) && if( ((d = ((LBS - (DirNdx->Offset + l + DirInfo->Dloc->DataLoc.Offset)) & (LBS-1) )) < sizeof(FILE_IDENT_DESC)) &&
d ) { d ) {
// insufficient space at the end of last sector for // insufficient space at the end of last sector for
// next FileIdent's tag. fill it with ImpUse data // next FileIdent's tag. fill it with ImpUse data
@ -4269,8 +4275,10 @@ UDFCompareFileInfo(
This routine computes 32-bit hash based on CRC-32 from SSH This routine computes 32-bit hash based on CRC-32 from SSH
*/ */
#ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4035) // re-enable below #pragma warning(disable:4035) // re-enable below
#endif
//#ifdef _X86_ //#ifdef _X86_
#ifdef _MSC_VER #ifdef _MSC_VER
@ -4573,7 +4581,9 @@ EO_CRC:
} // end UDFCrc() } // end UDFCrc()
#ifdef _MSC_VER
#pragma warning(pop) // re-enable warning #4035 #pragma warning(pop) // re-enable warning #4035
#endif
/* /*
Read the first block of a tagged descriptor & check it. Read the first block of a tagged descriptor & check it.

View file

@ -423,8 +423,8 @@ typedef struct _FE_LIST_ENTRY {
#define UNICODE_PERIOD 0x002E #define UNICODE_PERIOD 0x002E
#define UNICODE_SPACE 0x0020 #define UNICODE_SPACE 0x0020
#define LBA_OUT_OF_EXTENT ((LONG)(-1)) #define LBA_OUT_OF_EXTENT ((ULONG)(-1))
#define LBA_NOT_ALLOCATED ((LONG)(-2)) #define LBA_NOT_ALLOCATED ((ULONG)(-2))
typedef struct _EXT_RELOCATION_ENTRY { typedef struct _EXT_RELOCATION_ENTRY {
uint32 extLength; uint32 extLength;

View file

@ -169,17 +169,9 @@ DriverEntry(
RegTGetKeyHandle(NULL, UDFGlobalData.SavedRegPath.Buffer, &hUdfRootKey); RegTGetKeyHandle(NULL, UDFGlobalData.SavedRegPath.Buffer, &hUdfRootKey);
UDFGlobalData.UnicodeStrRoot.Buffer = L"\\"; //(PWCHAR)&(UDFGlobalData.UnicodeStrRootBuffer); RtlInitUnicodeString(&UDFGlobalData.UnicodeStrRoot, L"\\");
UDFGlobalData.UnicodeStrRoot.Length = sizeof(WCHAR); RtlInitUnicodeString(&UDFGlobalData.UnicodeStrSDir, L":");
UDFGlobalData.UnicodeStrRoot.MaximumLength = 2*sizeof(WCHAR); RtlInitUnicodeString(&UDFGlobalData.AclName, UDF_SN_NT_ACL);
UDFGlobalData.UnicodeStrSDir.Buffer = L":";
UDFGlobalData.UnicodeStrSDir.Length = sizeof(WCHAR);
UDFGlobalData.UnicodeStrSDir.MaximumLength = 2*sizeof(WCHAR);
UDFGlobalData.AclName.Buffer = UDF_SN_NT_ACL;
UDFGlobalData.AclName.Length =
(UDFGlobalData.AclName.MaximumLength = sizeof(UDF_SN_NT_ACL)) - sizeof(WCHAR);
KdPrint(("UDF: Init delayed close queues\n")); KdPrint(("UDF: Init delayed close queues\n"));
#ifdef UDF_DELAYED_CLOSE #ifdef UDF_DELAYED_CLOSE
@ -214,7 +206,7 @@ DriverEntry(
// create a device object representing the driver itself // create a device object representing the driver itself
// so that requests can be targeted to the driver ... // so that requests can be targeted to the driver ...
// e.g. for a disk-based FSD, "mount" requests will be sent to // e.g. for a disk-based FSD, "mount" requests will be sent to
// this device object by the I/O Manager.\ // this device object by the I/O Manager.
// For a redirector/server, you may have applications // For a redirector/server, you may have applications
// send "special" IOCTL's using this device object ... // send "special" IOCTL's using this device object ...
@ -689,13 +681,13 @@ UDFDismountDevice(
DbgCompareMemory(&Buffer->FileSystemName[0],name , sizeof(name)) == sizeof(name)) DbgCompareMemory(&Buffer->FileSystemName[0],name , sizeof(name)) == sizeof(name))
if (NT_SUCCESS(RC) && if (NT_SUCCESS(RC) &&
(UDF_CHECK_FS_NAME(UDF_FS_TITLE_CDR) || (UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_CDR) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_CDRW) || UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_CDRW) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDR) || UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDR) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDRW) || UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDRW) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDpR) || UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDpR) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDpRW) || UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDpRW) ||
UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDRAM) )) try_return(STATUS_SUCCESS); UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDRAM) )) try_return(STATUS_SUCCESS);
KdPrint(("\n*** UDFDismountDevice: LockVolume\n")); KdPrint(("\n*** UDFDismountDevice: LockVolume\n"));
RC = ZwFsControlFile(NtFileHandle, RC = ZwFsControlFile(NtFileHandle,
@ -874,6 +866,7 @@ UDFRemountAll(
UNICODE_STRING unicodeCdRomDeviceName; UNICODE_STRING unicodeCdRomDeviceName;
LARGE_INTEGER delay; LARGE_INTEGER delay;
*/
/* delay.QuadPart = -80*10000000; /* delay.QuadPart = -80*10000000;
KeDelayExecutionThread(KernelMode, FALSE, &delay); //10 seconds*/ KeDelayExecutionThread(KernelMode, FALSE, &delay); //10 seconds*/

View file

@ -493,11 +493,10 @@ UDFQueryFsAttributeInfo(
ULONG BytesToCopy; ULONG BytesToCopy;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PWCHAR FsTypeTitle; PCWSTR FsTypeTitle;
ULONG FsTypeTitleLen; ULONG FsTypeTitleLen;
PAGED_CODE(); PAGED_CODE();
KdPrint((" UDFQueryFsAttributeInfo: \n")); KdPrint((" UDFQueryFsAttributeInfo: \n"));
// Fill out the fixed portion of the buffer. // Fill out the fixed portion of the buffer.
Buffer->FileSystemAttributes = FILE_CASE_SENSITIVE_SEARCH | Buffer->FileSystemAttributes = FILE_CASE_SENSITIVE_SEARCH |