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 |
---|---|
|
É 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. |
|
É 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:
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) |