次の方法で共有


VHF_CONFIG 構造体 (vhf.h)

VhfCreate を呼び出して仮想 HID デバイスを作成するときに 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 Framework (VHF) がこれらのコールバック関数を呼び出すときに渡す HID ソース ドライバーによって割り当てられたメモリへの不透明なポインター。

OperationContextSize

省略可能。 EvtVhfAsyncOperation によって開始された非同期操作のために VHF が割り当てる必要があるバッファーのサイズ。 0 以外の場合、VHF はこのサイズのバッファーを割り当て、新しい操作を開始するために EvtVhfAsyncOperation を呼び出すたびに、VhfOperationContext パラメーターでそのバッファーへのポインターを渡します。

DeviceObject

カーネル モード ドライバーに必要です。 HID ソース ドライバーの DEVICE_OBJECT 構造体へのポインター。 そのポインターを取得するには、 WdfDeviceWdmGetDeviceObject を 呼び出し、ドライバーが WdfDeviceCreate 呼び出しで受け取った WDFDEVICE ハンドルを渡します。

FileHandle

ユーザー モード ドライバーに必要です。 WdfIoTargetWdmGetTargetFileHandle を呼び出して取得したファイル ハンドル。 WDFIOTARGET を開くには、ユーザー モード (UMDF) VHF ソース ドライバーで WdfIoTargetOpen を呼び出し、 OpenParams.TypeWdfIoTargetOpenLocalTargetByFile に設定する必要があります。

VendorID

省略可能。 作成する仮想 HID デバイスのベンダー ID。

ProductID

省略可能。 作成する仮想 HID デバイスの製品 ID。

VersionNumber

省略可能。 作成する仮想 HID デバイスのバージョン番号。

ContainerID

省略可能。 作成する仮想 HID デバイスのコンテナー ID。

InstanceIDLength

InstanceID

ReportDescriptorLength

必須。 ReportDescriptor が指すバッファーに含まれる HID レポート記述子の長さ。

ReportDescriptor

必須。 HID レポート記述子を含む HID ソース ドライバーによって割り当てられたバッファーへのポインター。

EvtVhfReadyForNextReadReport

省略可能。 EvtVhfReadyForNextReadReport コールバックへのポインター。 HID ソース ドライバーは、HID 入力レポートを送信するためのバッファリング ポリシーを処理する場合は、このコールバック関数を実装して登録する必要があります。 このコールバックが指定されている場合、VHF はこれらのレポートをバッファーに格納しません。 HID ソース ドライバーは、 VHF が EvtVhfReadyForNextReadReport を呼び出すたびに、 VhfReadReportSubmit を呼び出して 1 つのレポートを送信する必要があります。

EvtVhfAsyncOperationGetFeature

省略可能。 EvtVhfAsyncOperation コールバックへのポインター。 HID ソース ドライバーは、HID クラス ドライバー ペアから 最上位コレクション に関連付けられている HID 機能レポートを取得する場合に、このコールバック関数を実装して登録する必要があります。 ドライバーは、レポート記述子で機能レポートが宣言されている場合にのみ、機能レポートを取得できます。

EvtVhfAsyncOperationSetFeature

省略可能。 EvtVhfAsyncOperation コールバックへのポインター。 HID ソース ドライバーは、 最上位のコレクション に関連付けられている HID 機能レポートを HID クラス ドライバー のペアに送信する場合は、このコールバック関数を実装して登録する必要があります。 ドライバーは、レポート記述子で宣言されている場合にのみ、機能レポートを設定できます。

EvtVhfAsyncOperationWriteReport

省略可能。 EvtVhfAsyncOperation コールバックへのポインター。 HID ソース ドライバーは、HID 出力レポートをサポートし、HID クラス ドライバー ペアに送信する場合は、このコールバック関数を実装して登録する必要があります。

EvtVhfAsyncOperationGetInputReport

省略可能。 EvtVhfAsyncOperation コールバックへのポインター。 HID ソース ドライバーは、入力レポートのオンデマンド クエリをサポートする場合に、このコールバック関数を実装して登録する必要があります。

EvtVhfCleanup

省略可能。 EvtVhfCleanup コールバックへのポインター。 HID ソース ドライバーは、仮想 HID デバイスに割り当てられたリソースを解放する場合に、このコールバック関数を実装して登録できます。

HardwareIDsLength

HardwareIDs

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー サポートなし
Header vhf.h

こちらもご覧ください

仮想 HID フレームワーク (VHF) を使って HID ソース ドライバーを作成する