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

URB

Estruturas USB

_URB_HEADER