_URB_HEADER構造体 (usb.h)

_URB_HEADER構造体は、USB クライアント ドライバーによって使用され、ホスト コントローラー ドライバーに送信される要求に関する基本情報を提供します。

構文

struct _URB_HEADER {
  USHORT      Length;
  USHORT      Function;
  USBD_STATUS Status;
  PVOID       UsbdDeviceHandle;
  ULONG       UsbdFlags;
};

メンバー

Length

URB の長さをバイト単位で指定します。 _URB_HEADER以外のデータ構造を使用する URB 要求の場合、このメンバーは、 _URB_HEADERサイズではなく URB 要求構造全体の長さに設定する必要があります。

Function

この URB に対して要求された操作を示す数値コードを指定します。 次のいずれかの値を設定する必要があります。

URB_FUNCTION_SELECT_CONFIGURATION

構成を選択することをホスト コントローラー ドライバーに示します。 設定した場合、URB はデータ構造として URB_SELECT_CONFIGURATION と共に使用されます。

URB_FUNCTION_SELECT_INTERFACE

インターフェイスに対して代替インターフェイス設定が選択されていることをホスト コントローラー ドライバーに示します。 設定した場合、URB はデータ構造として _URB_SELECT_INTERFACE と共に使用されます。

URB_FUNCTION_ABORT_PIPE

パイプに対するすべての未処理の要求を取り消す必要があることを示します。 設定した場合、URB はデータ構造として _URB_PIPE_REQUEST と共に使用されます。 この汎用要求により、クライアントは、指定されたパイプの保留中の転送を取り消すことが可能になります。 パイプの状態とエンドポイントの状態は影響を受けません。 未解決のすべての要求が完了する前に、中止要求が完了する可能性があります。 中止要求の完了は、他のすべての未処理の要求が完了したことを意味するとは考 えないでください

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL

この URB 関数は、Windows 2000 以降のオペレーティング システムでは 非推奨 であり、Microsoft ではサポートされていません。 使用しないでください。 URB 要求でこの関数を指定すると、要求は失敗し、システムからエラーが報告されます。

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL

この URB 関数は、Windows 2000 以降のオペレーティング システムでは 非推奨 であり、Microsoft ではサポートされていません。 使用しないでください。 URB 要求でこの関数を指定すると、要求は失敗し、システムからエラーが報告されます。

URB_FUNCTION_GET_FRAME_LENGTH

この URB 関数は、Windows 2000 以降のオペレーティング システムでは 非推奨 であり、Microsoft ではサポートされていません。 使用しないでください。 URB 要求でこの関数を使用すると、要求は失敗し、システムからエラーが報告されます。

URB_FUNCTION_SET_FRAME_LENGTH

この URB 関数は、Windows 2000 以降のオペレーティング システムでは 非推奨 であり、Microsoft ではサポートされていません。 使用しないでください。 URB 要求と共に使用すると、要求は失敗し、システムからエラーが報告されます。

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER

ホスト コントローラー ドライバーに現在のフレーム番号を要求します。 設定した場合、URB はデータ構造として _URB_GET_CURRENT_FRAME_NUMBER と共に使用されます。

URB_FUNCTION_CONTROL_TRANSFER

コントロール パイプとの間でデータを転送します。 設定した場合、URB はデータ構造として _URB_CONTROL_TRANSFER と共に使用されます。

URB_FUNCTION_CONTROL_TRANSFER_EX

タイムアウト値で指定された時間制限なしで、コントロール パイプとの間でデータを転送します。 設定した場合、URB はデータ構造として URB_CONTROL_TRANSFER_EX と共に使用されます。

Windows Vista 以降のオペレーティング システムで使用できます。

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER

バルク パイプまたは割り込みパイプまたはバルク パイプにデータを転送します。 設定した場合、URB はデータ構造として _URB_BULK_OR_INTERRUPT_TRANSFER と共に使用されます。

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_USING_CHAINED_MDL

