none
Failure Opening EDT Devices RRS feed

  • Question

  • So I inherited this non-PnP KMDF driver, built with WDF 1.9, that I'm testing with the HLK for Windows 10 x64 build 1703; I'll call it MyKernelService here. WDF 1.9 is the latest framework we can use to support the platforms we require.

    This is a non-PnP driver by virtue of the fact that in DriverEntry(), it:
     - passes WDF_NO_EVENT_CALLBACK for the EvtDriverDeviceAdd parameter of WDF_DRIVER_CONFIG_INIT;
     - sets the WdfDriverInitNonPnpDriver flag in the WDF_DRIVER_CONFIG structure;
     - explicitly registers an EvtDriverUnload handler;
     - creates its one and only device object via WdfDeviceCreate().

    Despite being a non-PnP driver, it does have an INF that can be used for installation, resulting in a virtual "device" that shows up in Device Manager. Hopefully this isn't tricking HLK into selecting inappropriate tests, but I'm not clear on how HLK makes its choices, so I thought I'd mention it.

    When I use the HLK playlist for certification, I now have all tests passing except for:
     - DF - PNP Cancel Remove Device Test (Reliability)
     - DF - PNP Cancel Stop Device Test (Reliability)
     - DF - PNP Rebalance Fail Restart Device Test (Reliability)
     - DF - PNP Rebalance Request New Resources Device Test (Reliability)
     - DF - PNP Stop (Rebalance) Device Test (Reliability)
     - DF - PNP Surprise Remove Device Test (Reliability)

    What all these tests have in common is that they make use of the EDT filter driver, and they all fail in approximately the same way: with either "Failed to open EDT devices.  ( 80070002 )" or "Failed to open the EDT device Win32=2 - The system cannot find the file specified."

    Re-installing the HLK client software on the target system doesn't help.

    I've included the output of a command-line run of one of the tests below. I set DoSimpleIO and DoConcurrentIO to False to eliminate the IO cycles as a possible cause, but once I get past this issue I'll re-enable these and re-run the tests.

    Any thoughts on what these errors are really indicating, and what might need to be done to make HLK happy?

    Thanks,
    Dave Ruske
     

    =========================================================
    Test Authoring and Execution Framework v10.3k for x64
    About to log start telemetry data ...
    Telemetry: Registering trace logging.
    Telemetry: Creating new TelemetryRegistration.
    Telemetry trace logging registration status: 0x0
    Telemetry trace logging initialization status: True

    StartGroup: PNPDTest::PNPCancelRemoveDevice#metadataSet0
    TAEF: Data[TestName]: DF - PNP Cancel Remove Device Test (Reliability)
    WDTF_TARGET               :  - GetInterface("System")
    WDTF_TARGET               :          Target: HLK1703TARGET
    WDTF_SYSTEM               :  SYSTEM_POWER_CAPABILITIES = 
      Power Button    = YES
      Sleep Button    = NO
      Lid             = NO
      AoAc            = NO
      S1              = NO
      S2              = NO
      S3              = YES
      S4              = YES
      Hibernate       = YES
      S5              = YES
      Battery         = NO
      RTC Wake        = S4
    WDTF_TARGET               :  - GetInterface("Support")
    WDTF_TARGET               :          Target: HLK1703TARGET
    WDTF_SUPPORT              :  - SetSANPolicyToOnline 
    WDTF_TEST                 : Test parameter values:
    WDTF_TEST                 : DQ:  IsDevice AND (DriverBinaryNames!='i8042prt.sys') AND (Class!=hdc) AND (Class!=scsiadapter) AND (DsmDevice!=TRUE) AND ((HardwareIds='root\MyKernelService' OR DeviceId='ROOT\MYKERNELSERVICE\0000'))
    WDTF_TEST                 : TestCycles:  1
    WDTF_TEST                 : DoSimpleIO:  False
    WDTF_TEST                 : IOPeriod:  1
    WDTF_TEST                 : DoConcurrentIO:  False
    WDTF_TARGETS              :  - Query("IsDevice AND (DriverBinaryNames!='i8042prt.sys') AND (Class!=hdc) AND (Class!=scsiadapter) AND (DsmDevice!=TRUE) AND ((HardwareIds='root\MyKernelService' OR DeviceId='ROOT\MYKERNELSERVICE\0000'))")
    WDTF_TARGETS              :          Target: My Kernel Service ROOT\MYKERNELSERVICE\0000 
    WDTF_SUPPORT              :  - ClearSetupAPILogs()
    WDTF_TARGETS              :  - Query("IsDevice AND (SemiUniqueTargetHardwareIdentifier='root\MyKernelService')")
    WDTF_TARGETS              :          Target: My Kernel Service ROOT\MYKERNELSERVICE\0000 
    WDTF_TEST                 : WARNING: The test is not enforcing that Driver Verifier is enabled.
    WDTF_TEST                 : DV is enabled with Flag:=0x209bb
    WDTF_TEST                 : DV is successfully enabled for all drivers of this devnode(UniqueTargetName):=My Kernel Service ROOT\MYKERNELSERVICE\0000 
    WDTF_TARGETS              :  - GetInterfacesIfExist("EDT")
    WDTF_TARGETS              :          Target: My Kernel Service ROOT\MYKERNELSERVICE\0000 
    Telemetry: [1 of 2] Driver name: msdmfilt.sys
    Telemetry: [1 of 2] Driver version: 10.0.15063.0
    Telemetry: [2 of 2] Driver name: MyKernelService.sys
    Telemetry: [2 of 2] Driver version: 1.0.0.0
    WDTF_TEST                 : Starting PNPCancelRemoveDevice test [1 of 1]
    WDTF_TARGETS              :  - GetInterfacesIfExist("PNP")
    WDTF_TARGETS              :          Target: My Kernel Service ROOT\MYKERNELSERVICE\0000 
    WDTF_PNP                  :  - EDTCancelRemoveDevice()
    WDTF_PNP                  :          Target: My Kernel Service ROOT\MYKERNELSERVICE\0000 
    Error: WDTF_PNP                  :          Result:   Failed to open EDT devices.  ( 80070002 ). 
    WDTF_SUPPORT              :  - WaitForSeconds : 15
    EndGroup: PNPDTest::PNPCancelRemoveDevice#metadataSet0 [Failed]
    Telemetry: Unregistering Trace Logging.

    Non-passing Tests:

        PNPDTest::PNPCancelRemoveDevice#metadataSet0 [Failed]

    Summary: Total=1, Passed=0, Failed=1, Blocked=0, Not Run=0, Skipped=0
    =========================================================

    Thursday, November 16, 2017 10:51 PM

Answers

  • Well, silly me. Turns out it always pays to try the published troubleshooting steps. :)

    I downloaded the latest HLK filters from here, applied them per the instructions, and now all the nasty EDT open failures are filtered out and my driver passes all tests.

    Hope this little note helps the next guy who runs into something weird with the HLK testing!

    Dave Ruske

    • Marked as answer by Dave Ruske Friday, November 17, 2017 1:22 AM
    Friday, November 17, 2017 1:22 AM