estrutura _URB_OPEN_STATIC_STREAMS (usb.h)
A estrutura _URB_OPEN_STATIC_STREAMS é usada por um driver de cliente USB para abrir fluxos no ponto de extremidade em massa especificado.
Para formatar o 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
Um identificador opaco 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 de 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 apontada 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 do driver USB, o controlador 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 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 URB será USBD_STATUS_INFO_LENGTH_MISMATCH.
Streams
Ponteiro para uma matriz inicializada de estruturas de USBD_STREAM_INFORMATION alocadas pelo chamador. 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.
Comentários
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 do cliente deve formatar o URB inicializando a estrutura _URB_OPEN_STATIC_STREAMS . Para formatar o 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 compatíveis com a pilha de driver USB, o controlador de host e o 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 do cliente solicitar mais de 255 fluxos, USBD_QueryUsbCapability falhará 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 o URB para a solicitação de fluxo aberto e o exemplo de código, consulte Como abrir e fechar fluxos estáticos em um ponto de extremidade em massa USB.
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 próximo. Para enviar a solicitação, o driver do 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 membro PipeHandle deve ser o identificador para o ponto de extremidade que contém os fluxos em uso.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Cabeçalho | usb.h |
Confira também
Como abrir e fechar fluxos estáticos em um ponto de extremidade em massa USB