チェーンされた MDL を使用して、バルク パイプまたは割り込みパイプとの間でデータを転送します。 設定した場合、URB はデータ構造として _URB_BULK_OR_INTERRUPT_TRANSFER と共に使用されます。 クライアント ドライバーは 、TransferBufferMDL メンバーを、転送バッファーを含むチェーン内の最初の MDL 構造体に設定する必要があります。 USB ドライバー スタックは、この URB を処理するときに TransferBuffer メンバーを 無視します。

Windows 8で使用できます。 チェーンされた MDLs の使用方法については、「 How to Send Chained MDLs」を>参照してください。

URB_FUNCTION_ISOCH_TRANSFER

等時性パイプとの間でデータを転送します。 設定した場合、URB はデータ構造として _URB_ISOCH_TRANSFER と共に使用されます。

URB_FUNCTION_ISOCH_TRANSFER_USING_CHAINED_MDL

チェーンされた MDL を使用して、等時性パイプとの間でデータを転送します。 設定した場合、URB はデータ構造として _URB_ISOCH_TRANSFER と共に使用されます。 クライアント ドライバーは 、TransferBufferMDL メンバーを、転送バッファーを含むチェーン内の最初の MDL に設定する必要があります。 USB ドライバー スタックは、この URB を処理するときに TransferBuffer メンバーを 無視します。

Windows 8で使用できます。 チェーンされた MDLs の使用方法については、「 How to Send Chained MDLs」を>参照してください。

URB_FUNCTION_RESET_PIPE

「URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL」を参照してください。

URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL

指定されたパイプをリセットします。 設定した場合、この URB は _URB_PIPE_REQUESTと共に使用されます。

注意

この URB は、URB_FUNCTION_RESET_PIPEを置き換えます。

バス ドライバーは、この URB に応じて次の 3 つのタスクを実行します。

まず、等時性パイプを除くすべてのパイプについて、この URB はデバイスのENDPOINT_HALT機能をクリアするCLEAR_FEATURE要求を送信します。

次に、USB バス ドライバーは、USB 仕様で必要に応じて、ホスト側のデータ トグルをリセットします。 バス ドライバーがENDPOINT_HALT機能をクリアすると、USB デバイスはデバイス側のデータ トグルをリセットする必要があります。 一部の非準拠デバイスではこの機能がサポートされていないため、Microsoft では、URB_FUNCTION_SYNC_CLEAR_STALLとURB_FUNCTION_SYNC_RESET_PIPEという 2 つの追加の URL を提供しています。 これにより、クライアント ドライバーは、デバイスのENDPOINT_HALT機能をクリアしたり、ホスト側のデータ切り替えに影響を与えることなく、それぞれホスト側のパイプをリセットしたりできます。 デバイスが必要なときにデータトグルをリセットしない場合、クライアント ドライバーはホスト側のデータトグルをリセットしないことで、この欠陥を補うことができます。 データトグルがホスト側でリセットされ、デバイス側ではリセットされない場合、パケットは順番に外れ、デバイスはパケットをドロップする可能性があります。

3 つ目は、バス ドライバーがパイプを正常にリセットした後、次にキューに入っている URB を使用して転送を再開します。

パイプのリセット後、次にキューに入れた URB を使用して転送を再開します。

既定のコントロール パイプで停止条件をクリアする必要はありません。 既定の制御パイプは常にセットアップ パケットを受け入れる必要があるため、停止すると、USB スタックによって停止条件が自動的にクリアされます。 クライアント ドライバーは、既定のパイプの停止条件をクリアするために特別なアクションを実行する必要はありません。

パイプのリセットを試みる前に、すべての転送を中止または取り消す必要があります。

この URB は、PASSIVE_LEVELで送信する必要があります。

URB_FUNCTION_SYNC_RESET_PIPE

パイプのホスト側の停止条件をクリアします。 設定した場合、この URB はデータ構造として _URB_PIPE_REQUEST と共に使用されます。

