Compartilhar via


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

URB

estruturas USB

_URB_HEADER