estrutura _URB_OPEN_STATIC_STREAMS (usb.h)
A estrutura _URB_OPEN_STATIC_STREAMS é usada por um driver cliente USB para abrir fluxos no ponto de extremidade em massa especificado.
Para formatar a URB, chame a função UsbBuildOpenStaticStreamsRequest.
Sintaxe
struct _URB_OPEN_STATIC_STREAMS {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG NumberOfStreams;
USHORT StreamInfoVersion;
USHORT StreamInfoSize;
PUSBD_STREAM_INFORMATION Streams;
};
Membros
Hdr
A estrutura _URB_HEADER que especifica as informações do cabeçalho URB.
hdr.function deve ser URB_FUNCTION_OPEN_STATIC_STREAMS e Hdr.Length deve ser sizeof(_URB_OPEN_STATIC_STREAMS)
.
PipeHandle
Uma alça opaca para o pipe associado ao ponto de extremidade que dá suporte aos fluxos a serem abertos.
O driver cliente obtém PipeHandle da solicitação URB_FUNCTION_SELECT_CONFIGURATION ou URB_FUNCTION_SELECT_INTERFACE.
NumberOfStreams
O número de fluxos a serem abertos. O valor NumberOfStreams indica o número de elementos na matriz apontado por Streams. Esse valor deve ser maior que zero e menor ou igual ao número máximo de fluxos compatíveis com a pilha de driver USB, o controlador de host e o ponto de extremidade no dispositivo. Para obter mais informações, consulte Comentários.
StreamInfoVersion
Versão da estrutura USBD_STREAM_INFORMATION. Deve ser definido como URB_OPEN_STATIC_STREAMS_VERSION_100; caso contrário, a solicitação falhará e o status da URB será USBD_STATUS_INVALID_PARAMETER.
StreamInfoSize
Tamanho da estrutura USBD_STREAM_INFORMATION.
StreamInfoSize deve ser sizeof(USBD_STREAM_INFORMATION)
; caso contrário, a solicitação falhará e o status da URB será USBD_STATUS_INFO_LENGTH_MISMATCH.
Streams
Ponteiro para uma matriz inicializada e alocada por chamador de estruturas USBD_STREAM_INFORMATION. O comprimento da matriz depende do número de fluxos a serem abertos e deve ser o mesmo que o valor NumberOfStreams. Para obter mais informações, consulte Comentários.
Observações
Para usar fluxos (além do fluxo padrão) no ponto de extremidade para operações de E/S, o driver cliente abre os fluxos necessários enviando uma solicitação de fluxo aberto (URB_FUNCTION_OPEN_STATIC_STREAMS) para a pilha de driver USB. Para a solicitação, o driver cliente deve formatar a URB inicializando a estrutura de _URB_OPEN_STATIC_STREAMS. Para formatar a URB, chame a função UsbBuildOpenStaticStreamsRequest.
O número máximo de fluxos que podem ser abertos por um driver cliente deve ser menor ou igual ao número máximo de fluxos suportados pela pilha de driver USB, pelo controlador de host e pelo ponto de extremidade em massa. Para obter o número máximo de fluxos com suporte pelo controlador de host, chame USBD_QueryUsbCapability. A pilha de driver USB dá suporte a até 255 fluxos. Se o driver cliente solicitar mais de 255 fluxos, USBD_QueryUsbCapability falha na solicitação. Para obter o número máximo de fluxos com suporte pelo ponto de extremidade, inspecione o descritor complementar do ponto de extremidade (consulte USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR em Usbspec.h).
Para obter informações sobre como formatar a URB para o exemplo de código e solicitação de fluxo aberto, consulte How to Open and Close Static Streams in a USB Bulk Endpoint.
Quando o driver cliente terminar de usar os fluxos, o driver poderá fechar todos os fluxos associados a um ponto de extremidade específico enviando uma solicitação de fluxo de fechamento. Para enviar a solicitação, o driver cliente deve especificar informações sobre o ponto de extremidade na estrutura _URB_PIPE_REQUEST. O membro hdr do _URB_PIPE_REQUEST deve ser URB_FUNCTION_CLOSE_STATIC_STREAMS; o pipeHandle membro deve ser o identificador para o ponto de extremidade que contém os fluxos em uso.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 8 |
cabeçalho | usb.h |
Consulte também
Como abrir e fechar fluxos estáticos em um ponto de extremidade em massa USB