この URB を使用すると、クライアントは、データトグルをリセットせずに、エンドポイントの停止状態 (機能ENDPOINT_HALT) をクリアすることなく、パイプの停止状態をクリアできます。 パイプの停止条件をクリアするには、ホスト側データトグルをリセットし、1 回の操作でデバイスの停止をクリアするには、URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALLを使用します。

次の状態コードは重要であり、示された意味を持ちます。

USBD_STATUS_INVALID_PIPE_HANDLE

PipeHandle が無効です

USBD_STATUS_ERROR_BUSY

エンドポイントにアクティブな転送が保留中です。

既定のコントロール パイプで停止条件をクリアする必要はありません。 既定の制御パイプは常にセットアップ パケットを受け入れる必要があるため、停止すると、USB スタックによって停止条件が自動的にクリアされます。 クライアント ドライバーは、既定のパイプの停止条件をクリアするために特別なアクションを実行する必要はありません。

パイプのリセットを試みる前に、すべての転送を中止または取り消す必要があります。

この URB は、PASSIVE_LEVELで送信する必要があります。

Windows XP 以降のオペレーティング システムで使用できます。

URB_FUNCTION_SYNC_CLEAR_STALL

エンドポイントの停止状態をクリアします。 等時性パイプを除くすべてのパイプに対して、この URB はデバイスのENDPOINT_HALT機能をクリアするCLEAR_FEATURE要求を送信します。 ただし、RB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL関数とは異なり、この URB 関数はパイプのホスト側のデータ トグルをリセットしません。 USB 仕様では、クライアントがデバイスのENDPOINT_HALT機能をクリアした後、デバイス側のデータ トグルをリセットする必要がありますが、一部の非準拠デバイスでは、データの切り替えが正しくリセットされません。 このようなデバイスを管理するクライアント ドライバーは、URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALLでパイプをリセットするのではなく、URB_FUNCTION_SYNC_CLEAR_STALLを使用して直接停止状態をクリアすることで、この欠陥を補うことができます。 URB_FUNCTION_SYNC_CLEAR_STALLホスト側のデータトグルをリセットせずに、デバイスの停止状態をクリアします。 これにより、非準拠デバイスが次のパケットを再送信として解釈し、パケットを破棄できなくなります。

設定した場合、URB はデータ構造として _URB_PIPE_REQUEST と共に使用されます。

この URB 関数は、PASSIVE_LEVELで送信する必要があります

Windows XP 以降のオペレーティング システムで使用できます。

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE

特定の USB デバイスからデバイス記述子を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT

USB デバイスのインターフェイス上のエンドポイントから記述子を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE

デバイスのデバイス記述子を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT

インターフェイスのエンドポイントにエンドポイント記述子を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_SET_FEATURE_TO_DEVICE

デバイス上の USB 定義機能を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_SET_FEATURE_TO_INTERFACE

デバイスのインターフェイスで USB 定義機能を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT

USB デバイス上のインターフェイスのエンドポイントで USB 定義機能を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_SET_FEATURE_TO_OTHER

USB デバイス上のデバイス定義ターゲットに USB 定義機能を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE

デバイス上の USB 定義機能をクリアします。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE

デバイスのインターフェイスで USB 定義機能をクリアします。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT

USB デバイス上のインターフェイスのエンドポイント上の USB 定義機能をクリアします。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER

USB デバイス上のデバイス定義ターゲットの USB 定義機能をクリアします。 設定した場合、URB はデータ構造として _URB_CONTROL_FEATURE_REQUEST と共に使用されます。

URB_FUNCTION_GET_STATUS_FROM_DEVICE

USB デバイスから状態を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_STATUS_REQUEST と共に使用されます。

URB_FUNCTION_GET_STATUS_FROM_INTERFACE

USB デバイス上のインターフェイスから状態を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_STATUS_REQUEST と共に使用されます。

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT

USB デバイス上のインターフェイスのエンドポイントから状態を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_STATUS_REQUEST と共に使用されます。

URB_FUNCTION_GET_STATUS_FROM_OTHER

USB デバイス上のデバイス定義のターゲットから状態を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_STATUS_REQUEST と共に使用されます。

