--*/
#include "classp.h"
-#include "debug.h"
+
+#include <wmidata.h>
#define GESN_TIMEOUT_VALUE (0x4)
#define GESN_BUFFER_SIZE (0x8)
(! 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,
);
NTSTATUS
+NTAPI
ClasspMediaChangeRegistryCallBack(
IN PWSTR ValueName,
IN ULONG ValueType,
);
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
// ISSUE -- make this public?
VOID
+NTAPI
ClassSendEjectionNotification(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
return;
}
-\f
VOID
+NTAPI
ClasspSendNotification(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN const GUID * Guid,
return;
}
-
-
-
/*++////////////////////////////////////////////////////////////////////////////
ClasspInterpretGesnData()
--*/
VOID
+NTAPI
ClasspInterpretGesnData(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PNOTIFICATION_EVENT_STATUS_HEADER Header,
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));
SET_FLAG(FdoExtension->DeviceObject->Flags, DO_VERIFY_VOLUME);
}
- InterlockedIncrement(&FdoExtension->MediaChangeCount);
+ InterlockedIncrement((PLONG)&FdoExtension->MediaChangeCount);
ClasspSetMediaChangeStateEx(FdoExtension,
MediaPresent,
FALSE,
} // end switch on notification class
return;
}
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspInternalSetMediaChangeState()
--*/
VOID
+NTAPI
ClasspInternalSetMediaChangeState(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN MEDIA_CHANGE_DETECTION_STATE NewState,
)
{
#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));
return;
} // end ClasspInternalSetMediaChangeState()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassSetMediaChangeState()
--*/
VOID
+NTAPI
ClasspSetMediaChangeStateEx(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN MEDIA_CHANGE_DETECTION_STATE NewState,
return;
} // end ClassSetMediaChangeStateEx()
+
VOID
+NTAPI
ClassSetMediaChangeState(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN MEDIA_CHANGE_DETECTION_STATE NewState,
ClasspSetMediaChangeStateEx(FdoExtension, NewState, Wait, FALSE);
return;
}
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspMediaChangeDetectionCompletion()
--*/
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;
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));
/*
* 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;
}
}
// 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,
// 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);
}
//
//
ASSERT(IoGetNextIrpStackLocation(Irp));
- IoGetNextIrpStackLocation(Irp)->Parameters.Scsi.Srb = Srb;
+ IoGetNextIrpStackLocation(Irp)->Parameters.Scsi.Srb = srb;
//
// Reset the MCN timer.
return STATUS_MORE_PROCESSING_REQUIRED;
}
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspSendTestUnitIrp() - ISSUE-2000/02/20-henrygab - not documented
--*/
PIRP
+NTAPI
ClasspPrepareMcnIrp(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PMEDIA_CHANGE_DETECTION_INFO Info,
return irp;
}
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspSendMediaStateIrp() - ISSUE-2000/02/20-henrygab - not documented
--*/
VOID
+NTAPI
ClasspSendMediaStateIrp(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PMEDIA_CHANGE_DETECTION_INFO Info,
{
BOOLEAN requestPending = FALSE;
LONG irpInUse;
- LARGE_INTEGER zero;
- NTSTATUS status;
+ //LARGE_INTEGER zero;
+ //NTSTATUS status;
DBGTRACE(ClassDebugMCN, ("> ClasspSendMediaStateIrp"));
return;
} // end ClasspSendMediaStateIrp()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassCheckMediaState()
--*/
VOID
+NTAPI
ClassCheckMediaState(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
return;
} // end ClassCheckMediaState()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassResetMediaChangeTimer()
--*/
VOID
+NTAPI
ClassResetMediaChangeTimer(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
}
return;
} // end ClassResetMediaChangeTimer()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspInitializePolling() - ISSUE-2000/02/20-henrygab - not documented
--*/
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;
if (buffer != NULL) {
PIO_STACK_LOCATION irpStack;
PSCSI_REQUEST_BLOCK srb;
- PCDB cdb;
+ //PCDB cdb;
srb = &(info->MediaChangeSrb);
info->MediaChangeIrp = irp;
return STATUS_INSUFFICIENT_RESOURCES;
} // end ClasspInitializePolling()
-\f
+
NTSTATUS
+NTAPI
ClasspInitializeGesn(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PMEDIA_CHANGE_DETECTION_INFO Info
--*/
NTSTATUS
+NTAPI
ClassInitializeTestUnitPolling(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN BOOLEAN AllowDriveToSleep
{
return ClasspInitializePolling(FdoExtension, AllowDriveToSleep);
} // end ClassInitializeTestUnitPolling()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassInitializeMediaChangeDetection()
--*/
VOID
+NTAPI
ClassInitializeMediaChangeDetection(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PUCHAR EventPrefix
return;
} // end ClassInitializeMediaChangeDetection()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspMediaChangeDeviceInstanceOverride()
--*/
NTSTATUS
+NTAPI
ClasspMediaChangeDeviceInstanceOverride(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
OUT PBOOLEAN Enabled
return status;
} // end ClasspMediaChangeDeviceInstanceOverride()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspIsMediaChangeDisabledDueToHardwareLimitation()
--*/
BOOLEAN
+NTAPI
ClasspIsMediaChangeDisabledDueToHardwareLimitation(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PUNICODE_STRING RegistryPath
//
PWSTR nullMultiSz;
- PUCHAR vendorId;
- PUCHAR productId;
- PUCHAR revisionId;
+ PCSTR vendorId;
+ PCSTR productId;
+ PCSTR revisionId;
ULONG length;
ULONG offset;
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);
}
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 "
return FALSE;
} // end ClasspIsMediaChangeDisabledDueToHardwareLimitation()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspIsMediaChangeDisabledForClass()
--*/
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;
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 (!)
return (BOOLEAN)(!mcnRegistryValue);
} // end ClasspIsMediaChangeDisabledForClass()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassEnableMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?
--*/
VOID
+NTAPI
ClassEnableMediaChangeDetection(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
return;
} // end ClassEnableMediaChangeDetection()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassDisableMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?
ULONG BreakOnMcnDisable = FALSE;
VOID
+NTAPI
ClassDisableMediaChangeDetection(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
return;
} // end ClassDisableMediaChangeDetection()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassCleanupMediaChangeDetection() ISSUE-2000/02/20-henrygab - why public?!
--*/
VOID
+NTAPI
ClassCleanupMediaChangeDetection(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
)
ExFreePool(info);
return;
} // end ClassCleanupMediaChangeDetection()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspMcnControl() - ISSUE-2000/02/20-henrygab - not documented
--*/
NTSTATUS
+NTAPI
ClasspMcnControl(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PIRP Irp,
//
ClassDisableMediaChangeDetection(FdoExtension);
- InterlockedIncrement(&(fsContext->McnDisableCount));
+ InterlockedIncrement((PLONG)&fsContext->McnDisableCount);
} else {
LEAVE;
}
- InterlockedDecrement(&(fsContext->McnDisableCount));
+ InterlockedDecrement((PLONG)&fsContext->McnDisableCount);
ClassEnableMediaChangeDetection(FdoExtension);
}
}
return status;
} // end ClasspMcnControl(
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspMediaChangeRegistryCallBack()
--*/
NTSTATUS
+NTAPI
ClasspMediaChangeRegistryCallBack(
IN PWSTR ValueName,
IN ULONG ValueType,
return STATUS_SUCCESS;
} // end ClasspMediaChangeRegistryCallBack()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspTimerTick() - ISSUE-2000/02/20-henrygab - not documented
--*/
VOID
+NTAPI
ClasspTimerTick(
PDEVICE_OBJECT DeviceObject,
PVOID Context
if ((info != NULL) && (info->Method != FailurePredictionNone)) {
ULONG countDown;
- ULONG active;
+ //ULONG active;
if (ClasspCanSendPollingIrp(fdoExtension)) {
// 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",
DebugPrint((1, "ClassTimerTick: Couldn't allocate "
"item - try again in one minute\n"));
- InterlockedExchange(&info->CountDown, 60);
+ InterlockedExchange((PLONG)&info->CountDown, 60);
} else {
ClassReleaseRemoveLock(DeviceObject, (PIRP)ClasspTimerTick);
} // end ClasspTimerTick()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspEnableTimer() - ISSUE-2000/02/20-henrygab - not documented
--*/
NTSTATUS
+NTAPI
ClasspEnableTimer(
PDEVICE_OBJECT DeviceObject
)
return status;
} // end ClasspEnableTimer()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspDisableTimer() - ISSUE-2000/02/20-henrygab - not documented
--*/
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();
return STATUS_SUCCESS;
} // end ClasspDisableTimer()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClasspFailurePredict() - ISSUE-2000/02/20-henrygab - not documented
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;
NTSTATUS status;
- ASSERT(Info != NULL);
+ ASSERT(info != NULL);
DebugPrint((1, "ClasspFailurePredict: Polling for failure\n"));
// 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)) {
IoFreeWorkItem(workItem);
return;
} // end ClasspFailurePredict()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassNotifyFailurePredicted() ISSUE-alanwar-2000/02/20 - not documented
--*/
VOID
+NTAPI
ClassNotifyFailurePredicted(
PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
PUCHAR Buffer,
}
}
} // end ClassNotifyFailurePredicted()
-\f
+
/*++////////////////////////////////////////////////////////////////////////////
ClassSetFailurePredictionPoll()
--*/
NTSTATUS
+NTAPI
ClassSetFailurePredictionPoll(
PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
FAILURE_PREDICTION_METHOD FailurePredictionMethod,
{
PFAILURE_PREDICTION_INFO info;
NTSTATUS status;
- DEVICE_POWER_STATE powerState;
+ //DEVICE_POWER_STATE powerState;
PAGED_CODE();
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) {
return status;
} // end ClassSetFailurePredictionPoll()
-