Função WdfUsbTargetDeviceAllocAndQueryString (wdfusb.h)
[Aplica-se a KMDF e UMDF]
O método WdfUsbTargetDeviceAllocAndQueryString aloca um buffer e recupera a cadeia de caracteres Unicode associada a um dispositivo USB especificado e um valor de índice do descritor.
Sintaxe
NTSTATUS WdfUsbTargetDeviceAllocAndQueryString(
[in] WDFUSBDEVICE UsbDevice,
[in, optional] PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
[out] WDFMEMORY *StringMemory,
[out, optional] PUSHORT NumCharacters,
[in] UCHAR StringIndex,
[in, optional] USHORT LangID
);
Parâmetros
[in] UsbDevice
Um identificador para um objeto de dispositivo USB que foi obtido de uma chamada anterior para WdfUsbTargetDeviceCreateWithParameters.
[in, optional] StringMemoryAttributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que contém atributos fornecidos pelo chamador para o novo objeto de memória. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.
[out] StringMemory
Um ponteiro para um local que recebe um identificador para o objeto de memória que contém a cadeia de caracteres Unicode. A cadeia de caracteres será terminada em NULL somente se o dispositivo fornecer uma cadeia de caracteres terminada em NULL.
[out, optional] NumCharacters
Um ponteiro para um local que recebe o número de caracteres contidos no descritor de cadeia de caracteres. Se a cadeia de caracteres Unicode for terminada em NULL, esse número incluirá o caractere NULL. Esse parâmetro é opcional e pode ser NULL.
[in] StringIndex
Um valor de índice que identifica a cadeia de caracteres Unicode. Esse valor de índice é obtido de uma estrutura de USB_DEVICE_DESCRIPTOR, USB_CONFIGURATION_DESCRIPTOR ou USB_INTERFACE_DESCRIPTOR .
[in, optional] LangID
Um identificador de idioma. A cadeia de caracteres Unicode será recuperada para o idioma especificado por esse identificador. Para obter informações sobre como obter os identificadores de idioma com suporte de um dispositivo, consulte a especificação USB.
Retornar valor
WdfUsbTargetDeviceAllocAndQueryString retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro inválido foi detectado. |
|
Não foi possível alocar um buffer de memória. |
|
O dispositivo USB retornou um descritor inválido. |
|
O buffer fornecido era muito pequeno. |
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
O método WdfUsbTargetDeviceAllocAndQueryString , que seu driver só precisa chamar uma vez para obter um descritor de cadeia de caracteres, é uma alternativa ao método WdfUsbTargetDeviceQueryString , que deve ser chamado duas vezes para obter uma cadeia de caracteres.
O método localiza o descritor de cadeia de caracteres USB especificado, copia a cadeia de caracteres Unicode do descritor em um objeto de memória e retorna um identificador para o objeto de memória.
Depois de chamar WdfUsbTargetDeviceAllocAndQueryString, o driver pode passar o identificador StringMemory para WdfMemoryGetBuffer para acessar o conteúdo do objeto de memória.
Para obter mais informações sobre descritores de cadeia de caracteres USB, consulte a especificação USB.
Para obter mais informações sobre o método WdfUsbTargetDeviceAllocAndQueryString e destinos de E/S USB, consulte Destinos de E/S USB.
Exemplos
O exemplo de código a seguir chama WdfUsbTargetDeviceAllocAndQueryString para obter a cadeia de caracteres de nome do fabricante, em inglês dos EUA (0x0409), de um descritor de dispositivo USB. (O driver armazenou anteriormente o descritor no espaço de contexto definido pelo driver.)
PMY_DEVICE_CONTEXT myDeviceContext;
WDFMEMORY memoryHandle;
USHORT numCharacters;
myDeviceContext = GetDeviceContext(device);
status = WdfUsbTargetDeviceAllocAndQueryString(
myDeviceContext->UsbTargetDevice,
WDF_NO_OBJECT_ATTRIBUTES,
&memoryHandle,
&numCharacters,
myDeviceContext->UsbDeviceDescr.iManufacturer,
0x0409
);
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfusb.h (include Wdfusb.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf) |