_URB_CONTROL_VENDOR_OR_CLASS_REQUEST構造体 (usb.h)

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST構造は、デバイス、インターフェイス、エンドポイント、またはその他のデバイス定義ターゲットにベンダーまたはクラス固有のコマンドを発行するために、USB クライアント ドライバーによって使用されます。

構文

struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  UCHAR                RequestTypeReservedBits;
  UCHAR                Request;
  USHORT               Value;
  USHORT               Index;
  USHORT               Reserved1;
};

メンバー

Hdr

URB ヘッダー情報を指定する _URB_HEADER 構造体へのポインター。 Hdr.Function はURB_FUNCTION_CLASS_XXXまたはURB_FUNCTION_VENDOR_XXX GET_STATUSのいずれか、 Hdr.Length は である sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST)必要があります。

Reserved

TransferFlags

0、1、または次のフラグの組み合わせを指定します。

意味
USBD_TRANSFER_DIRECTION_IN
デバイスからデータを要求するように設定されます。 デバイスにデータを転送するには、このフラグをクリアする必要があります。 パイプが割り込み転送パイプの場合は、フラグを設定する必要があります。
USBD_SHORT_TRANSFER_OK
エンドポイントの最大パケット サイズより短いパケットをデバイスから受信したときに、ホスト コントローラーがエラーを返さないように設定します。 エンドポイントの最大パケット サイズは、既定の制御エンドポイントのUSB_DEVICE_DESCRIPTOR構造体 (デバイス記述子) の bMaxPacketSize0 メンバーで報告されます。 既定以外の制御エンドポイントの場合、最大パケット サイズは、USB_ENDPOINT_DESCRIPTOR構造体 (エンドポイント記述子) の wMaxPacketSize メンバーで設定されます。

ホスト コントローラーが、コントロール エンドポイントの wMaxPacketSize 値よりも短いパケットを受信すると、ホスト コントローラーの種類に応じて動作は次のようになります。

  • EHCI ホスト コントローラーでは、ホスト コントローラーは制御転送の状態フェーズにすぐに進みます。 USBD_SHORT_TRANSFER_OKが設定されているかどうかに関係なく、転送は正常に完了します。
  • UHCI および OHCI ホスト コントローラーでは、USBD_SHORT_TRANSFER_OKが設定されている場合、ホスト コントローラーは状態フェーズに進みます。 USBD_SHORT_TRANSFER_OKが設定されていない場合、ホスト コントローラーはコントロール転送のデータフェーズとステータス フェーズを破棄し、転送がエラーで完了します。

USBD_TRANSFER_DIRECTION_INも設定されていない限り、このフラグを設定しないでください。

TransferBufferLength

TransferBuffer で指定されたバッファーまたは TransferBufferMDL で説明されているバッファーの長さをバイト単位で指定します。 ホスト コントローラー ドライバーは、このメンバー内のパイプに送信または読み取られたバイト数を返します。

TransferBuffer

転送の常駐バッファーへのポインター。MDL が TransferBufferMDL で指定されている場合は NULL です。 このバッファーの内容は、 TransferFlags の値によって異なります。 USBD_TRANSFER_DIRECTION_INが指定されている場合、このバッファーには、ホスト コントローラー ドライバーから返されるときにデバイスから読み取られたデータが含まれます。 それ以外の場合、このバッファーには、デバイスに転送するためのドライバー指定のデータが含まれます。

TransferBufferMDL

常駐バッファーを記述する MDL へのポインター。バッファーが TransferBuffer で指定されている場合は NULL です。 バッファーの内容は、 TransferFlags の値によって異なります。 USBD_TRANSFER_DIRECTION_INが指定されている場合、記述されたバッファーには、ホスト コントローラー ドライバーから返されるときにデバイスから読み取られたデータが含まれます。 それ以外の場合、バッファーには、デバイスに転送するためのドライバー指定のデータが含まれます。 この MDL は、非ページ プールから割り当てる必要があります。

UrbLink

予約済み。 使用しないでください。

hca

予約済み。 使用しないでください。

RequestTypeReservedBits

予約済み。 使用しないでください。

Request

デバイス、インターフェイス、エンドポイント、またはその他のデバイス定義ターゲットの USB またはベンダー定義の要求コードを指定します。

Value

ターゲットの USB 定義セットアップ パケットの一部 となる Request に固有の値を指定します。 この値は、Request で使用されるコードの作成者によって定義 されます

Index

要求がエンドポイントまたはインターフェイスに対する場合に、正常な構成要求によって返されるデバイス定義インデックスを指定します。 それ以外の場合、 Index は 0 である必要があります。

Reserved1

予約済み。 使用しないでください。

注釈

ドライバーは、この URB の UsbBuildVendorRequest サービス ルーチン形式を使用できます。

この構造体の予約済みメンバーは不透明として扱う必要があり、システム使用のために予約されています。

要件

要件
Header usb.h (Usb.h を含む)

こちらもご覧ください

Urb

USB 構造体

_URB_HEADER