EVT_VHF_ASYNC_OPERATION コールバック関数 (vhf.h)

HID ソース ドライバーは、HID レポートを取得および設定する 4 つの非同期操作のいずれかをサポートする場合に、このイベント コールバックを実装します。

構文

EVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperation;

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

パラメーター

[in] VhfClientContext

ドライバーが VhfCreate に指定されたVHF_CONFIG構造体で渡して仮想 HID デバイスを作成した HID ソース ドライバー定義バッファーへの不透明なポインター。

[in] VhfOperationHandle

この非同期操作を一意に識別する不透明なハンドル。

[in, optional] VhfOperationContext

操作を処理するために HID ソース ドライバーで使用できるバッファーへのポインター。 バッファーのサイズは、VhfCreate に提供されるVHF_CONFIG構造体の HID ソース ドライバーによって指定されます。

[in] HidTransferPacket

HID_XFER_PACKET構造体へのポインター。 HID レポートに関する情報が含まれており、レポートを取得または設定するための I/O 要求の HID ソース ドライバーと HID クラス/ミニ ドライバー ペアによって使用されます。

戻り値

なし

解説

HID ソース ドライバーでサポートできる非同期操作には、GetFeature、SetFeatureWriteReportGetInputReport の 4 種類があります。

メモ これらの操作は、HID トランスポート ミニドライバーが実装する IOCTL_HID_GET_FEATUREIOCTL_HID_SET_FEATUREIOCTL_HID_WRITE_REPORTIOCTL_HID_GET_INPUT_REPORT 要求に似ています。
 
このような操作をサポートするには、HID ソース ドライバーが EvtVhfAsyncOperation コールバック関数を実装し、WdfDeviceCreate を呼び出した後、ドライバーの VhfCreate 関数の呼び出しで Virtual HID Framework (VHF) に登録する必要があります。 たとえば、GetFeature の場合、ドライバーは EvtVhfAsyncOperation を実装し、VHF_CONFIGEvtVhfAsyncOperationGetFeature メンバーを実装された関数の関数ポインターに設定する必要があります。

VHF が HID レポートを設定または照会する要求を取得すると、VHF は以前に登録された EvtVhfAsyncOperation コールバック関数を呼び出し、非同期操作を開始します。 各操作は、VHF によって設定される VHFOPERATIONHANDLE ハンドルによって識別されます。 ドライバーが初期化中にVHF_CONFIGOperationContextSize メンバーに 0 以外の値を指定した場合、VHF はそのサイズのバッファーを割り当て、EvtVhfAsyncOperation を呼び出すときに VhfOperationContext パラメーターでそのバッファーへのポインターを渡します。

HidTransferPacket は、HID レポート固有の詳細を含む VHF によって割り当てられた構造体を指す、この操作の転送バッファーです。 たとえば、操作が GetFeature の場合、完了すると、バッファーは HID ソース ドライバーによって要求された HID 機能レポートで埋められます。

操作が完了すると、HID ソースは VhfAsyncOperationComplete を呼び出して完了状態を報告します。

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー サポートなし
対象プラットフォーム デスクトップ
Header vhf.h
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

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