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 de fornecedor ou 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 bMaxPacketSize0 membro da estrutura de USB_DEVICE_DESCRIPTOR (descritor de 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 wMaxPacketSize membro da estrutura de USB_ENDPOINT_DESCRIPTOR (descritor de ponto de extremidade).
Quando o controlador de host recebe um pacote cujo comprimento é menor que o wMaxPacketSize valor 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 de 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 de 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 em 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 de 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 para de solicitação, que se torna parte do pacote de instalação definido por USB para o destino. Esse valor é definido pelo criador do código usado no Request.
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, índice deve ser zero.
Reserved1
Reservado. Não use.
Observações
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 reservados para uso do sistema.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | usb.h (incluir Usb.h) |