_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、または次のフラグの組み合わせを指定します。
値 | 意味 |
---|---|
|
デバイスからデータを要求するように設定されます。 デバイスにデータを転送するには、このフラグをクリアする必要があります。 パイプが割り込み転送パイプの場合は、フラグを設定する必要があります。 |
|
エンドポイントの最大パケット サイズより短いパケットをデバイスから受信したときに、ホスト コントローラーがエラーを返さないように設定します。 エンドポイントの最大パケット サイズは、既定の制御エンドポイントのUSB_DEVICE_DESCRIPTOR構造体 (デバイス記述子) の bMaxPacketSize0 メンバーで報告されます。 既定以外の制御エンドポイントの場合、最大パケット サイズは、USB_ENDPOINT_DESCRIPTOR構造体 (エンドポイント記述子) の wMaxPacketSize メンバーで設定されます。
ホスト コントローラーが、コントロール エンドポイントの wMaxPacketSize 値よりも短いパケットを受信すると、ホスト コントローラーの種類に応じて動作は次のようになります。
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 を含む) |