_URB_OPEN_STATIC_STREAMS構造体 (usb.h)
_URB_OPEN_STATIC_STREAMS 構造体は、指定された一括エンドポイントでストリームを開くために USB クライアント ドライバーによって使用されます。
URB の書式を設定するには、usbBuildOpenStaticStreamsRequest 関数 を呼び出します。
構文
struct _URB_OPEN_STATIC_STREAMS {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG NumberOfStreams;
USHORT StreamInfoVersion;
USHORT StreamInfoSize;
PUSBD_STREAM_INFORMATION Streams;
};
メンバーズ
Hdr
URB ヘッダー情報を指定する _URB_HEADER 構造体。
Hdr.Function をURB_FUNCTION_OPEN_STATIC_STREAMSし、Hdr.Length sizeof(_URB_OPEN_STATIC_STREAMS)
する必要があります。
PipeHandle
開くストリームをサポートするエンドポイントに関連付けられているパイプの不透明なハンドル。
クライアント ドライバーは、URB_FUNCTION_SELECT_CONFIGURATIONまたはURB_FUNCTION_SELECT_INTERFACE要求 PipeHandle を取得します。
NumberOfStreams
開くストリームの数。 NumberOfStreams 値は、Streamsによって指される配列内の要素の数を示します。 この値は、0 より大きく、USB ドライバー スタック、ホスト コントローラー、およびデバイス内のエンドポイントでサポートされるストリームの最大数以下である必要があります。 詳細については、「解説」を参照してください。
StreamInfoVersion
USBD_STREAM_INFORMATION 構造体のバージョン。 URB_OPEN_STATIC_STREAMS_VERSION_100に設定する必要があります。それ以外の場合、要求は失敗し、URB の状態はUSBD_STATUS_INVALID_PARAMETER。
StreamInfoSize
USBD_STREAM_INFORMATION 構造体のサイズ。
StreamInfoSize を sizeof(USBD_STREAM_INFORMATION)
する必要があります。それ以外の場合、要求は失敗し、URB の状態はUSBD_STATUS_INFO_LENGTH_MISMATCH。
Streams
呼び出し元によって割り当てられた、USBD_STREAM_INFORMATION 構造体の初期化された配列へのポインター。 配列の長さは、開くストリームの数によって異なり、NumberOfStreams 値と同じである必要があります。 詳細については、「解説」を参照してください。
備考
I/O 操作のエンドポイントでストリーム (既定のストリーム以外) を使用するには、クライアント ドライバーは、USB ドライバー スタックにオープン ストリーム要求 (URB_FUNCTION_OPEN_STATIC_STREAMS) を送信することによって、必要なストリームを開きます。 要求の場合、クライアント ドライバーは、_URB_OPEN_STATIC_STREAMS 構造体を初期化して URB を書式設定する必要があります。 URB の書式を設定するには、usbBuildOpenStaticStreamsRequest 関数 を呼び出します。
クライアント ドライバーによって開くことができるストリームの最大数は、USB ドライバー スタック、ホスト コントローラー、および一括エンドポイントでサポートされるストリームの最大数以下である必要があります。 ホスト コントローラーでサポートされているストリームの最大数を取得するには、USBD_QueryUsbCapabilityを呼び出します。 USB ドライバー スタックは、最大 255 のストリームをサポートします。 クライアント ドライバーが 255 を超えるストリームを要求した場合、USBD_QueryUsbCapability は要求に失敗します。 エンドポイントでサポートされているストリームの最大数を取得するには、エンドポイント コンパニオン記述子を調べます (Usbspec.h の USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR を参照してください)。
オープン ストリーム要求の URB の書式設定とコード例については、「USB 一括エンドポイントで静的ストリームを開いたり閉じたりする方法」を参照してください。
クライアント ドライバーがストリームの使用を終了すると、ドライバーは、閉じるストリーム要求を送信することによって、特定のエンドポイントに関連付けられているすべてのストリームを閉じることができます。 要求を送信するには、クライアント ドライバーは、_URB_PIPE_REQUEST 構造体内のエンドポイントに関する情報を指定する必要があります。 _URB_PIPE_REQUEST の Hdr メンバーはURB_FUNCTION_CLOSE_STATIC_STREAMSする必要があります。PipeHandle メンバーは、使用中のストリームを含むエンドポイントへのハンドルである必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 |
ヘッダー | usb.h |