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 が返すポインターはヘッダーの先頭を指しますが、コールバック関数の NumBytesTransferred パラメーター onReaderCompletion にはヘッダーの長さが含まれていないことに注意してください。
既定では、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 |
ヘッダー | wudfusb.h (Wudfusb.h を含む) |
関連項目
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure