VHF_CONFIG 结构 (vhf.h)

包含 HID 源驱动程序在调用 VhfCreate 以创建虚拟 HID 设备时提供的初始配置信息。

语法

typedef struct _VHF_CONFIG {

    ULONG                               Size;

    PVOID                               VhfClientContext;

    ULONG                               OperationContextSize;

#ifdef _KERNEL_MODE
    PDEVICE_OBJECT                      DeviceObject;
#else
    HANDLE                              FileHandle;
#endif

    USHORT                              VendorID;
    USHORT                              ProductID;
    USHORT                              VersionNumber;

    GUID                                ContainerID;

    USHORT                              InstanceIDLength;
    _Field_size_bytes_full_(InstanceIDLength)   
    PWSTR                               InstanceID;

    USHORT                              ReportDescriptorLength;
    _Field_size_full_(ReportDescriptorLength)
    PUCHAR                              ReportDescriptor;

    PEVT_VHF_READY_FOR_NEXT_READ_REPORT EvtVhfReadyForNextReadReport;
    PEVT_VHF_ASYNC_OPERATION            EvtVhfAsyncOperationGetFeature;
    PEVT_VHF_ASYNC_OPERATION            EvtVhfAsyncOperationSetFeature;
    PEVT_VHF_ASYNC_OPERATION            EvtVhfAsyncOperationWriteReport;
    PEVT_VHF_ASYNC_OPERATION            EvtVhfAsyncOperationGetInputReport;
    PEVT_VHF_CLEANUP                    EvtVhfCleanup;

    USHORT                              HardwareIDsLength;
    _Field_size_bytes_full_(HardwareIDsLength)
    PWSTR                               HardwareIDs;

} VHF_CONFIG, *PVHF_CONFIG;

成员

Size

必需。 由 VHF_CONFIG_INIT 初始化的此结构的大小。

VhfClientContext

可选。 指向虚拟 HID 框架 (VHF) 调用这些回调函数时传递的 HID 源驱动程序分配内存的不透明指针。

OperationContextSize

可选。 VHF 必须为 EvtVhfAsyncOperation 启动的异步操作分配的缓冲区的大小。 如果不是零,VHF 会分配一个此大小的缓冲区,并在每次调用 EvtVhfAsyncOperation 以启动新操作时,在 VhfOperationContext 参数中传递指向该缓冲区的指针。

DeviceObject

对于内核模式驱动程序是必需的。 指向 HID 源驱动程序 的 DEVICE_OBJECT 结构的指针。 通过调用 WdfDeviceWdmGetDeviceObject 并传递驱动程序在 WdfDeviceCreate 调用中收到的 WDFDEVICE 句柄来获取该指针。

FileHandle

对于用户模式驱动程序是必需的。 通过调用 WdfIoTargetWdmGetTargetFileHandle 获取的文件句柄。 若要打开 WDFIOTARGET,用户模式 (UMDF) VHF 源驱动程序应调用 WdfIoTargetOpen ,且 OpenParams.Type 设置为 WdfIoTargetOpenLocalTargetByFile

VendorID

可选。 要创建的虚拟 HID 设备的供应商 ID。

ProductID

可选。 要创建的虚拟 HID 设备的产品 ID。

VersionNumber

可选。 要创建的虚拟 HID 设备的版本号。

ContainerID

可选。 要创建的虚拟 HID 设备的容器 ID。

InstanceIDLength

InstanceID

ReportDescriptorLength

必需。 ReportDescriptor 指向的缓冲区中包含的 HID 报表描述符的长度。

ReportDescriptor

必需。 指向包含 HID 报表描述符的 HID 源驱动程序分配缓冲区的指针。

EvtVhfReadyForNextReadReport

可选。 指向 EvtVhfReadyForNextReadReport 回调的 指针。 如果 HID 源驱动程序想要处理用于提交 HID 输入报告的缓冲策略,则必须实现并注册此回调函数。 如果指定了此回调,VHF 不会缓冲这些报表。 每次 VHF 调用 EvtVhfReadyForNextReadReport 时,HID 源驱动程序都应通过调用 VhfReadReportSubmit 提交一份报告。

EvtVhfAsyncOperationGetFeature

可选。 指向 EvtVhfAsyncOperation 回调的 指针。 如果 HID 源驱动程序想要从 HID 类驱动程序对获取与 顶级集合 关联的 HID 功能报告,则 HID 源驱动程序必须实现并注册此回调函数。 仅当报表描述符声明时,驱动程序才能获取功能报告。

EvtVhfAsyncOperationSetFeature

可选。 指向 EvtVhfAsyncOperation 回调的 指针。 如果 HID 源驱动程序想要将与 顶级集合 关联的 HID 功能报告发送到 HID 类驱动程序对,则必须实现并注册此回调函数。 仅当报表描述符声明功能报告时,驱动程序才能设置它。

EvtVhfAsyncOperationWriteReport

可选。 指向 EvtVhfAsyncOperation 回调的 指针。 如果 HID 源驱动程序想要支持 HID 输出报告并将其发送到 HID 类驱动程序对,则必须实现并注册此回调函数。

EvtVhfAsyncOperationGetInputReport

可选。 指向 EvtVhfAsyncOperation 回调的 指针。 如果 HID 源驱动程序想要支持输入报表的按需查询,则必须实现并注册此回调函数。

EvtVhfCleanup

可选。 指向 EvtVhfCleanup 回调的 指针。 如果 HID 源驱动程序想要为虚拟 HID 设备释放分配的资源,则可以实现并注册此回调函数。

HardwareIDsLength

HardwareIDs

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 无受支持的版本
标头 vhf.h

另请参阅

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