IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion メソッド (wudfusb.h)
[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。
ドライバーの OnReaderCompletion イベント コールバック関数は、継続的リーダーが読み取り要求を正常に完了したことをドライバーに通知します。
構文
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
パラメーター
[in] pPipe
ドライバーが連続リーダーを有効にした USB パイプの IWDFUsbTargetPipe インターフェイスへのポインター。
[in] pMemory
USB パイプから読み取られたデータを含む読み取りバッファーの IWDFMemory インターフェイスへのポインター。
[in] NumBytesTransferred
読み取りバッファーに含まれるバイト数。
[in] Context
ドライバーが以前に IWDFUsbTargetPipe2::ConfigureContinuousReader と呼んだときにドライバーが提供したコンテキスト情報へのポインター。
戻り値
なし
解説
IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion コールバック関数を登録するには、ドライバーが IWDFUsbTargetPipe2::ConfigureContinuousReader を呼び出すときに、ドライバーの IUsbTargetPipeContinuousReaderCallbackReadComplete インターフェイスへのポインターを提供する必要があります。
ドライバーが USB パイプ用の継続的リーダーを作成した場合、ドライバーの I/O ターゲットが正常に読み取り要求を完了するたびに、フレームワークはドライバーの OnReaderCompletion コールバック関数を呼び出します。 I/O ターゲットが要求を正常に完了しない場合、フレームワークはドライバーの IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure コールバック関数を呼び出します。
デバイスから読み取られたデータを含むバッファーにアクセスするために、ドライバーは IWDFMemory::GetDataBuffer を呼び出すことができます。 フレームワークは、IWDFUsbTargetPipe2::ConfigureContinuousReader の HeaderLength パラメーターによって定義されたヘッダーの後に、データをバッファーに書き込みます。 IWDFMemory::GetDataBuffer が返すポインターはヘッダーの先頭を指しますが、OnReaderCompletion コールバック関数の NumBytesTransferred パラメーターにはヘッダーの長さが含まれていないことに注意してください。
既定では、 OnReaderCompletion コールバック関数が戻った後に、フレームワークによってバッファーのメモリ オブジェクトが削除されます。 ただし、コールバック関数が返された後もメモリ オブジェクトを有効のままにしたい場合があります。 たとえば、ドライバーでメモリ オブジェクトのインターフェイス ポインターをフレームワーク パイプ オブジェクトの コンテキスト空間 に格納して、コールバック関数が返された後にドライバーがメモリ オブジェクトの内容を処理できるようにする場合があります。 メモリ オブジェクトの有効期間を延長するには、コールバック関数でバッファーの IWDFMemory::AddRef メソッドを呼び出す必要があります。 その後、ドライバーは、フレームワークがオブジェクトを削除できるように、バッファーの IWDFMemory::Release メソッドを呼び出す必要があります。
フレームワークは、次の規則に従って 、OnReaderCompletion および IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure コールバック関数の呼び出しを同期します。
- これらのコールバック関数は、個々の USB パイプに対して同時に実行されません。
- ドライバーが複数の OnReaderCompletion コールバック関数と OnReaderFailure コールバック関数を使用して、複数の USB パイプに対して複数の連続リーダーを作成する場合、複数のコールバック関数を同時に実行できます。
- ドライバーが IWDFUsbTargetPipe2::ConfigureContinuousReader を呼び出すときに既定の NumPendingReads 値を指定した場合 (または、1 より大きい NumPendingReads 値を指定している場合)、OnReaderCompletion コールバック関数の実行中に読み取り要求が完了した場合、フレームワークはコールバック関数が返される前に OnReaderCompletion コールバック関数を再度呼び出すことができます。
- フレームワークは、これらのコールバック関数を他のコールバック関数と同期しません。
OnReaderCompletion コールバック関数と USB I/O ターゲットの詳細については、「USB I/O ターゲットの処理」を参照してください。
要件
要件 | 値 |
---|---|
サポート終了 | UMDF 2.0 以降では使用できません。 |
対象プラットフォーム | デスクトップ |
最小 UMDF バージョン | 1.9 |
Header | wudfusb.h (Wudfusb.h を含む) |
こちらもご覧ください
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure