WDF 提供了两个方法来 complete io request(实际上 有三个):
1. WdfRequestComplete;
2.WdfRequestCompleteWithInformation(,,)
IO MEthod 有三种方式:
METHOD_BUFFERED;
METHOD_DIRECT;
METHOD_NEITHER;
这里只讨论前面两种,METHOD_BUFFERED;METHOD_DIRECT; 情况下如何使用正确的IO complete function。
如果使用自定义的IOCTL code, 如下:
#define IOCTL_UIHGWB_MALLOC_MEMO \
CTL_CODE(FILE_DEVICE_UIHGWB, 0x804,\
METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA)
使用此IOCTL 的接口是windows的API DeviceIOControl; 其原型:
BOOL WINAPI DeviceIoControl(
_In_ HANDLE hDevice,
_In_ DWORD dwIoControlCode,
_In_opt_ LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_opt_ LPV