Here’s a detailed guide and discussion post tailored for someone developing or using a .
wpr -start WdfTrace <reproduce issue> wpr -stop trace.etl
[ServiceInstall] DisplayName=%ServiceName% ServiceType=1 StartType=0 ErrorControl=1 ServiceBinary=%12%\MyDriver.sys NTSTATUS EvtDevicePrepareHardware( WDFDEVICE Device, WDFCMRESLIST ResourcesRaw, WDFCMRESLIST ResourcesTranslated ) PDEVICE_CONTEXT pContext = GetDeviceContext(Device); WDF_USB_DEVICE_CREATE_CONFIG usbConfig; WDF_USB_DEVICE_CREATE_CONFIG_INIT(&usbConfig, USBD_CLIENT_CONTRACT_VERSION_602); return WdfUsbTargetDeviceCreate(Device, &usbConfig, &pContext->UsbDevice);
[MyCRW_CopyFiles] MyDriver.sys
[MyCRW_AddReg] HKR,,DeviceType,0x10001,0x00000007 ; FILE_DEVICE_DISK HKR,,DeviceCharacteristics,0x10001,0x00000100 ; FILE_REMOVABLE_MEDIA
[DestinationDirs] DefaultDestDir=12 ; %windir%\system32\drivers
[Standard.NTamd64] %DeviceDesc%=MyCRW_Install, USB\VID_05E3&PID_0760 ; Example GL823K
Enable test signing (temporary):
// Read from card via USB 2.0 bulk endpoint NTSTATUS ReadCardBlock(PDEVICE_CONTEXT pContext, UCHAR* Buffer, ULONG Length) WDF_USB_CONTROL_SETUP_PACKET control; WDF_USB_CONTROL_SETUP_PACKET_INIT_CLASS(&control, BMREQUEST_HOST_TO_DEVICE, BMREQUEST_TO_INTERFACE, 0xFF, // SCSI READ(10) or vendor command 0, 0); return WdfUsbTargetDeviceSendControlTransferSynchronously(...);