次の方法で共有


WDF_USB_CONTINUOUS_READER_CONFIG構造体 (wdfusb.h)

[KMDF と UMDF に適用]

WDF_USB_CONTINUOUS_READER_CONFIG 構造体には、フレームワークが USB パイプの連続リーダーを構成するために使用する情報が含まれています。

構文

typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG {
  ULONG                                 Size;
  size_t                                TransferLength;
  size_t                                HeaderLength;
  size_t                                TrailerLength;
  UCHAR                                 NumPendingReads;
  PWDF_OBJECT_ATTRIBUTES                BufferAttributes;
  PFN_WDF_USB_READER_COMPLETION_ROUTINE EvtUsbTargetPipeReadComplete;
  WDFCONTEXT                            EvtUsbTargetPipeReadCompleteContext;
  PFN_WDF_USB_READERS_FAILED            EvtUsbTargetPipeReadersFailed;
} WDF_USB_CONTINUOUS_READER_CONFIG, *PWDF_USB_CONTINUOUS_READER_CONFIG;

メンバーズ

Size

この構造体のサイズ (バイト単位)。

TransferLength

デバイスから受信できるデータの最大長 (バイト単位)。

HeaderLength

デバイスからデータを受信するバッファーへのオフセット (バイト単位)。 フレームワークは、オフセット値から始まる読み取りバッファーにデバイスからのデータを格納します。 つまり、この領域は、フレームワークがデバイスからデータを格納する TransferLengthサイズの領域の前にあります。

TrailerLength

末尾のバッファー領域の長さ (バイト単位)。 この領域は、TransferLengthサイズの領域に従って、フレームワークがデバイスからデータを格納します。

NumPendingReads

I/O ターゲットからデータを受信するためにフレームワークがキューに登録する読み取り要求の数。 この値が 0 の場合、フレームワークは既定の数の読み取り要求を使用します。 指定した値が許可された最大値より大きい場合、フレームワークは許可された最大値を使用します。 numPendingReads メンバー の詳細については、次の「解説」セクションを参照してください。

BufferAttributes

フレームワークが読み取り要求ごとに作成するフレームワーク メモリ オブジェクトのオブジェクト属性を指定する WDF_OBJECT_ATTRIBUTES 構造体。 このメンバーは NULL できます。 WDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーを設定することはできません。

EvtUsbTargetPipeReadComplete

ドライバーの EvtUsbTargetPipeReadComplete コールバック関数へのポインター。

EvtUsbTargetPipeReadCompleteContext

フレームワークがドライバーの EvtUsbTargetPipeReadComplete コールバック関数に渡すドライバー定義コンテキスト情報への型指定されていないポインター。

EvtUsbTargetPipeReadersFailed

ドライバーの EvtUsbTargetPipeReadersFailed コールバック関数へのポインター。 このポインターは省略可能であり、NULL できます。 このパラメーターの詳細については、「WdfUsbTargetPipeConfigContinuousReaderの解説」セクションを参照してください。

備考

WDF_USB_CONTINUOUS_READER_CONFIG 構造体は、WdfUsbTargetPipeConfigContinuousReader メソッドへの入力として使用されます。

WDF_USB_CONTINUOUS_READER_CONFIG構造体を初期化するには、ドライバーが WDF_USB_CONTINUOUS_READER_CONFIG_INITを呼び出す必要があります。

NumPendingReads メンバーの値を選択する場合は、次のガイドラインに従います。

  • ドライバー フレームワークの既定値を使用する場合は、NumPendingReads を 0 に設定します。

    既定値は 1 より大きく、多くのプロセッサ構成の多くのデバイスに適切なパフォーマンスを提供することが決定されています。

  • ドライバー デバイスがデータを配信する正確な順序でデータ バッファーを受信することが重要な場合は、numPendingReads を 1 に設定します。
  • NumPendingReads を、徹底的なパフォーマンス測定に基づいて、デバイスのパフォーマンス要件を満たす数値に設定します。

    まず、numPendingReads の既定値 (0)デバイスをテストします。 テストには、プロセッサの種類や数、さまざまな USB ホスト コントローラー、USB 構成など、さまざまなハードウェア構成を含める必要があります。 その後、同じテストを使用して、より高い値を試すことができます。 より高い値を必要とする可能性のあるドライバーは、割り込み速度が高いデバイスの場合であり、割り込みが迅速に処理されない場合にデータが失われる可能性があります。

NumPendingReads 値が大きすぎると、システムのパフォーマンスが低下する可能性があります。 パフォーマンス要件を満たす最小値を使用する必要があります。 通常、3 または 4 より大きい値では、データ のスループットは向上しません。 ただし、値を大きくすると、高周波パイプの待機時間やデータが欠落する可能性が低下する可能性があります。

必要条件

要件 価値
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdfusb.h (Wdfusb.h を含む)

関連項目

EvtUsbTargetPipeReadComplete

EvtUsbTargetPipeReadersFailed

WDF_OBJECT_ATTRIBUTES

WDF_USB_CONTINUOUS_READER_CONFIG_INIT

WdfUsbTargetPipeConfigContinuousReader