HLK Test Error
HLK Test case
HLK相应的测试项,对应于driver对应的callback函数,通过traceview可以打印对应的测试项调用的函数。
//
// Register the PnP callbacks with the framework.
//
WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&Callbacks);
Callbacks.EvtDevicePrepareHardware = OnPrepareHardware;
Callbacks.EvtDeviceReleaseHardware = OnReleaseHardware;
Callbacks.EvtDeviceD0Entry = OnD0Entry;
Callbacks.EvtDeviceD0Exit = OnD0Exit;
//
// Register CLX callback function pointers
//
SENSOR_CONTROLLER_CONFIG_INIT(&SensorConfig);
SensorConfig.DriverIsPowerPolicyOwner = WdfUseDefault;
SensorConfig.EvtSensorStart = OnStart;
SensorConfig.EvtSensorStop = OnStop;
SensorConfig.EvtSensorGetSupportedDataFields = OnGetSupportedDataFields;
SensorConfig.EvtSensorGetDataInterval = OnGetDataInterval;
SensorConfig.EvtSensorSetDataInterval = OnSetDataInterval;
SensorConfig.EvtSensorGetDataFieldProperties = OnGetDataFieldProperties;
SensorConfig.EvtSensorGetDataThresholds = OnGetDataThresholds;
SensorConfig.EvtSensorSetDataThresholds = OnSetDataThresholds;
SensorConfig.EvtSensorGetProperties = OnGetProperties;
SensorConfig.EvtSensorDeviceIoControl = OnIoControl;
Some error and solution
*WDTF_SIMPLE_IO : - Open(Accelerometer ACPI\XXXXXXXX\1) Try count 1
WDTF_SUPPORT : - WaitForMinutes : 1
WDTF_SIMPLE_IO : - PerformIO(Accelerometer ACPI\XXXXXXXX\1) count 1
WDTF_SIMPLEIO_STRESS : - Stop(Accelerometer ACPI\XXXXXXXX\1)
WDTF_SIMPLE_IO : - Close(Accelerometer ACPI\XXXXXXXX\1)
ERROR: TAEF: A crash with exception code 0XC0000421 occurred in module "verifier.dll" in process "WUDFHost.exe" (pid:2500)
ERROR: TAEF: A crash with exception code 0X80000003 occurred in module "vrfcore.dll" in process "WUDFHost.exe" (pid:2500)**
WDTF_PNP : - DIFRemoveDevice()
WDTF_PNP : Target: Accelerometer ACPI\XXXXXXXX\1
WDTF_PNP : - RescanDevice(): (get status count: 1)
WDTF_PNP : Target: Inter(R) Serial IO I2C Host Controller - 31B6 PCI\VEN_8086&DEV_31B6&SUBSYS
WDTF_PNP : - WaitForSeconds: 15*
- I2CIoTarget should not be removed when calling OnReleaseHardware.
if (pDevice->m_I2CIoTarget)
{
WdfIoTargetClose(pDevice->m_I2CIoTarget);
WdfObjectDelete(pDevice->m_I2CIoTarget);
pDevice->m_I2CIoTarget = NULL;
}
- Any resource (like instance) need be removed before close the sensor.
NTSTATUS
MultiDevice::OnD0Exit
...
Status = pDevice->CloseSensor();
if (!NT_SUCCESS(Status))
{
TraceError("ACC %!FUNC! Close sensor failed %!STATUS!", Status);
goto Exit;
}