* Sync up to trunk head (r65353).
[reactos.git] / drivers / storage / classpnp / class.c
index 65a6a30..cc55743 100644 (file)
@@ -21,9 +21,12 @@ Revision History:
 
 --*/
 
-#define CLASS_INIT_GUID 1
 #include "classp.h"
-#include "debug.h"
+
+#include <stddef.h>
+
+#include <initguid.h>
+#include <mountdev.h>
 
 #ifdef ALLOC_PRAGMA
     #pragma alloc_text(INIT, DriverEntry)
@@ -92,9 +95,6 @@ DriverEntry(
     return STATUS_SUCCESS;
 }
 
-\f
-
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInitialize()
@@ -116,6 +116,7 @@ Return Value:
 
 --*/
 ULONG
+NTAPI
 ClassInitialize(
     IN  PVOID            Argument1,
     IN  PVOID            Argument2,
@@ -240,7 +241,7 @@ ClassInitialize(
     status = IoAllocateDriverObjectExtension(DriverObject,
                                              CLASS_DRIVER_EXTENSION_KEY,
                                              sizeof(CLASS_DRIVER_EXTENSION),
-                                             &driverExtension);
+                                             (PVOID *)&driverExtension);
 
     if(NT_SUCCESS(status)) {
 
@@ -328,7 +329,7 @@ ClassInitialize(
     status = STATUS_SUCCESS;
     return status;
 } // end ClassInitialize()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInitializeEx()
@@ -362,6 +363,7 @@ Return Value:
 
 --*/
 ULONG
+NTAPI
 ClassInitializeEx(
     IN  PDRIVER_OBJECT   DriverObject,
     IN  LPGUID           Guid,
@@ -402,7 +404,7 @@ ClassInitializeEx(
     return(status);
 
 } // end ClassInitializeEx()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassUnload()
@@ -420,12 +422,13 @@ Status:
 
 --*/
 VOID
+NTAPI
 ClassUnload(
     IN PDRIVER_OBJECT DriverObject
     )
 {
     PCLASS_DRIVER_EXTENSION driverExtension;
-    NTSTATUS status;
+    //NTSTATUS status;
 
     PAGED_CODE();
 
@@ -459,7 +462,7 @@ ClassUnload(
 
     return;
 } // end ClassUnload()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassAddDevice()
@@ -484,6 +487,7 @@ Status: STATUS_NO_SUCH_DEVICE if the class driver did not want this device
 
 --*/
 NTSTATUS
+NTAPI
 ClassAddDevice(
     IN PDRIVER_OBJECT DriverObject,
     IN PDEVICE_OBJECT PhysicalDeviceObject
@@ -502,7 +506,7 @@ ClassAddDevice(
                                                       PhysicalDeviceObject);
     return status;
 } // end ClassAddDevice()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassDispatchPnp()
@@ -524,6 +528,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassDispatchPnp(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp
@@ -537,14 +542,11 @@ ClassDispatchPnp(
     PCLASS_DEV_INFO devInfo;
 
     PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
-    PIO_STACK_LOCATION nextIrpStack = IoGetNextIrpStackLocation(Irp);
 
     NTSTATUS status = Irp->IoStatus.Status;
     BOOLEAN completeRequest = TRUE;
     BOOLEAN lockReleased = FALSE;
 
-    ULONG isRemoved;
-
     PAGED_CODE();
 
     //
@@ -564,7 +566,7 @@ ClassDispatchPnp(
             devInfo = &(initData->PdoData);
         }
 
-        isRemoved = ClassAcquireRemoveLock(DeviceObject, Irp);
+        ClassAcquireRemoveLock(DeviceObject, Irp);
 
         DebugPrint((2, "ClassDispatchPnp (%p,%p): minor code %#x for %s %p\n",
                        DeviceObject, Irp,
@@ -892,7 +894,6 @@ ClassDispatchPnp(
             case IRP_MN_REMOVE_DEVICE:
             case IRP_MN_SURPRISE_REMOVAL: {
 
-                PDEVICE_OBJECT lowerDeviceObject = commonExtension->LowerDeviceObject;
                 UCHAR removeType = irpStack->MinorFunction;
 
                 if (commonExtension->PagingPathCount != 0) {
@@ -1042,7 +1043,7 @@ ClassDispatchPnp(
                         if (NT_SUCCESS(status)) {
 
                             IoAdjustPagingPathCount(
-                                &commonExtension->PagingPathCount,
+                                (PLONG)&commonExtension->PagingPathCount,
                                 irpStack->Parameters.UsageNotification.InPath);
 
                             if (irpStack->Parameters.UsageNotification.InPath) {
@@ -1095,13 +1096,13 @@ ClassDispatchPnp(
                     case DeviceUsageTypeHibernation: {
 
                         IoAdjustPagingPathCount(
-                            &commonExtension->HibernationPathCount,
+                            (PLONG)&commonExtension->HibernationPathCount,
                             irpStack->Parameters.UsageNotification.InPath
                             );
                         status = ClassForwardIrpSynchronous(commonExtension, Irp);
                         if (!NT_SUCCESS(status)) {
                             IoAdjustPagingPathCount(
-                                &commonExtension->HibernationPathCount,
+                                (PLONG)&commonExtension->HibernationPathCount,
                                 !irpStack->Parameters.UsageNotification.InPath
                                 );
                         }
@@ -1111,13 +1112,13 @@ ClassDispatchPnp(
 
                     case DeviceUsageTypeDumpFile: {
                         IoAdjustPagingPathCount(
-                            &commonExtension->DumpPathCount,
+                            (PLONG)&commonExtension->DumpPathCount,
                             irpStack->Parameters.UsageNotification.InPath
                             );
                         status = ClassForwardIrpSynchronous(commonExtension, Irp);
                         if (!NT_SUCCESS(status)) {
                             IoAdjustPagingPathCount(
-                                &commonExtension->DumpPathCount,
+                                (PLONG)&commonExtension->DumpPathCount,
                                 !irpStack->Parameters.UsageNotification.InPath
                                 );
                         }
@@ -1240,7 +1241,7 @@ ClassDispatchPnp(
 
     return status;
 } // end ClassDispatchPnp()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassPnpStartDevice()
@@ -1261,7 +1262,7 @@ Return Value:
     none
 
 --*/
-NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
+NTSTATUS NTAPI ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
 {
     PCLASS_DRIVER_EXTENSION driverExtension;
     PCLASS_INIT_DATA initData;
@@ -1273,7 +1274,7 @@ NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
     BOOLEAN isFdo = commonExtension->IsFdo;
 
     BOOLEAN isMountedDevice = TRUE;
-    UNICODE_STRING  interfaceName;
+    //UNICODE_STRING  interfaceName;
 
     BOOLEAN timerStarted;
 
@@ -1360,7 +1361,7 @@ NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
             status = ClassGetDescriptor(
                         commonExtension->LowerDeviceObject,
                         &propertyId,
-                        &fdoExtension->AdapterDescriptor);
+                        (PSTORAGE_DESCRIPTOR_HEADER *)&fdoExtension->AdapterDescriptor);
 
             if(!NT_SUCCESS(status)) {
 
@@ -1382,7 +1383,7 @@ NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
             status = ClassGetDescriptor(
                         commonExtension->LowerDeviceObject,
                         &propertyId,
-                        &fdoExtension->DeviceDescriptor);
+                        (PSTORAGE_DESCRIPTOR_HEADER *)&fdoExtension->DeviceDescriptor);
 
             if(!NT_SUCCESS(status)) {
 
@@ -1570,12 +1571,12 @@ Return Value:
     NT Status
 
 --*/
-NTSTATUS ClassReadWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS NTAPI ClassReadWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 {
     PCOMMON_DEVICE_EXTENSION commonExtension = DeviceObject->DeviceExtension;
     PDEVICE_OBJECT      lowerDeviceObject = commonExtension->LowerDeviceObject;
     PIO_STACK_LOCATION  currentIrpStack = IoGetCurrentIrpStackLocation(Irp);
-    LARGE_INTEGER       startingOffset = currentIrpStack->Parameters.Read.ByteOffset;
+    //LARGE_INTEGER       startingOffset = currentIrpStack->Parameters.Read.ByteOffset;
     ULONG               transferByteCount = currentIrpStack->Parameters.Read.Length;
     ULONG               isRemoved;
     NTSTATUS            status;
@@ -1725,7 +1726,7 @@ Return Value:
     Status is returned.
 
 --*/
-NTSTATUS ClassReadDriveCapacity(IN PDEVICE_OBJECT Fdo)
+NTSTATUS NTAPI ClassReadDriveCapacity(IN PDEVICE_OBJECT Fdo)
 {
     READ_CAPACITY_DATA readCapacityBuffer = {0};
     NTSTATUS status;
@@ -1738,7 +1739,7 @@ NTSTATUS ClassReadDriveCapacity(IN PDEVICE_OBJECT Fdo)
         if (pkt){
             PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
             KEVENT event;
-            NTSTATUS pktStatus;
+            //NTSTATUS pktStatus;
             IRP pseudoIrp = {0};
 
             /*
@@ -2009,6 +2010,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassSendStartUnit(
     IN PDEVICE_OBJECT Fdo
     )
@@ -2110,7 +2112,7 @@ ClassSendStartUnit(
     ClassAcquireRemoveLock(Fdo, irp);
 
     IoSetCompletionRoutine(irp,
-                           (PIO_COMPLETION_ROUTINE)ClassAsynchronousCompletion,
+                           ClassAsynchronousCompletion,
                            context,
                            TRUE,
                            TRUE,
@@ -2135,7 +2137,7 @@ ClassSendStartUnit(
     return;
 
 } // end StartUnit()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassAsynchronousCompletion() ISSUE-2000/02/18-henrygab - why public?!
@@ -2162,6 +2164,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassAsynchronousCompletion(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -2239,15 +2242,13 @@ ClassAsynchronousCompletion(
     return STATUS_MORE_PROCESSING_REQUIRED;
 
 } // end ClassAsynchronousCompletion()
-\f
 
-
-VOID ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp)
+VOID NTAPI ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp)
 {
-    PCOMMON_DEVICE_EXTENSION commonExt = Fdo->DeviceExtension;
+    //PCOMMON_DEVICE_EXTENSION commonExt = Fdo->DeviceExtension;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
-    PSTORAGE_ADAPTER_DESCRIPTOR adapterDesc = commonExt->PartitionZeroExtension->AdapterDescriptor;
+    //PSTORAGE_ADAPTER_DESCRIPTOR adapterDesc = commonExt->PartitionZeroExtension->AdapterDescriptor;
     PIO_STACK_LOCATION currentSp = IoGetCurrentIrpStackLocation(Irp);
     ULONG entireXferLen = currentSp->Parameters.Read.Length;
     PUCHAR bufPtr = MmGetMdlVirtualAddress(Irp->MdlAddress);
@@ -2256,7 +2257,7 @@ VOID ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp)
     SINGLE_LIST_ENTRY pktList;
     PSINGLE_LIST_ENTRY slistEntry;
     ULONG numPackets;
-    KIRQL oldIrql;
+    //KIRQL oldIrql;
     ULONG i;
 
     /*
@@ -2397,7 +2398,6 @@ VOID ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp)
 
 }
 
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassIoComplete()
@@ -2428,6 +2428,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassIoComplete(
     IN PDEVICE_OBJECT Fdo,
     IN PIRP Irp,
@@ -2611,7 +2612,6 @@ ClassIoComplete(
 
 } // end ClassIoComplete()
 
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSendSrbSynchronous()
@@ -2644,6 +2644,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassSendSrbSynchronous(
     PDEVICE_OBJECT Fdo,
     PSCSI_REQUEST_BLOCK Srb,
@@ -2656,7 +2657,7 @@ ClassSendSrbSynchronous(
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExtension->PrivateFdoData;
     IO_STATUS_BLOCK ioStatus;
-    ULONG controlType;
+    //ULONG controlType;
     PIRP irp;
     PIO_STACK_LOCATION irpStack;
     KEVENT event;
@@ -2836,7 +2837,7 @@ retry:
 
             DebugPrint((1, "ClassSendSrbSynchronous: Exception %lx "
                            "locking buffer\n", status));
-            return status;
+            _SEH2_YIELD(return status);
         } _SEH2_END;
     }
 
@@ -2960,7 +2961,6 @@ retry:
     return status;
 }
 
-\f
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInterpretSenseInfo()
@@ -2990,6 +2990,7 @@ Return Value:
 
 --*/
 BOOLEAN
+NTAPI
 ClassInterpretSenseInfo(
     IN PDEVICE_OBJECT Fdo,
     IN PSCSI_REQUEST_BLOCK Srb,
@@ -3001,7 +3002,6 @@ ClassInterpretSenseInfo(
     )
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = Fdo->DeviceExtension;
-    PCOMMON_DEVICE_EXTENSION commonExtension = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExtension->PrivateFdoData;
 
     PSENSE_DATA       senseBuffer = Srb->SenseInfoBuffer;
@@ -3443,7 +3443,7 @@ ClassInterpretSenseInfo(
 
         case SCSI_SENSE_UNIT_ATTENTION: {
 
-            PVPB vpb;
+            //PVPB vpb;
             ULONG count;
 
             //
@@ -3451,7 +3451,7 @@ ClassInterpretSenseInfo(
             // count for the physical device
             //
 
-            count = InterlockedIncrement(&fdoExtension->MediaChangeCount);
+            count = InterlockedIncrement((PLONG)&fdoExtension->MediaChangeCount);
             DebugPrint((ClassDebugSenseInfo, "ClassInterpretSenseInfo: "
                         "Media change count for device %d incremented to %#lx\n",
                         fdoExtension->DeviceNumber, count));
@@ -3916,7 +3916,7 @@ ClassInterpretSenseInfo(
         ULONG totalSize;
         ULONG senseBufferSize = 0;
         IO_ERROR_LOG_PACKET staticErrLogEntry = {0};
-        CLASS_ERROR_LOG_DATA staticErrLogData = {0};
+        CLASS_ERROR_LOG_DATA staticErrLogData = { { { 0 } } };
 
         //
         // Calculate the total size of the error log entry.
@@ -4095,8 +4095,6 @@ ClassInterpretSenseInfo(
 
 } // end ClassInterpretSenseInfo()
 
-
-\f
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassModeSense()
@@ -4121,7 +4119,7 @@ Return Value:
     Length of the transferred data is returned.
 
 --*/
-ULONG ClassModeSense(   IN PDEVICE_OBJECT Fdo,
+ULONG NTAPI ClassModeSense(   IN PDEVICE_OBJECT Fdo,
                         IN PCHAR ModeSenseBuffer,
                         IN ULONG Length,
                         IN UCHAR PageMode)
@@ -4137,7 +4135,7 @@ ULONG ClassModeSense(   IN PDEVICE_OBJECT Fdo,
         TRANSFER_PACKET *pkt = DequeueFreeTransferPacket(Fdo, TRUE);
         if (pkt){
             KEVENT event;
-            NTSTATUS pktStatus;
+            //NTSTATUS pktStatus;
             IRP pseudoIrp = {0};
 
             /*
@@ -4182,7 +4180,6 @@ ULONG ClassModeSense(   IN PDEVICE_OBJECT Fdo,
     return lengthTransferred;
 }
 
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassFindModePage()
@@ -4208,6 +4205,7 @@ Return Value:
 
 --*/
 PVOID
+NTAPI
 ClassFindModePage(
     IN PCHAR ModeSenseBuffer,
     IN ULONG Length,
@@ -4215,7 +4213,7 @@ ClassFindModePage(
     IN BOOLEAN Use6Byte
     )
 {
-    PUCHAR limit;
+    PCHAR limit;
     ULONG  parameterHeaderLength;
     PVOID result = NULL;
 
@@ -4279,7 +4277,7 @@ ClassFindModePage(
 
     return result;
 } // end ClassFindModePage()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSendSrbAsynchronous()
@@ -4319,6 +4317,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassSendSrbAsynchronous(
     PDEVICE_OBJECT Fdo,
     PSCSI_REQUEST_BLOCK Srb,
@@ -4506,7 +4505,7 @@ ClassSendSrbAsynchronous(
     return STATUS_PENDING;
 
 } // end ClassSendSrbAsynchronous()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassDeviceControlDispatch()
@@ -4529,6 +4528,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassDeviceControlDispatch(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp
@@ -4559,7 +4559,6 @@ ClassDeviceControlDispatch(
     return commonExtension->DevInfo->ClassDeviceControl(DeviceObject,Irp);
 } // end ClassDeviceControlDispatch()
 
-\f
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassDeviceControl()
@@ -4587,6 +4586,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassDeviceControl(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp
@@ -4613,7 +4613,7 @@ ClassDeviceControl(
     if ((controlCode == IOCTL_SCSI_PASS_THROUGH) ||
         (controlCode == IOCTL_SCSI_PASS_THROUGH_DIRECT)) {
 
-        PSCSI_PASS_THROUGH scsiPass;
+        //PSCSI_PASS_THROUGH scsiPass;
 
         //
         // Validiate the user buffer.
@@ -5585,7 +5585,7 @@ SetStatusAndReturn:
 
     return status;
 } // end ClassDeviceControl()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassShutdownFlush()
@@ -5609,6 +5609,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassShutdownFlush(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp
@@ -5618,7 +5619,7 @@ ClassShutdownFlush(
 
     ULONG isRemoved;
 
-    NTSTATUS status;
+    //NTSTATUS status;
 
     isRemoved = ClassAcquireRemoveLock(DeviceObject, Irp);
 
@@ -5653,7 +5654,7 @@ ClassShutdownFlush(
 
     return STATUS_INVALID_DEVICE_REQUEST;
 } // end ClassShutdownFlush()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassCreateDeviceObject()
@@ -5682,6 +5683,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassCreateDeviceObject(
     IN PDRIVER_OBJECT          DriverObject,
     IN PCCHAR                  ObjectNameBuffer,
@@ -5693,7 +5695,7 @@ ClassCreateDeviceObject(
     BOOLEAN        isPartitionable;
     STRING         ntNameString;
     UNICODE_STRING ntUnicodeString;
-    NTSTATUS       status, status2;
+    NTSTATUS       status;
     PDEVICE_OBJECT deviceObject = NULL;
 
     ULONG          characteristics;
@@ -5956,7 +5958,7 @@ ClassCreateDeviceObject(
 
     return status;
 } // end ClassCreateDeviceObject()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassClaimDevice()
@@ -5979,6 +5981,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassClaimDevice(
     IN PDEVICE_OBJECT LowerDeviceObject,
     IN BOOLEAN Release
@@ -6079,7 +6082,7 @@ ClassClaimDevice(
 
     return status;
 } // end ClassClaimDevice()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInternalIoControl()
@@ -6110,6 +6113,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassInternalIoControl(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp
@@ -6161,7 +6165,7 @@ ClassInternalIoControl(
 
     return IoCallDriver(commonExtension->LowerDeviceObject, Irp);
 } // end ClassInternalIoControl()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassQueryTimeOutRegistryValue()
@@ -6182,6 +6186,7 @@ Return Value:
 
 --*/
 ULONG
+NTAPI
 ClassQueryTimeOutRegistryValue(
     IN PDEVICE_OBJECT DeviceObject
     )
@@ -6264,7 +6269,7 @@ ClassQueryTimeOutRegistryValue(
     return timeOut;
 
 } // end ClassQueryTimeOutRegistryValue()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassCheckVerifyComplete() ISSUE-2000/02/18-henrygab - why public?!
@@ -6289,6 +6294,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassCheckVerifyComplete(
     IN PDEVICE_OBJECT Fdo,
     IN PIRP Irp,
@@ -6328,7 +6334,7 @@ ClassCheckVerifyComplete(
     return STATUS_MORE_PROCESSING_REQUIRED;
 
 } // end ClassCheckVerifyComplete()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassGetDescriptor()
@@ -6354,6 +6360,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassGetDescriptor(
     IN PDEVICE_OBJECT DeviceObject,
     IN PSTORAGE_PROPERTY_ID PropertyId,
@@ -6366,7 +6373,7 @@ ClassGetDescriptor(
     PSTORAGE_DESCRIPTOR_HEADER descriptor = NULL;
     ULONG length;
 
-    UCHAR pass = 0;
+    //UCHAR pass = 0;
 
     PAGED_CODE();
 
@@ -6477,7 +6484,7 @@ ClassGetDescriptor(
     *Descriptor = descriptor;
     return ioStatus.Status;
 } // end ClassGetDescriptor()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSignalCompletion()
@@ -6503,17 +6510,20 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassSignalCompletion(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
-    IN PKEVENT Event
+    IN PVOID Context
     )
 {
+    PKEVENT Event = Context;
+
     KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
 
     return STATUS_MORE_PROCESSING_REQUIRED;
 } // end ClassSignalCompletion()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassPnpQueryFdoRelations()
@@ -6537,6 +6547,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassPnpQueryFdoRelations(
     IN PDEVICE_OBJECT Fdo,
     IN PIRP Irp
@@ -6546,7 +6557,6 @@ ClassPnpQueryFdoRelations(
     PCLASS_DRIVER_EXTENSION
         driverExtension = IoGetDriverObjectExtension(Fdo->DriverObject,
                                                      CLASS_DRIVER_EXTENSION_KEY);
-    NTSTATUS status;
 
     PAGED_CODE();
 
@@ -6555,8 +6565,8 @@ ClassPnpQueryFdoRelations(
     // one.
     //
 
-    if(InterlockedIncrement(&(fdoExtension->EnumerationInterlock)) == 1) {
-        status = driverExtension->InitData.ClassEnumerateDevice(Fdo);
+    if(InterlockedIncrement((PLONG)&fdoExtension->EnumerationInterlock) == 1) {
+        driverExtension->InitData.ClassEnumerateDevice(Fdo);
     }
 
     Irp->IoStatus.Information = (ULONG_PTR) NULL;
@@ -6565,11 +6575,11 @@ ClassPnpQueryFdoRelations(
                                 Fdo,
                                 BusRelations,
                                 (PDEVICE_RELATIONS*)&Irp->IoStatus.Information);
-    InterlockedDecrement(&(fdoExtension->EnumerationInterlock));
+    InterlockedDecrement((PLONG)&fdoExtension->EnumerationInterlock);
 
     return Irp->IoStatus.Status;
 } // end ClassPnpQueryFdoRelations()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassMarkChildrenMissing()
@@ -6590,6 +6600,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassMarkChildrenMissing(
     IN PFUNCTIONAL_DEVICE_EXTENSION Fdo
     )
@@ -6615,7 +6626,7 @@ ClassMarkChildrenMissing(
     ClassReleaseChildLock(Fdo);
     return;
 } // end ClassMarkChildrenMissing()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassMarkChildMissing()
@@ -6642,6 +6653,7 @@ Return Value:
 
 --*/
 BOOLEAN
+NTAPI
 ClassMarkChildMissing(
     IN PPHYSICAL_DEVICE_EXTENSION Child,
     IN BOOLEAN AcquireChildLock
@@ -6668,7 +6680,7 @@ ClassMarkChildMissing(
 
     return returnValue;
 } // end ClassMarkChildMissing()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassRetrieveDeviceRelations()
@@ -6693,6 +6705,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassRetrieveDeviceRelations(
     IN PDEVICE_OBJECT Fdo,
     IN DEVICE_RELATION_TYPE RelationType,
@@ -6782,7 +6795,7 @@ ClassRetrieveDeviceRelations(
     ClassReleaseChildLock(fdoExtension);
     return STATUS_SUCCESS;
 } // end ClassRetrieveDeviceRelations()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassGetPdoId()
@@ -6807,6 +6820,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassGetPdoId(
     IN PDEVICE_OBJECT Pdo,
     IN BUS_QUERY_ID_TYPE IdType,
@@ -6824,7 +6838,7 @@ ClassGetPdoId(
 
     return driverExtension->InitData.ClassQueryId( Pdo, IdType, IdString);
 } // end ClassGetPdoId()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassQueryPnpCapabilities()
@@ -6845,6 +6859,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassQueryPnpCapabilities(
     IN PDEVICE_OBJECT DeviceObject,
     IN PDEVICE_CAPABILITIES Capabilities
@@ -6874,7 +6889,7 @@ ClassQueryPnpCapabilities(
         return STATUS_NOT_IMPLEMENTED;
     }
 } // end ClassQueryPnpCapabilities()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInvalidateBusRelations()
@@ -6896,6 +6911,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassInvalidateBusRelations(
     IN PDEVICE_OBJECT Fdo
     )
@@ -6912,10 +6928,10 @@ ClassInvalidateBusRelations(
     ASSERT_FDO(Fdo);
     ASSERT(driverExtension->InitData.ClassEnumerateDevice != NULL);
 
-    if(InterlockedIncrement(&(fdoExtension->EnumerationInterlock)) == 1) {
+    if(InterlockedIncrement((PLONG)&fdoExtension->EnumerationInterlock) == 1) {
         status = driverExtension->InitData.ClassEnumerateDevice(Fdo);
     }
-    InterlockedDecrement(&(fdoExtension->EnumerationInterlock));
+    InterlockedDecrement((PLONG)&fdoExtension->EnumerationInterlock);
 
     if(!NT_SUCCESS(status)) {
 
@@ -6927,7 +6943,7 @@ ClassInvalidateBusRelations(
 
     return;
 } // end ClassInvalidateBusRelations()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassRemoveDevice() ISSUE-2000/02/18-henrygab - why public?!
@@ -6951,6 +6967,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassRemoveDevice(
     IN PDEVICE_OBJECT DeviceObject,
     IN UCHAR RemoveType
@@ -7072,7 +7089,7 @@ ClassRemoveDevice(
         status = STATUS_SUCCESS;
 
         if (commonExtension->IsFdo){
-            PDEVICE_OBJECT pdo;
+            //PDEVICE_OBJECT pdo;
             PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = DeviceObject->DeviceExtension;
 
             ClasspDisableTimer(fdoExtension->DeviceObject);
@@ -7106,7 +7123,7 @@ ClassRemoveDevice(
                  *  to delete it ourselves.
                  */
                 ClassAcquireChildLock(fdoExtension);
-                while (child = ClassRemoveChild(fdoExtension, NULL, FALSE)){
+                while ((child = ClassRemoveChild(fdoExtension, NULL, FALSE))){
 
                     //
                     // Yank the pdo.  This routine will unlink the device from the
@@ -7196,7 +7213,7 @@ ClassRemoveDevice(
 
     return STATUS_SUCCESS;
 } // end ClassRemoveDevice()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassGetDriverExtension()
@@ -7215,13 +7232,14 @@ Return Value:
 
 --*/
 PCLASS_DRIVER_EXTENSION
+NTAPI
 ClassGetDriverExtension(
     IN PDRIVER_OBJECT DriverObject
     )
 {
     return IoGetDriverObjectExtension(DriverObject, CLASS_DRIVER_EXTENSION_KEY);
 } // end ClassGetDriverExtension()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspStartIo()
@@ -7240,6 +7258,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspStartIo(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp
@@ -7270,7 +7289,7 @@ ClasspStartIo(
 
     return;
 } // ClasspStartIo()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassUpdateInformationInRegistry()
@@ -7299,6 +7318,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassUpdateInformationInRegistry(
     IN PDEVICE_OBJECT     Fdo,
     IN PCHAR              DeviceName,
@@ -7307,11 +7327,10 @@ ClassUpdateInformationInRegistry(
     IN ULONG              InquiryDataLength
     )
 {
-    PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
     NTSTATUS          status;
     SCSI_ADDRESS      scsiAddress;
     OBJECT_ATTRIBUTES objectAttributes;
-    PUCHAR            buffer;
+    PSTR              buffer;
     STRING            string;
     UNICODE_STRING    unicodeName;
     UNICODE_STRING    unicodeRegistryPath;
@@ -7323,7 +7342,6 @@ ClassUpdateInformationInRegistry(
     PAGED_CODE();
 
     ASSERT(DeviceName);
-    fdoExtension = Fdo->DeviceExtension;
     buffer = NULL;
     targetKey = NULL;
     RtlZeroMemory(&unicodeName,         sizeof(UNICODE_STRING));
@@ -7426,7 +7444,7 @@ ClassUpdateInformationInRegistry(
 
         RtlInitUnicodeString(&unicodeName, L"DeviceName");
 
-        sprintf(buffer, "%s%d", DeviceName, DeviceNumber);
+        sprintf(buffer, "%s%lu", DeviceName, DeviceNumber);
         RtlInitString(&string, buffer);
         status = RtlAnsiStringToUnicodeString(&unicodeData,
                                               &string,
@@ -7477,7 +7495,7 @@ ClassUpdateInformationInRegistry(
     }
 
 } // end ClassUpdateInformationInRegistry()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspSendSynchronousCompletion()
@@ -7501,6 +7519,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspSendSynchronousCompletion(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -7539,13 +7558,14 @@ ClasspSendSynchronousCompletion(
 
     return STATUS_MORE_PROCESSING_REQUIRED;
 } // end ClasspSendSynchronousCompletion()
-\f
+
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClasspRegisterMountedDeviceInterface
 
 --*/
 VOID
+NTAPI
 ClasspRegisterMountedDeviceInterface(
     IN PDEVICE_OBJECT DeviceObject
     )
@@ -7598,7 +7618,7 @@ ClasspRegisterMountedDeviceInterface(
     }
     return;
 } // end ClasspRegisterMountedDeviceInterface()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSendDeviceIoControlSynchronous()
@@ -7636,6 +7656,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassSendDeviceIoControlSynchronous(
     IN ULONG IoControlCode,
     IN PDEVICE_OBJECT TargetDeviceObject,
@@ -7874,7 +7895,7 @@ ClassSendDeviceIoControlSynchronous(
 
     return;
 } // end ClassSendDeviceIoControlSynchronous()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassForwardIrpSynchronous()
@@ -7893,6 +7914,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassForwardIrpSynchronous(
     IN PCOMMON_DEVICE_EXTENSION CommonExtension,
     IN PIRP Irp
@@ -7901,7 +7923,7 @@ ClassForwardIrpSynchronous(
     IoCopyCurrentIrpStackLocationToNext(Irp);
     return ClassSendIrpSynchronous(CommonExtension->LowerDeviceObject, Irp);
 } // end ClassForwardIrpSynchronous()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSendIrpSynchronous()
@@ -7922,6 +7944,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassSendIrpSynchronous(
     IN PDEVICE_OBJECT TargetDeviceObject,
     IN PIRP Irp
@@ -7999,7 +8022,7 @@ ClassSendIrpSynchronous(
 
     return status;
 } // end ClassSendIrpSynchronous()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassGetVpb()
@@ -8021,25 +8044,27 @@ Return Value:
 
 --*/
 PVPB
+NTAPI
 ClassGetVpb(
     IN PDEVICE_OBJECT DeviceObject
     )
 {
     return DeviceObject->Vpb;
 } // end ClassGetVpb()
-\f
+
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClasspAllocateReleaseRequest
 
 --*/
 NTSTATUS
+NTAPI
 ClasspAllocateReleaseRequest(
     IN PDEVICE_OBJECT Fdo
     )
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = Fdo->DeviceExtension;
-    PIO_STACK_LOCATION irpStack;
+    //PIO_STACK_LOCATION irpStack;
 
     KeInitializeSpinLock(&(fdoExtension->ReleaseQueueSpinLock));
 
@@ -8062,13 +8087,14 @@ ClasspAllocateReleaseRequest(
 
     return STATUS_SUCCESS;
 } // end ClasspAllocateReleaseRequest()
-\f
+
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClasspFreeReleaseRequest
 
 --*/
 VOID
+NTAPI
 ClasspFreeReleaseRequest(
     IN PDEVICE_OBJECT Fdo
     )
@@ -8105,7 +8131,7 @@ ClasspFreeReleaseRequest(
 
     return;
 } // end ClasspFreeReleaseRequest()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassReleaseQueue()
@@ -8130,6 +8156,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassReleaseQueue(
     IN PDEVICE_OBJECT Fdo
     )
@@ -8137,7 +8164,7 @@ ClassReleaseQueue(
     ClasspReleaseQueue(Fdo, NULL);
     return;
 } // end ClassReleaseQueue()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspAllocateReleaseQueueIrp()
@@ -8162,11 +8189,12 @@ Notes:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspAllocateReleaseQueueIrp(
     PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
 {
-    KIRQL oldIrql;
+    //KIRQL oldIrql;
     UCHAR lowerStackSize;
 
     //
@@ -8206,7 +8234,6 @@ ClasspAllocateReleaseQueueIrp(
     return STATUS_SUCCESS;
 }
 
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspReleaseQueue()
@@ -8238,6 +8265,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspReleaseQueue(
     IN PDEVICE_OBJECT Fdo,
     IN PIRP ReleaseQueueIrp OPTIONAL
@@ -8353,7 +8381,7 @@ ClasspReleaseQueue(
     return;
 
 } // end ClassReleaseQueue()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassReleaseQueueCompletion()
@@ -8380,6 +8408,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassReleaseQueueCompletion(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -8429,7 +8458,7 @@ ClassReleaseQueueCompletion(
     return STATUS_MORE_PROCESSING_REQUIRED;
 
 } // ClassAsynchronousCompletion()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassAcquireChildLock()
@@ -8450,6 +8479,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassAcquireChildLock(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -8472,7 +8502,7 @@ ClassAcquireChildLock(
     FdoExtension->ChildLockAcquisitionCount++;
     return;
 }
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassReleaseChildLock() ISSUE-2000/02/18-henrygab - not documented
@@ -8492,6 +8522,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassReleaseChildLock(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -8508,7 +8539,7 @@ ClassReleaseChildLock(
 
     return;
 } // end ClassReleaseChildLock(
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassAddChild()
@@ -8531,6 +8562,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassAddChild(
     IN PFUNCTIONAL_DEVICE_EXTENSION Parent,
     IN PPHYSICAL_DEVICE_EXTENSION Child,
@@ -8565,7 +8597,7 @@ ClassAddChild(
     }
     return;
 } // end ClassAddChild()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassRemoveChild()
@@ -8592,6 +8624,7 @@ Return Value:
 
 --*/
 PPHYSICAL_DEVICE_EXTENSION
+NTAPI
 ClassRemoveChild(
     IN PFUNCTIONAL_DEVICE_EXTENSION Parent,
     IN PPHYSICAL_DEVICE_EXTENSION Child,
@@ -8659,20 +8692,21 @@ ClassRemoveChild(
     return Child;
 } // end ClassRemoveChild()
 
-\f
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClasspRetryRequestDpc
 
 --*/
 VOID
+NTAPI
 ClasspRetryRequestDpc(
     IN PKDPC Dpc,
-    IN PDEVICE_OBJECT DeviceObject,
+    IN PVOID Context,
     IN PVOID Arg1,
     IN PVOID Arg2
     )
 {
+    PDEVICE_OBJECT deviceObject = Context;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
     PCOMMON_DEVICE_EXTENSION commonExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData;
@@ -8680,9 +8714,9 @@ ClasspRetryRequestDpc(
     KIRQL irql;
 
 
-    commonExtension = DeviceObject->DeviceExtension;
+    commonExtension = deviceObject->DeviceExtension;
     ASSERT(commonExtension->IsFdo);
-    fdoExtension = DeviceObject->DeviceExtension;
+    fdoExtension = deviceObject->DeviceExtension;
     fdoData = fdoExtension->PrivateFdoData;
 
 
@@ -8735,13 +8769,14 @@ ClasspRetryRequestDpc(
     return;
 
 } // end ClasspRetryRequestDpc()
-\f
+
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClassRetryRequest
 
 --*/
 VOID
+NTAPI
 ClassRetryRequest(
     IN PDEVICE_OBJECT SelfDeviceObject,
     IN PIRP           Irp,
@@ -8751,7 +8786,7 @@ ClassRetryRequest(
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData;
     PCLASS_RETRY_INFO  retryInfo;
-    PCLASS_RETRY_INFO *previousNext;
+    //PCLASS_RETRY_INFO *previousNext;
     LARGE_INTEGER      delta;
     KIRQL irql;
 
@@ -8867,13 +8902,14 @@ ClassRetryRequest(
 
 
 } // end ClassRetryRequest()
-\f
+
 /*++
 
     ISSUE-2000/02/20-henrygab Not documented ClasspRetryDpcTimer
 
 --*/
 VOID
+NTAPI
 ClasspRetryDpcTimer(
     IN PCLASS_PRIVATE_FDO_DATA FdoData
     )
@@ -8922,8 +8958,9 @@ ClasspRetryDpcTimer(
 
     return;
 } // end ClasspRetryDpcTimer()
-\f
+
 NTSTATUS
+NTAPI
 ClasspInitializeHotplugInfo(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -9040,8 +9077,9 @@ ClasspInitializeHotplugInfo(
 
     return STATUS_SUCCESS;
 }
-\f
+
 VOID
+NTAPI
 ClasspScanForClassHacks(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN ULONG_PTR Data
@@ -9057,8 +9095,9 @@ ClasspScanForClassHacks(
     SET_FLAG(FdoExtension->PrivateFdoData->HackFlags, Data);
     return;
 }
-\f
+
 VOID
+NTAPI
 ClasspScanForSpecialInRegistry(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -9177,7 +9216,3 @@ cleanupScanForSpecial:
 
     return;
 }
-
-
-
-