diff --git a/drivers/storage/class/disk_new/CMakeLists.txt b/drivers/storage/class/disk_new/CMakeLists.txt index 9753c35a30d..fc14e6fdc05 100644 --- a/drivers/storage/class/disk_new/CMakeLists.txt +++ b/drivers/storage/class/disk_new/CMakeLists.txt @@ -1,13 +1,14 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - include_directories(..) add_library(disk SHARED data.c disk.c diskwmi.c enum.c geometry.c part.c pnp.c disk.rc) +if(ARCH MATCHES i386) + add_target_compile_flags(disk "-mrtd -fno-builtin -Wno-unused-variable -Wno-pointer-sign") +endif() + set_module_type(disk kernelmodedriver) add_importlibs(disk - class2 + classpnp scsiport ntoskrnl hal) diff --git a/drivers/storage/class/disk_new/data.c b/drivers/storage/class/disk_new/data.c index b7fdc727356..c2fab4fea00 100644 --- a/drivers/storage/class/disk_new/data.c +++ b/drivers/storage/class/disk_new/data.c @@ -60,15 +60,20 @@ CLASSPNP_SCAN_FOR_SPECIAL_INFO DiskBadControllers[] = { { NULL , NULL , NULL, 0x0 } }; +// +// ======== ROS DIFF ======== +// Added MediaTypes in their own brace nesting level +// ======== ROS DIFF ======== +// DISK_MEDIA_TYPES_LIST const DiskMediaTypes[] = { - { "COMPAQ" , "PD-1 LF-1094" , NULL, 1, 1, PC_5_RW , 0 , 0 , 0 }, - { "HP" , NULL , NULL, 2, 2, MO_5_WO , MO_5_RW, 0 , 0 }, - { "iomega" , "jaz" , NULL, 1, 1, IOMEGA_JAZ , 0 , 0 , 0 }, - { "IOMEGA" , "ZIP" , NULL, 1, 1, IOMEGA_ZIP , 0 , 0 , 0 }, - { "PINNACLE", "Apex 4.6GB" , NULL, 3, 2, PINNACLE_APEX_5_RW, MO_5_RW, MO_5_WO, 0 }, - { "SONY" , "SMO-F541" , NULL, 2, 2, MO_5_WO , MO_5_RW, 0 , 0 }, - { "SONY" , "SMO-F551" , NULL, 2, 2, MO_5_WO , MO_5_RW, 0 , 0 }, - { NULL , NULL , NULL, 0, 0, 0 , 0 , 0 , 0 } + { "COMPAQ" , "PD-1 LF-1094" , NULL, 1, 1, {PC_5_RW , 0 , 0 , 0 }}, + { "HP" , NULL , NULL, 2, 2, {MO_5_WO , MO_5_RW, 0 , 0 }}, + { "iomega" , "jaz" , NULL, 1, 1, {IOMEGA_JAZ , 0 , 0 , 0 }}, + { "IOMEGA" , "ZIP" , NULL, 1, 1, {IOMEGA_ZIP , 0 , 0 , 0 }}, + { "PINNACLE", "Apex 4.6GB" , NULL, 3, 2, {PINNACLE_APEX_5_RW, MO_5_RW, MO_5_WO, 0 }}, + { "SONY" , "SMO-F541" , NULL, 2, 2, {MO_5_WO , MO_5_RW, 0 , 0 }}, + { "SONY" , "SMO-F551" , NULL, 2, 2, {MO_5_WO , MO_5_RW, 0 , 0 }}, + { NULL , NULL , NULL, 0, 0, {0 , 0 , 0 , 0 }} }; #ifdef ALLOC_DATA_PRAGMA diff --git a/drivers/storage/class/disk_new/disk.c b/drivers/storage/class/disk_new/disk.c index e545c4f6136..b6c6f966f3c 100644 --- a/drivers/storage/class/disk_new/disk.c +++ b/drivers/storage/class/disk_new/disk.c @@ -173,6 +173,7 @@ const GUID GUID_NULL = { 0 }; NTSTATUS +NTAPI DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath @@ -1304,7 +1305,7 @@ Return Value: // buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; // // Ensure correct target is set in the cmd parameters. @@ -1341,7 +1342,7 @@ Return Value: if (NT_SUCCESS(status)) { buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; RtlMoveMemory (Irp->AssociatedIrp.SystemBuffer, buffer, sizeof(GETVERSIONINPARAMS)); @@ -1444,7 +1445,7 @@ Return Value: // buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; // // Ensure correct target is set in the cmd parameters. @@ -1494,7 +1495,7 @@ Return Value: // buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; if (NT_SUCCESS(status)) { @@ -1640,7 +1641,7 @@ Return Value: // buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; // // Ensure correct target is set in the cmd parameters. @@ -1690,7 +1691,7 @@ Return Value: // buffer = (PUCHAR)srbControl; - (ULONG_PTR)buffer += srbControl->HeaderLength; + buffer += srbControl->HeaderLength; // // Update the return buffer size based on the sub-command. @@ -1828,7 +1829,7 @@ Retry: // blockDescriptor = (PMODE_PARAMETER_BLOCK)modeData; - (ULONG_PTR)blockDescriptor += sizeof(MODE_PARAMETER_HEADER); + blockDescriptor = (PMODE_PARAMETER_BLOCK)((ULONG_PTR)blockDescriptor + sizeof(MODE_PARAMETER_HEADER)); // // Do some validation. @@ -2165,7 +2166,7 @@ Retry: IoMarkIrpPending(Irp); IoQueueWorkItem(Context->WorkItem, - DiskIoctlVerify, + (PIO_WORKITEM_ROUTINE)DiskIoctlVerify, DelayedWorkQueue, Context); @@ -3521,7 +3522,7 @@ Return Value: ((PMODE_PARAMETER_HEADER)buffer)->BlockDescriptorLength = sizeof(MODE_PARAMETER_BLOCK); - (PULONG)blockDescriptor = (buffer + 1); + blockDescriptor = (PMODE_PARAMETER_BLOCK)(buffer + 1); // // Set size @@ -3888,7 +3889,7 @@ Return Value: if (workItem) { IoQueueWorkItem(workItem, - DisableWriteCache, + (PIO_WORKITEM_ROUTINE)DisableWriteCache, CriticalWorkQueue, workItem); } diff --git a/drivers/storage/class/disk_new/disk.h b/drivers/storage/class/disk_new/disk.h index e2a4e1be417..2f2c7eb81d4 100644 --- a/drivers/storage/class/disk_new/disk.h +++ b/drivers/storage/class/disk_new/disk.h @@ -19,6 +19,9 @@ Notes: Revision History: --*/ +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#define NTDDI_VERSION NTDDI_WINXP #include "ntddk.h" #include "scsi.h" diff --git a/drivers/storage/class/disk_new/diskwmi.c b/drivers/storage/class/disk_new/diskwmi.c index 070e191823b..7cc9cf0bbdd 100644 --- a/drivers/storage/class/disk_new/diskwmi.c +++ b/drivers/storage/class/disk_new/diskwmi.c @@ -546,7 +546,7 @@ Return Value: // buffer = (PUCHAR)SrbControl; - (ULONG_PTR)buffer += sizeof(SRB_IO_CONTROL); + buffer += sizeof(SRB_IO_CONTROL); cmdInParameters = (PSENDCMDINPARAMS)buffer; cmdOutParameters = (PSENDCMDOUTPARAMS)buffer; @@ -641,11 +641,16 @@ Return Value: break; } + default: + controlCode = 0; + break; + } } else if (Command == ID_CMD) { controlCode = IOCTL_SCSI_MINIPORT_IDENTIFY; lengthNeeded = IDENTIFY_BUFFER_SIZE + sizeof(SENDCMDOUTPARAMS) -1; } else { + controlCode = 0; ASSERT(FALSE); } @@ -1393,8 +1398,10 @@ NTSTATUS DiskInfoExceptionComplete( retry = TRUE; } - if (retry && ((ULONG)(ULONG_PTR)irpStack->Parameters.Others.Argument4)--) + if (retry && irpStack->Parameters.Others.Argument4) { + irpStack->Parameters.Others.Argument4 = + (PVOID)((ULONG_PTR)irpStack->Parameters.Others.Argument4 - 1); // // Retry request. @@ -2798,6 +2805,7 @@ Return Value: // case ReadLogSectors: { + sizeNeeded = 0; if (diskData->FailurePredictionCapability == FailurePredictionSmart) { @@ -2853,6 +2861,7 @@ Return Value: // ); case WriteLogSectors: { + sizeNeeded = 0; if (diskData->FailurePredictionCapability == FailurePredictionSmart) { @@ -2911,6 +2920,7 @@ Return Value: // uint32 ReturnCode); case ExecuteSelfTest: { + sizeNeeded = 0; if (diskData->FailurePredictionCapability == FailurePredictionSmart) { diff --git a/drivers/storage/class/disk_new/geometry.c b/drivers/storage/class/disk_new/geometry.c index 4607acb80e5..9495e36eedf 100644 --- a/drivers/storage/class/disk_new/geometry.c +++ b/drivers/storage/class/disk_new/geometry.c @@ -1002,7 +1002,7 @@ Return Value: KeInitializeEvent(&event, SynchronizationEvent, FALSE); IoSetCompletionRoutine(irp, - ClassSignalCompletion, + (PIO_COMPLETION_ROUTINE)ClassSignalCompletion, &event, TRUE, TRUE, @@ -1348,7 +1348,7 @@ Return Value: { ULONG i; BOOLEAN found; - PDISK_DETECT_INFO diskInfo; + PDISK_DETECT_INFO diskInfo = NULL; PDISK_DATA diskData = FdoExtension->CommonExtension.DriverData; PAGED_CODE (); diff --git a/drivers/storage/class/disk_new/pnp.c b/drivers/storage/class/disk_new/pnp.c index 94f4461abc2..810265676ce 100644 --- a/drivers/storage/class/disk_new/pnp.c +++ b/drivers/storage/class/disk_new/pnp.c @@ -424,7 +424,7 @@ Return Value: HalExamineMBR(fdoExtension->CommonExtension.DeviceObject, fdoExtension->DiskGeometry.BytesPerSector, (ULONG)0x54, - &dmSkew); + (PVOID*)&dmSkew); if (dmSkew) {