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 |