_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 の書式設定の詳細については、「 HOW to Open and Close Static Streams in a USB Bulk Endpoint」を参照してください。
クライアント ドライバーがストリームを使用して終了すると、ドライバーは、ストリームのクローズ要求を送信することによって、特定のエンドポイントに関連付けられているすべてのストリームを閉じることができます。 要求を送信するには、クライアント ドライバーは 、_URB_PIPE_REQUEST 構造体のエンドポイントに関する情報を指定する必要があります。 _URB_PIPE_REQUESTの Hdr メンバーはURB_FUNCTION_CLOSE_STATIC_STREAMSする必要があります。PipeHandle メンバーは、使用中のストリームを含むエンドポイントへのハンドルである必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
Header | usb.h |