EVT_VHF_ASYNC_OPERATION回调函数 (vhf.h)

如果 HID 源驱动程序想要支持四个异步操作之一来获取和设置 HID 报表,则它实现此事件回调。

语法

EVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperation;

void EvtVhfAsyncOperation(
  [in]           PVOID VhfClientContext,
  [in]           VHFOPERATIONHANDLE VhfOperationHandle,
  [in, optional] PVOID VhfOperationContext,
  [in]           PHID_XFER_PACKET HidTransferPacket
)
{...}

参数

[in] VhfClientContext

指向 HID 源驱动程序定义的缓冲区的不透明指针,驱动程序传递到提供给 VhfCreate 以创建虚拟 HID 设备的VHF_CONFIG结构中。

[in] VhfOperationHandle

唯一标识此异步操作的不透明句柄。

[in, optional] VhfOperationContext

指向可由 HID 源驱动程序用于维护操作的缓冲区的指针。 缓冲区的大小由提供给 VhfCreateVHF_CONFIG 结构中的 HID 源驱动程序指定。

[in] HidTransferPacket

指向 HID_XFER_PACKET 结构的指针。 包含有关 HID 报表的信息,HID 源驱动程序和 HID 类/微型驱动程序对用于 I/O 请求以获取或设置报表。

返回值

备注

HID 源驱动程序可以支持四种类型的异步操作: GetFeatureSetFeatureWriteReportGetInputReport

注意这些操作类似于 HID 传输微型驱动程序实现的IOCTL_HID_GET_FEATUREIOCTL_HID_SET_FEATURE、IOCTL_HID_WRITE_REPORT IOCTL_HID_GET_INPUT_REPORT请求。
 
若要支持此类操作,HID 源驱动程序必须实现 EvtVhfAsyncOperation 回调函数,并在调用 WdfDeviceCreate 后,在驱动程序调用 VhfCreate 函数时将其注册到 Virtual HID Framework (VHF) 。 例如,对于 GetFeature,驱动程序必须实现 EvtVhfAsyncOperation,并将 VHF_CONFIGEvtVhfAsyncOperationGetFeature 成员设置为已实现函数的函数指针。

当 VHF 获取设置或查询 HID 报表的请求时,VHF 会调用以前注册的 EvtVhfAsyncOperation 回调函数,并启动异步操作。 每个操作都由 VHF 设置的 VHFOPERATIONHANDLE 句柄标识。 如果驱动程序在初始化期间在 VHF_CONFIGOperationContextSize 成员中指定了非零值,则 VHF 在调用 EvtVhfAsyncOperation 时,会分配该大小的缓冲区,并在 VhfOperationContext 参数中传递指向该缓冲区的指针。

HidTransferPacket 是此操作的传输缓冲区,它指向包含特定于 HID 报表的详细信息的 VHF 分配结构。 例如,如果操作为 GetFeature,则完成后,HID 源驱动程序将使用请求的 HID 功能报告填充缓冲区。

操作完成后,HID 源调用 VhfAsyncOperationComplete 来报告完成状态。

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 无受支持的版本
目标平台 桌面
标头 vhf.h
IRQL <=DISPATCH_LEVEL

另请参阅

使用虚拟 HID 框架 (VHF) 编写 HID 源驱动程序