URB_FUNCTION_VENDOR_DEVICE

ベンダー固有のコマンドを USB デバイスに送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_VENDOR_INTERFACE

USB デバイス上のインターフェイスのベンダー固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_VENDOR_ENDPOINT

USB デバイス上のインターフェイス上のエンドポイントに対してベンダー固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_VENDOR_OTHER

USB デバイス上のデバイス定義ターゲットにベンダー固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_CLASS_DEVICE

USB 定義のクラス固有のコマンドを USB デバイスに送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_CLASS_INTERFACE

USB デバイス上のインターフェイスに USB 定義のクラス固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_CLASS_ENDPOINT

USB デバイス上のエンドポイント (インターフェイス) に USB 定義のクラス固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_CLASS_OTHER

USB デバイス上のデバイス定義ターゲットに USB 定義のクラス固有のコマンドを送信します。 設定した場合、URB はデータ構造として _URB_CONTROL_VENDOR_OR_CLASS_REQUEST と共に使用されます。

URB_FUNCTION_GET_CONFIGURATION

USB デバイスの現在の構成を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_CONFIGURATION_REQUEST と共に使用されます。

URB_FUNCTION_GET_INTERFACE

USB デバイス上のインターフェイスの現在の設定を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_GET_INTERFACE_REQUEST と共に使用されます。

Windows 2000 および Windows Vista 以降のオペレーティング システムで使用できます。 Windows XP では使用できません。

URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE

USB デバイスのインターフェイスから記述子を取得します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE

USB デバイス上のインターフェイスの記述子を設定します。 設定した場合、URB はデータ構造として _URB_CONTROL_DESCRIPTOR_REQUEST と共に使用されます。

URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR

USB デバイスまたは USB デバイス上のインターフェイスから Microsoft OS 機能記述子を取得します。 設定した場合、URB はデータ構造として _URB_OS_FEATURE_DESCRIPTOR_REQUEST と共に使用されます。

Windows XP 以降のオペレーティング システムで使用できます。

URB_FUNCTION_OPEN_STATIC_STREAMS

指定した一括エンドポイントでストリームを開きます。 設定した場合、URB はデータ構造として _URB_OPEN_STATIC_STREAMS と共に使用されます。

Windows 8で使用できます。 オープン ストリーム要求の URB の書式設定の詳細については、「 HOW to Open and Close Static Streams in a USB Bulk Endpoint」を参照してください。

URB_FUNCTION_CLOSE_STATIC_STREAMS

指定した一括エンドポイントで開いているすべてのストリームを閉じます。 設定した場合、URB はデータ構造として _URB_PIPE_REQUEST と共に使用されます。

Windows 8で使用できます。 オープン ストリーム要求の URB の書式設定の詳細については、「 HOW to Open and Close Static Streams in a USB Bulk Endpoint」を参照してください。

Status

ホスト コントローラー ドライバーから返されたUSBD_STATUS_XXX コードが含まれます。

UsbdDeviceHandle

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

UsbdFlags

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

注釈

_URB_HEADER構造体は、URB 構造体の一部であるすべての USB 要求のメンバーです。 _URB_HEADER構造体は、各要求に関する一般的な情報をホスト コントローラー ドライバーに提供するために使用されます。

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

要件

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

こちらもご覧ください

Urb

USB 構造体

_URB_BULK_OR_INTERRUPT_TRANSFER

_URB_CONTROL_DESCRIPTOR_REQUEST

_URB_CONTROL_FEATURE_REQUEST

_URB_CONTROL_GET_CONFIGURATION_REQUEST

_URB_CONTROL_GET_INTERFACE_REQUEST

_URB_CONTROL_GET_STATUS_REQUEST

_URB_CONTROL_TRANSFER

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST

_URB_GET_CURRENT_FRAME_NUMBER

_URB_ISOCH_TRANSFER

_URB_OS_FEATURE_DESCRIPTOR_REQUEST

_URB_PIPE_REQUEST

_URB_SELECT_CONFIGURATION

_URB_SELECT_INTERFACE