* Sync up to trunk head (r65353).
[reactos.git] / drivers / storage / classpnp / autorun.c
index 0d2f36d..3a32857 100644 (file)
@@ -22,7 +22,8 @@ Revision History:
 --*/
 
 #include "classp.h"
-#include "debug.h"
+
+#include <wmidata.h>
 
 #define GESN_TIMEOUT_VALUE (0x4)
 #define GESN_BUFFER_SIZE (0x8)
@@ -55,24 +56,28 @@ GUID StoragePredictFailureEventGuid = WMI_STORAGE_PREDICT_FAILURE_EVENT_GUID;
                 (! fdoExtension->PowerDownInProgress) )
 
 BOOLEAN
+NTAPI
 ClasspIsMediaChangeDisabledDueToHardwareLimitation(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PUNICODE_STRING RegistryPath
     );
 
 NTSTATUS
+NTAPI
 ClasspMediaChangeDeviceInstanceOverride(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     OUT PBOOLEAN Enabled
     );
 
 BOOLEAN
+NTAPI
 ClasspIsMediaChangeDisabledForClass(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PUNICODE_STRING RegistryPath
     );
 
 VOID
+NTAPI
 ClasspSetMediaChangeStateEx(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN MEDIA_CHANGE_DETECTION_STATE NewState,
@@ -81,6 +86,7 @@ ClasspSetMediaChangeStateEx(
     );
 
 NTSTATUS
+NTAPI
 ClasspMediaChangeRegistryCallBack(
     IN PWSTR ValueName,
     IN ULONG ValueType,
@@ -91,19 +97,17 @@ ClasspMediaChangeRegistryCallBack(
     );
 
 VOID
+NTAPI
 ClasspSendMediaStateIrp(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PMEDIA_CHANGE_DETECTION_INFO Info,
     IN ULONG CountDown
     );
 
-VOID
-ClasspFailurePredict(
-    IN PDEVICE_OBJECT DeviceObject,
-    IN PFAILURE_PREDICTION_INFO Info
-    );
+IO_WORKITEM_ROUTINE ClasspFailurePredict;
 
 NTSTATUS
+NTAPI
 ClasspInitializePolling(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN BOOLEAN AllowDriveToSleep
@@ -131,6 +135,7 @@ ClasspInitializePolling(
 
 // ISSUE -- make this public?
 VOID
+NTAPI
 ClassSendEjectionNotification(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -163,8 +168,8 @@ ClassSendEjectionNotification(
     return;
 }
 
-\f
 VOID
+NTAPI
 ClasspSendNotification(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN const GUID * Guid,
@@ -220,9 +225,6 @@ ClasspSendNotification(
     return;
 }
 
-
-
-
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspInterpretGesnData()
@@ -280,6 +282,7 @@ Notes:
 
 --*/
 VOID
+NTAPI
 ClasspInterpretGesnData(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PNOTIFICATION_EVENT_STATUS_HEADER Header,
@@ -434,7 +437,7 @@ ClasspInterpretGesnData(
         KdPrintEx((DPFLTR_CLASSPNP_ID, ClassDebugMCN,
                    "Classpnp => GESN::EXTERNAL: Event: %x Status %x Req %x\n",
                    externalInfo->ExternalEvent, externalInfo->ExternalStatus,
-                   (externalInfo->Request[0] >> 8) | externalInfo->Request[1]
+                   (externalInfo->Request[0] << 8) | externalInfo->Request[1]
                    ));
 
         RtlZeroMemory(&externalData, sizeof(DEVICE_EVENT_EXTERNAL_REQUEST));
@@ -482,7 +485,7 @@ ClasspInterpretGesnData(
                 SET_FLAG(FdoExtension->DeviceObject->Flags, DO_VERIFY_VOLUME);
 
             }
-            InterlockedIncrement(&FdoExtension->MediaChangeCount);
+            InterlockedIncrement((PLONG)&FdoExtension->MediaChangeCount);
             ClasspSetMediaChangeStateEx(FdoExtension,
                                         MediaPresent,
                                         FALSE,
@@ -555,7 +558,7 @@ ClasspInterpretGesnData(
     } // end switch on notification class    
     return;
 }
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspInternalSetMediaChangeState()
@@ -584,6 +587,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspInternalSetMediaChangeState(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN MEDIA_CHANGE_DETECTION_STATE NewState,
@@ -591,12 +595,12 @@ ClasspInternalSetMediaChangeState(
     )
 {
 #if DBG
-    PUCHAR states[] = {"Unknown", "Present", "Not Present"};
+    PCSTR states[] = {"Unknown", "Present", "Not Present"};
 #endif
     MEDIA_CHANGE_DETECTION_STATE oldMediaState;
     PMEDIA_CHANGE_DETECTION_INFO info = FdoExtension->MediaChangeDetectionInfo;
     ULONG data;
-    NTSTATUS status;
+    //NTSTATUS status;
 
     ASSERT((NewState >= MediaUnknown) && (NewState <= MediaNotPresent));
 
@@ -676,7 +680,7 @@ ClasspInternalSetMediaChangeState(
     
     return;
 } // end ClasspInternalSetMediaChangeState()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSetMediaChangeState()
@@ -708,6 +712,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspSetMediaChangeStateEx(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN MEDIA_CHANGE_DETECTION_STATE NewState,
@@ -769,7 +774,9 @@ ClasspSetMediaChangeStateEx(
 
     return;
 } // end ClassSetMediaChangeStateEx()
+
 VOID
+NTAPI
 ClassSetMediaChangeState(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN MEDIA_CHANGE_DETECTION_STATE NewState,
@@ -779,7 +786,7 @@ ClassSetMediaChangeState(
     ClasspSetMediaChangeStateEx(FdoExtension, NewState, Wait, FALSE);
     return;
 }
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspMediaChangeDetectionCompletion()
@@ -803,16 +810,18 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspMediaChangeDetectionCompletion(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
-    PSCSI_REQUEST_BLOCK Srb
+    PVOID Context
     )
 {
+    PSCSI_REQUEST_BLOCK srb = Context;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData;
     PMEDIA_CHANGE_DETECTION_INFO info;
-    PIO_STACK_LOCATION  nextIrpStack;
+    //PIO_STACK_LOCATION  nextIrpStack;
     NTSTATUS status;
     BOOLEAN retryImmediately = FALSE;
 
@@ -828,7 +837,7 @@ ClasspMediaChangeDetectionCompletion(
     info         = fdoExtension->MediaChangeDetectionInfo;
 
     ASSERT(info->MediaChangeIrp != NULL);
-    ASSERT(!TEST_FLAG(Srb->SrbStatus, SRB_STATUS_QUEUE_FROZEN));
+    ASSERT(!TEST_FLAG(srb->SrbStatus, SRB_STATUS_QUEUE_FROZEN));
     DBGTRACE(ClassDebugMCN, ("> ClasspMediaChangeDetectionCompletion: Device %p completed MCN irp %p.", DeviceObject, Irp));
 
     /*
@@ -843,15 +852,15 @@ ClasspMediaChangeDetectionCompletion(
      *  This hack only applies to drives with the CAUSE_NOT_REPORTABLE_HACK bit set; this
      *  is set by disk.sys when HackCauseNotReportableHack is set for the drive in its BadControllers list.
      */
-    if ((SRB_STATUS(Srb->SrbStatus) != SRB_STATUS_SUCCESS) &&
+    if ((SRB_STATUS(srb->SrbStatus) != SRB_STATUS_SUCCESS) &&
         TEST_FLAG(fdoExtension->ScanForSpecialFlags, CLASS_SPECIAL_CAUSE_NOT_REPORTABLE_HACK) &&
-        (Srb->SenseInfoBufferLength >= RTL_SIZEOF_THROUGH_FIELD(SENSE_DATA, AdditionalSenseCode))){
+        (srb->SenseInfoBufferLength >= RTL_SIZEOF_THROUGH_FIELD(SENSE_DATA, AdditionalSenseCode))){
         
-        PSENSE_DATA senseData = Srb->SenseInfoBuffer;
+        PSENSE_DATA senseData = srb->SenseInfoBuffer;
         
         if ((senseData->SenseKey == SCSI_SENSE_NOT_READY) && 
             (senseData->AdditionalSenseCode == SCSI_ADSENSE_LUN_NOT_READY)){
-            Srb->SrbStatus = SRB_STATUS_SUCCESS;
+            srb->SrbStatus = SRB_STATUS_SUCCESS;
         }
     }       
         
@@ -861,12 +870,12 @@ ClasspMediaChangeDetectionCompletion(
     // to call ClassError() with correct parameters.
     //
     status = STATUS_SUCCESS;
-    if (SRB_STATUS(Srb->SrbStatus) != SRB_STATUS_SUCCESS) {
+    if (SRB_STATUS(srb->SrbStatus) != SRB_STATUS_SUCCESS) {
 
-        DBGTRACE(ClassDebugMCN, ("ClasspMediaChangeDetectionCompletion - failed - srb status=%s, sense=%s/%s/%s.", DBGGETSRBSTATUSSTR(Srb), DBGGETSENSECODESTR(Srb), DBGGETADSENSECODESTR(Srb), DBGGETADSENSEQUALIFIERSTR(Srb)));
+        DBGTRACE(ClassDebugMCN, ("ClasspMediaChangeDetectionCompletion - failed - srb status=%s, sense=%s/%s/%s.", DBGGETSRBSTATUSSTR(srb), DBGGETSENSECODESTR(srb), DBGGETADSENSECODESTR(srb), DBGGETADSENSEQUALIFIERSTR(srb)));
 
         ClassInterpretSenseInfo(DeviceObject,
-                                Srb,
+                                srb,
                                 IRP_MJ_SCSI,
                                 0,
                                 0,
@@ -924,8 +933,8 @@ ClasspMediaChangeDetectionCompletion(
     // free port-allocated sense buffer, if any.
     //
 
-    if (PORT_ALLOCATED_SENSE(fdoExtension, Srb)) {
-        FREE_PORT_ALLOCATED_SENSE_BUFFER(fdoExtension, Srb);
+    if (PORT_ALLOCATED_SENSE(fdoExtension, srb)) {
+        FREE_PORT_ALLOCATED_SENSE_BUFFER(fdoExtension, srb);
     }
 
     //
@@ -933,7 +942,7 @@ ClasspMediaChangeDetectionCompletion(
     //
 
     ASSERT(IoGetNextIrpStackLocation(Irp));
-    IoGetNextIrpStackLocation(Irp)->Parameters.Scsi.Srb = Srb;
+    IoGetNextIrpStackLocation(Irp)->Parameters.Scsi.Srb = srb;
 
     //
     // Reset the MCN timer.
@@ -1004,7 +1013,7 @@ ClasspMediaChangeDetectionCompletion(
 
     return STATUS_MORE_PROCESSING_REQUIRED;
 } 
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspSendTestUnitIrp() - ISSUE-2000/02/20-henrygab - not documented
@@ -1023,6 +1032,7 @@ Return Value:
 
 --*/
 PIRP
+NTAPI
 ClasspPrepareMcnIrp(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PMEDIA_CHANGE_DETECTION_INFO Info,
@@ -1183,7 +1193,7 @@ ClasspPrepareMcnIrp(
     return irp;
 
 }
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspSendMediaStateIrp() - ISSUE-2000/02/20-henrygab - not documented
@@ -1201,6 +1211,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspSendMediaStateIrp(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PMEDIA_CHANGE_DETECTION_INFO Info,
@@ -1209,8 +1220,8 @@ ClasspSendMediaStateIrp(
 {
     BOOLEAN requestPending = FALSE;
     LONG irpInUse;
-    LARGE_INTEGER zero;
-    NTSTATUS status;
+    //LARGE_INTEGER zero;
+    //NTSTATUS status;
 
     DBGTRACE(ClassDebugMCN, ("> ClasspSendMediaStateIrp"));
 
@@ -1368,7 +1379,7 @@ ClasspSendMediaStateIrp(
     
     return;
 } // end ClasspSendMediaStateIrp()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassCheckMediaState()
@@ -1389,6 +1400,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassCheckMediaState(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -1421,7 +1433,7 @@ ClassCheckMediaState(
 
     return;
 } // end ClassCheckMediaState()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassResetMediaChangeTimer()
@@ -1440,6 +1452,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassResetMediaChangeTimer(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -1452,7 +1465,7 @@ ClassResetMediaChangeTimer(
     }
     return;
 } // end ClassResetMediaChangeTimer()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspInitializePolling() - ISSUE-2000/02/20-henrygab - not documented
@@ -1470,15 +1483,16 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspInitializePolling(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN BOOLEAN AllowDriveToSleep
     )
 {
     PDEVICE_OBJECT fdo = FdoExtension->DeviceObject;
-    PCLASS_PRIVATE_FDO_DATA fdoData = FdoExtension->PrivateFdoData;
+    //PCLASS_PRIVATE_FDO_DATA fdoData = FdoExtension->PrivateFdoData;
 
-    ULONG size;
+    //ULONG size;
     PMEDIA_CHANGE_DETECTION_INFO info;
     PIRP irp;
 
@@ -1519,7 +1533,7 @@ ClasspInitializePolling(
             if (buffer != NULL) {
                 PIO_STACK_LOCATION irpStack;
                 PSCSI_REQUEST_BLOCK srb;
-                PCDB cdb;
+                //PCDB cdb;
 
                 srb = &(info->MediaChangeSrb);
                 info->MediaChangeIrp = irp;
@@ -1648,8 +1662,9 @@ ClasspInitializePolling(
     return STATUS_INSUFFICIENT_RESOURCES;
 
 } // end ClasspInitializePolling()
-\f
+
 NTSTATUS
+NTAPI
 ClasspInitializeGesn(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PMEDIA_CHANGE_DETECTION_INFO Info
@@ -2004,6 +2019,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassInitializeTestUnitPolling(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN BOOLEAN AllowDriveToSleep
@@ -2011,7 +2027,7 @@ ClassInitializeTestUnitPolling(
 {
     return ClasspInitializePolling(FdoExtension, AllowDriveToSleep);
 } // end ClassInitializeTestUnitPolling()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassInitializeMediaChangeDetection()
@@ -2038,6 +2054,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassInitializeMediaChangeDetection(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PUCHAR EventPrefix
@@ -2120,7 +2137,7 @@ ClassInitializeMediaChangeDetection(
 
     return;
 } // end ClassInitializeMediaChangeDetection()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspMediaChangeDeviceInstanceOverride()
@@ -2144,6 +2161,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspMediaChangeDeviceInstanceOverride(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     OUT PBOOLEAN Enabled
@@ -2289,7 +2307,7 @@ ClasspMediaChangeDeviceInstanceOverride(
     return status;
 
 } // end ClasspMediaChangeDeviceInstanceOverride()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspIsMediaChangeDisabledDueToHardwareLimitation()
@@ -2315,6 +2333,7 @@ Return Value:
 
 --*/
 BOOLEAN
+NTAPI
 ClasspIsMediaChangeDisabledDueToHardwareLimitation(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PUNICODE_STRING RegistryPath
@@ -2372,9 +2391,9 @@ ClasspIsMediaChangeDisabledDueToHardwareLimitation(
         //
 
         PWSTR nullMultiSz;
-        PUCHAR vendorId;
-        PUCHAR productId;
-        PUCHAR revisionId;
+        PCSTR vendorId;
+        PCSTR productId;
+        PCSTR revisionId;
         ULONG  length;
         ULONG  offset;
 
@@ -2395,21 +2414,21 @@ ClasspIsMediaChangeDisabledDueToHardwareLimitation(
         if (deviceDescriptor->VendorIdOffset == 0) {
             vendorId = NULL;
         } else {
-            vendorId = (PUCHAR) deviceDescriptor + deviceDescriptor->VendorIdOffset;
+            vendorId = (PCSTR) deviceDescriptor + deviceDescriptor->VendorIdOffset;
             length = strlen(vendorId);
         }
 
         if ( deviceDescriptor->ProductIdOffset == 0 ) {
             productId = NULL;
         } else {
-            productId = (PUCHAR) deviceDescriptor + deviceDescriptor->ProductIdOffset;
+            productId = (PCSTR) deviceDescriptor + deviceDescriptor->ProductIdOffset;
             length += strlen(productId);
         }
 
         if ( deviceDescriptor->ProductRevisionOffset == 0 ) {
             revisionId = NULL;
         } else {
-            revisionId = (PUCHAR) deviceDescriptor + deviceDescriptor->ProductRevisionOffset;
+            revisionId = (PCSTR) deviceDescriptor + deviceDescriptor->ProductRevisionOffset;
             length += strlen(revisionId);
         }
 
@@ -2419,10 +2438,10 @@ ClasspIsMediaChangeDisabledDueToHardwareLimitation(
 
         deviceString.Length = (USHORT)( length );
         deviceString.MaximumLength = deviceString.Length + 1;
-        deviceString.Buffer = (PUCHAR)ExAllocatePoolWithTag( NonPagedPool,
-                                                             deviceString.MaximumLength,
-                                                             CLASS_TAG_AUTORUN_DISABLE
-                                                             );
+        deviceString.Buffer = ExAllocatePoolWithTag( NonPagedPool,
+                                                     deviceString.MaximumLength,
+                                                     CLASS_TAG_AUTORUN_DISABLE
+                                                     );
         if (deviceString.Buffer == NULL) {
             DebugPrint((ClassDebugMCN,
                         "ClassMediaChangeDisabledForHardware: Unable to alloc "
@@ -2519,7 +2538,7 @@ ClasspIsMediaChangeDisabledDueToHardwareLimitation(
     return FALSE;
 
 } // end ClasspIsMediaChangeDisabledDueToHardwareLimitation()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspIsMediaChangeDisabledForClass()
@@ -2546,12 +2565,13 @@ Return Value:
 
 --*/
 BOOLEAN
+NTAPI
 ClasspIsMediaChangeDisabledForClass(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PUNICODE_STRING RegistryPath
     )
 {
-    PSTORAGE_DEVICE_DESCRIPTOR deviceDescriptor = FdoExtension->DeviceDescriptor;
+    //PSTORAGE_DEVICE_DESCRIPTOR deviceDescriptor = FdoExtension->DeviceDescriptor;
 
     OBJECT_ATTRIBUTES objectAttributes;
     HANDLE serviceKey = NULL;
@@ -2559,8 +2579,8 @@ ClasspIsMediaChangeDisabledForClass(
     RTL_QUERY_REGISTRY_TABLE parameters[3];
 
     UNICODE_STRING paramStr;
-    UNICODE_STRING deviceUnicodeString;
-    ANSI_STRING deviceString;
+    //UNICODE_STRING deviceUnicodeString;
+    //ANSI_STRING deviceString;
 
     //
     //  Default to ENABLING MediaChangeNotification (!)
@@ -2675,7 +2695,7 @@ ClasspIsMediaChangeDisabledForClass(
 
     return (BOOLEAN)(!mcnRegistryValue);
 } // end ClasspIsMediaChangeDisabledForClass()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassEnableMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?
@@ -2694,6 +2714,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassEnableMediaChangeDetection(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -2757,7 +2778,7 @@ ClassEnableMediaChangeDetection(
 
     return;
 } // end ClassEnableMediaChangeDetection()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassDisableMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?
@@ -2778,6 +2799,7 @@ Return Value:
 ULONG BreakOnMcnDisable = FALSE;
 
 VOID
+NTAPI
 ClassDisableMediaChangeDetection(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -2806,7 +2828,7 @@ ClassDisableMediaChangeDetection(
 
     return;
 } // end ClassDisableMediaChangeDetection()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassCleanupMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?!
@@ -2823,6 +2845,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassCleanupMediaChangeDetection(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
     )
@@ -2845,7 +2868,7 @@ ClassCleanupMediaChangeDetection(
     ExFreePool(info);
     return;
 } // end ClassCleanupMediaChangeDetection()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspMcnControl() - ISSUE-2000/02/20-henrygab - not documented
@@ -2863,6 +2886,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspMcnControl(
     IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     IN PIRP Irp,
@@ -2914,7 +2938,7 @@ ClasspMcnControl(
             //
 
             ClassDisableMediaChangeDetection(FdoExtension);
-            InterlockedIncrement(&(fsContext->McnDisableCount));
+            InterlockedIncrement((PLONG)&fsContext->McnDisableCount);
 
         } else {
 
@@ -2923,7 +2947,7 @@ ClasspMcnControl(
                 LEAVE;
             }
 
-            InterlockedDecrement(&(fsContext->McnDisableCount));
+            InterlockedDecrement((PLONG)&fsContext->McnDisableCount);
             ClassEnableMediaChangeDetection(FdoExtension);
         }
 
@@ -2942,7 +2966,7 @@ ClasspMcnControl(
     }
     return status;
 } // end ClasspMcnControl(
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspMediaChangeRegistryCallBack()
@@ -2970,6 +2994,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspMediaChangeRegistryCallBack(
     IN PWSTR ValueName,
     IN ULONG ValueType,
@@ -3039,7 +3064,7 @@ ClasspMediaChangeRegistryCallBack(
 
     return STATUS_SUCCESS;
 } // end ClasspMediaChangeRegistryCallBack()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspTimerTick() - ISSUE-2000/02/20-henrygab - not documented
@@ -3057,6 +3082,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClasspTimerTick(
     PDEVICE_OBJECT DeviceObject,
     PVOID Context
@@ -3105,7 +3131,7 @@ ClasspTimerTick(
         if ((info != NULL) && (info->Method != FailurePredictionNone)) {
 
             ULONG countDown;
-            ULONG active;
+            //ULONG active;
 
             if (ClasspCanSendPollingIrp(fdoExtension)) {
 
@@ -3115,7 +3141,7 @@ ClasspTimerTick(
                 // resets CountDown uses InterlockedExchange which is also
                 // atomic.
                 //
-                countDown = InterlockedDecrement(&info->CountDown);
+                countDown = InterlockedDecrement((PLONG)&info->CountDown);
                 if (countDown == 0) {
 
                     DebugPrint((4, "ClasspTimerTick: Send FP irp for %p\n",
@@ -3136,7 +3162,7 @@ ClasspTimerTick(
 
                             DebugPrint((1, "ClassTimerTick: Couldn't allocate "
                                            "item - try again in one minute\n"));
-                            InterlockedExchange(&info->CountDown, 60);
+                            InterlockedExchange((PLONG)&info->CountDown, 60);
 
                         } else {
 
@@ -3186,7 +3212,7 @@ ClasspTimerTick(
 
     ClassReleaseRemoveLock(DeviceObject, (PIRP)ClasspTimerTick);
 } // end ClasspTimerTick()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspEnableTimer() - ISSUE-2000/02/20-henrygab - not documented
@@ -3204,6 +3230,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspEnableTimer(
     PDEVICE_OBJECT DeviceObject
     )
@@ -3236,7 +3263,7 @@ ClasspEnableTimer(
     return status;
 
 } // end ClasspEnableTimer()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspDisableTimer() - ISSUE-2000/02/20-henrygab - not documented
@@ -3254,15 +3281,16 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClasspDisableTimer(
     PDEVICE_OBJECT DeviceObject
     )
 {
-    PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = DeviceObject->DeviceExtension;
-    PCOMMON_DEVICE_EXTENSION commonExtension = DeviceObject->DeviceExtension;
-    PMEDIA_CHANGE_DETECTION_INFO mCDInfo = fdoExtension->MediaChangeDetectionInfo;
-    PFAILURE_PREDICTION_INFO fPInfo = fdoExtension->FailurePredictionInfo;
-    NTSTATUS status;
+    //PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = DeviceObject->DeviceExtension;
+    //PCOMMON_DEVICE_EXTENSION commonExtension = DeviceObject->DeviceExtension;
+    //PMEDIA_CHANGE_DETECTION_INFO mCDInfo = fdoExtension->MediaChangeDetectionInfo;
+    //PFAILURE_PREDICTION_INFO fPInfo = fdoExtension->FailurePredictionInfo;
+    //NTSTATUS status;
 
     PAGED_CODE();
 
@@ -3289,7 +3317,7 @@ ClasspDisableTimer(
 
     return STATUS_SUCCESS;
 } // end ClasspDisableTimer()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClasspFailurePredict() - ISSUE-2000/02/20-henrygab - not documented
@@ -3309,11 +3337,13 @@ Note:  this function can be called (via the workitem callback) after the paging
          so it must be PAGE LOCKED.
 --*/
 VOID
+NTAPI
 ClasspFailurePredict(
     IN PDEVICE_OBJECT DeviceObject,
-    IN PFAILURE_PREDICTION_INFO Info
+    IN PVOID Context
     )
 {
+    PFAILURE_PREDICTION_INFO info = Context;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = DeviceObject->DeviceExtension;
     PIO_WORKITEM workItem;
     STORAGE_PREDICT_FAILURE checkFailure;
@@ -3321,7 +3351,7 @@ ClasspFailurePredict(
 
     NTSTATUS status;
 
-    ASSERT(Info != NULL);
+    ASSERT(info != NULL);
 
     DebugPrint((1, "ClasspFailurePredict: Polling for failure\n"));
 
@@ -3332,8 +3362,8 @@ ClasspFailurePredict(
     // the lock.
     //
 
-    InterlockedExchange(&Info->CountDown, Info->Period);
-    workItem = InterlockedExchangePointer(&(Info->WorkQueueItem), NULL);
+    InterlockedExchange((PLONG)&info->CountDown, info->Period);
+    workItem = InterlockedExchangePointer(&info->WorkQueueItem, NULL);
 
     if (ClasspCanSendPollingIrp(fdoExtension)) {
 
@@ -3421,7 +3451,7 @@ ClasspFailurePredict(
     IoFreeWorkItem(workItem);
     return;
 } // end ClasspFailurePredict()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassNotifyFailurePredicted() ISSUE-alanwar-2000/02/20 - not documented
@@ -3434,6 +3464,7 @@ Return Value:
 
 --*/
 VOID
+NTAPI
 ClassNotifyFailurePredicted(
     PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     PUCHAR Buffer,
@@ -3492,7 +3523,7 @@ ClassNotifyFailurePredicted(
         }
     }
 } // end ClassNotifyFailurePredicted()
-\f
+
 /*++////////////////////////////////////////////////////////////////////////////
 
 ClassSetFailurePredictionPoll()
@@ -3517,6 +3548,7 @@ Return Value:
 
 --*/
 NTSTATUS
+NTAPI
 ClassSetFailurePredictionPoll(
     PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
     FAILURE_PREDICTION_METHOD FailurePredictionMethod,
@@ -3525,7 +3557,7 @@ ClassSetFailurePredictionPoll(
 {
     PFAILURE_PREDICTION_INFO info;
     NTSTATUS status;
-    DEVICE_POWER_STATE powerState;
+    //DEVICE_POWER_STATE powerState;
 
     PAGED_CODE();
 
@@ -3579,11 +3611,11 @@ ClassSetFailurePredictionPoll(
 
     if (PollingPeriod != 0) {
 
-        InterlockedExchange(&info->Period, PollingPeriod);
+        InterlockedExchange((PLONG)&info->Period, PollingPeriod);
 
     }
 
-    InterlockedExchange(&info->CountDown, info->Period);
+    InterlockedExchange((PLONG)&info->CountDown, info->Period);
 
     info->Method = FailurePredictionMethod;
     if (FailurePredictionMethod != FailurePredictionNone) {
@@ -3608,4 +3640,3 @@ ClassSetFailurePredictionPoll(
 
     return status;
 } // end ClassSetFailurePredictionPoll()
-