estrutura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)

A estrutura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST é usada por drivers de cliente USB para emitir um comando específico do fornecedor ou da classe para um dispositivo, interface, ponto de extremidade ou outro destino definido pelo dispositivo.

Sintaxe

struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  UCHAR                RequestTypeReservedBits;
  UCHAR                Request;
  USHORT               Value;
  USHORT               Index;
  USHORT               Reserved1;
};

Membros

Hdr

Ponteiro para uma estrutura de _URB_HEADER que especifica as informações do cabeçalho URB. Hdr.Function deve ser um dos URB_FUNCTION_CLASS_XXX ou URB_FUNCTION_VENDOR_XXX GET_STATUS e Hdr.Length deve ser sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST).

Reserved

TransferFlags

Especifica zero, um ou uma combinação dos seguintes sinalizadores:

Valor Significado
USBD_TRANSFER_DIRECTION_IN
É definido para solicitar dados de um dispositivo. Para transferir dados para um dispositivo, esse sinalizador deve estar claro. O sinalizador deverá ser definido se o pipe for um pipe de transferência de interrupção.
USBD_SHORT_TRANSFER_OK
É definido para direcionar o controlador de host para não retornar um erro quando ele recebe um pacote do dispositivo que é menor que o tamanho máximo do pacote para o ponto de extremidade. O tamanho máximo do pacote para o ponto de extremidade é relatado no membro bMaxPacketSize0 da estrutura USB_DEVICE_DESCRIPTOR (descritor do dispositivo) para o ponto de extremidade de controle padrão. Para um ponto de extremidade de controle não padrão, o tamanho máximo do pacote é definido no membro wMaxPacketSize da estrutura USB_ENDPOINT_DESCRIPTOR (descritor de ponto de extremidade).

Quando o controlador de host recebe um pacote cujo comprimento é menor que o valor wMaxPacketSize em um ponto de extremidade de controle, o comportamento é o seguinte, dependendo do tipo de controlador de host:

  • Nos controladores de host EHCI, o controlador host prossegue imediatamente para a fase status da transferência de controle. A transferência é concluída com êxito, independentemente de USBD_SHORT_TRANSFER_OK esteja definida.
  • Em controladores de host UHCI e OHCI, se USBD_SHORT_TRANSFER_OK estiver definido, o controlador host prosseguirá para a fase de status. Se USBD_SHORT_TRANSFER_OK não estiver definido, o controlador host abandonará os dados e status fases da transferência de controle e a transferência será concluída com um erro.

Esse sinalizador não deve ser definido, a menos que USBD_TRANSFER_DIRECTION_IN também esteja definido.

TransferBufferLength

Especifica o comprimento, em bytes, do buffer especificado em TransferBuffer ou descrito em TransferBufferMDL. O driver do controlador host retorna o número de bytes enviados ou lidos do pipe neste membro.

TransferBuffer

Ponteiro para um buffer residente para a transferência ou é NULL se um MDL for fornecido em TransferBufferMDL. O conteúdo desse buffer depende do valor de TransferFlags. Se USBD_TRANSFER_DIRECTION_IN for especificado, esse buffer conterá dados lidos do dispositivo no retorno do driver do controlador host. Caso contrário, esse buffer contém dados fornecidos pelo driver para transferência para o dispositivo.

TransferBufferMDL

Ponteiro para um MDL que descreve um buffer residente ou é NULL se um buffer for fornecido no TransferBuffer. O conteúdo do buffer depende do valor de TransferFlags. Se USBD_TRANSFER_DIRECTION_IN for especificado, o buffer descrito conterá dados lidos do dispositivo no retorno do driver do controlador host. Caso contrário, o buffer contém dados fornecidos pelo driver para transferência para o dispositivo. Esse MDL deve ser alocado do pool nãopagado.

UrbLink

Reservado. Não use.

hca

Reservado. Não use.

RequestTypeReservedBits

Reservado. Não use.

Request

Especifica o código de solicitação USB ou definido pelo fornecedor para o dispositivo, interface, ponto de extremidade ou outro destino definido pelo dispositivo.

Value

Especifica um valor, específico de Request, que se torna parte do pacote de instalação definido por USB para o destino. Esse valor é definido pelo criador do código usado em Solicitação.

Index

Especifica o índice definido pelo dispositivo, retornado por uma solicitação de configuração bem-sucedida, se a solicitação for para um ponto de extremidade ou interface. Caso contrário, Index deverá ser zero.

Reserved1

Reservado. Não use.

Comentários

Os drivers podem usar o formato de rotina de serviço UsbBuildVendorRequest neste URB.

Os membros reservados dessa estrutura devem ser tratados como opacos e são reservados para uso do sistema.

Requisitos

Requisito Valor
Cabeçalho usb.h (inclua Usb.h)

Confira também

URB

Estruturas USB

_URB_HEADER