HLK FAILURE DF - PNP Surprise Remove Device Test (Reliability) on Win2019 only, Win2016 passes

We are trying to get Microsoft HLK certifications for our device driver on WinServer2016 and WinServer 2019. We are using the same driver on WindServer 2016 and WindServer 2019. It always passes on WindServer 2016 and fails on WindSErer 2019. The device is a PCI device and therefore is nt removable and therefore we don’t support Plug and Play. Has anyone else seen this issue? Can you offer any suggestions?

WinSever 2019 Errors Below

WDTF_PNP : Result: Failed to receive IRP_MN_REMOVE_DEVICE after receiving IRP_MN_SURPRISE_REMOVAL. Ensure that there are no open handles or references to the test device (in user mode or in kernel mode) preventing IRP_MN_REMOVE_DEVICE from being sent. You may need to terminate any processes or services that may have open user mode handles to this device. ( 80004005 ).

WDTF_PNP : Result: Successful , but device not started, ( Status=1802002 (DN_DRIVER_LOADED DN_DISABLEABLE DN_NT_ENUMERATOR DN_NT_DRIVER ) Problem=0 () )…

WDTF_TARGET : WDTF.ConcurrentIO.1 SetTarget() ERROR : CWDTFConcurrentIOImpl::SetTarget() Failed to open the EDT device Win32=1 - Incorrect function.
Win32=1 - Incorrect function.

WDTF_TARGET : WDTF.ConcurrentIO.1 SetTarget() ERROR : CWDTFConcurrentIOImpl::SetTarget() Failed to open the EDT device Win32=1 - Incorrect function.
Win32=1 - Incorrect function.
Win32=1 - Incorrect function.

WDTF_PNP : Result: Device is not started.

WDTF_PNP : Result: Successful , but device not started, ( Status=1802002 (DN_DRIVER_LOADED DN_DISABLEABLE DN_NT_ENUMERATOR DN_NT_DRIVER ) Problem=0 () )…

WDTF_TARGET : WDTF.ConcurrentIO.1 SetTarget() ERROR : CWDTFConcurrentIOImpl::SetTarget() Failed to open the EDT device Win32=1 - Incorrect function.
Win32=1 - Incorrect function.

WDTF_TARGET : WDTF.ConcurrentIO.1 SetTarget() ERROR : CWDTFConcurrentIOImpl::SetTarget() Failed to open the EDT device Win32=1 - Incorrect function.
Win32=1 - Incorrect function.
Win32=1 - Incorrect function.

WDTF_PNP : Result: Device is not started.

WDTF_PNP : Result: Successful , but device not started, ( Status=1802002 (DN_DRIVER_LOADED DN_DISABLEABLE DN_NT_ENUMERATOR DN_NT_DRIVER ) Problem=0 () )…

WDTF_TEST : Found a device that has a non-zero problem code or is phantom. Logging device info.

The device is a PCI device and therefore is nt removable and therefore we don’t support Plug and Play

By not support PnP, do you mean not supporting IRP_MJ_PNP at all or you have just enough pnp to support getting your device up and running and don’t support all of the expected states? Being an embedded device doesn’t mean you get to forgo supporting PnP, I am surprised your non PnP driver works across system power transitions. Also, it is a common misconception that a surprise remove only represents physical removal of the device, a surprise remove also represents a software removal / reset of the device and can happen regardless of how the device is physically connected to the machine.