Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A estrutura _URB_CONTROL_TRANSFER_EX é usada por drivers cliente USB para transferir dados de ou para um pipe de controle, com um tempo limite que limita o tempo de transferência aceitável.
Sintaxe
struct _URB_CONTROL_TRANSFER_EX {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
ULONG Timeout;
ULONG Pad;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
Membros
Hdr
Ponteiro para uma estrutura de _URB_HEADER que especifica as informações do cabeçalho URB.
hdr.function deve ser URB_FUNCTION_CONTROL_TRANSFER_EX e Hdr.Length deve ser sizeof(_URB_CONTROL_TRANSFER_EX).
PipeHandle
Manipule para o pipe.
Se o destino for o ponto de extremidade de controle padrão, pipeHandle deverá ser NULL. Nesse caso, o TransferFlags deve conter o sinalizador USBD_DEFAULT_PIPE_TRANSFER.
Se o destino for um ponto de extremidade de controle não padrão, PipeHandle especificar um identificador opaco para o pipe de controle. O driver do controlador de host retorna esse identificador quando o driver cliente seleciona a configuração do dispositivo com um URB do tipo URB_FUNCTION_SELECT_CONFIGURATION ou quando o driver cliente altera as configurações de uma interface com um URB do tipo URB_FUNCTION_SELECT_INTERFACE.
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. |
|
Está definido para transferir dados para um dispositivo. Definir esse sinalizador é equivalente a limpar o sinalizador de USBD_TRANSFER_DIRECTION_IN. |
|
É 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:
|
|
É definido para direcionar o controlador de host para fazer uma transferência de controle no pipe de controle padrão. Isso permite que o chamador envie comandos para o pipe de controle padrão sem especificar explicitamente o identificador de pipe. |
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.
Timeout
Indica a hora, em milissegundos, antes do tempo limite da URB. Um valor de 0 indica que não há tempo limite para essa URB.
Pad
Reservado. Não use.
hca
Reservado. Não use.
SetupPacket[8]
Especifica um pacote de instalação de solicitação definido por USB. O formato de um pacote de instalação de solicitação USB é encontrado na especificação do núcleo USB.
Observações
Essa estrutura URB é idêntica a _URB_CONTROL_TRANSFER, exceto que o membro Timeout estabelece um tempo limite para a URB.
Os membros reservados dessa estrutura devem ser tratados como opacos e reservados para uso do sistema.
Requisitos
| Requisito | Valor |
|---|---|
| de cliente com suporte mínimo | Disponível no Windows Vista e em sistemas operacionais posteriores. |
| cabeçalho | usb.h (incluir Usb.h) |