Condividi tramite


Funzione WdfUsbTargetDeviceAllocAndQueryString (wdfusb.h)

[Si applica a KMDF e UMDF]

Il metodo WdfUsbTargetDeviceAllocAndQueryString alloca un buffer, quindi recupera la stringa Unicode associata a un dispositivo USB specificato e un valore di indice del descrittore.

Sintassi

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
);

Parametri

[in] UsbDevice

Handle per un oggetto dispositivo USB ottenuto da una chiamata precedente a WdfUsbTargetDeviceCreateWithParameters.

[in, optional] StringMemoryAttributes

Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che contiene gli attributi forniti dal chiamante per il nuovo oggetto memoria. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.

[out] StringMemory

Puntatore a una posizione che riceve un handle per l'oggetto memory contenente la stringa Unicode. La stringa è con terminazione NULL solo se il dispositivo fornisce una stringa con terminazione NULL.

[out, optional] NumCharacters

Puntatore a una posizione che riceve il numero di caratteri contenuti nel descrittore di stringa. Se la stringa Unicode è con terminazione NULL, questo numero include il carattere NULL. Questo parametro è facoltativo e può essere NULL.

[in] StringIndex

Valore di indice che identifica la stringa Unicode. Questo valore di indice viene ottenuto da una struttura di USB_DEVICE_DESCRIPTOR, USB_CONFIGURATION_DESCRIPTOR o USB_INTERFACE_DESCRIPTOR .

[in, optional] LangID

Identificatore di lingua. La stringa Unicode verrà recuperata per la lingua specificata da questo identificatore. Per informazioni su come ottenere gli identificatori di lingua supportati di un dispositivo, vedere la specifica USB.

Valore restituito

WdfUsbTargetDeviceAllocAndQueryString restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo può restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
È stato rilevato un parametro non valido.
STATUS_INSUFFICIENT_RESOURCES
Impossibile allocare un buffer di memoria.
STATUS_DEVICE_DATA_ERROR
Il dispositivo USB ha restituito un descrittore non valido.
STATUS_BUFFER_OVERFLOW
Il buffer fornito era troppo piccolo.
 

Questo metodo potrebbe anche restituire altri valori NTSTATUS.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Commenti

Il metodo WdfUsbTargetDeviceAllocAndQueryString , che il driver deve chiamare una sola volta per ottenere un descrittore di stringa, è un'alternativa al metodo WdfUsbTargetDeviceQueryString , che deve essere chiamato due volte per ottenere una stringa.

Il metodo individua il descrittore di stringa USB specificato, copia la stringa Unicode dal descrittore in un oggetto memory e restituisce un handle all'oggetto memory.

Dopo aver chiamato WdfUsbTargetDeviceAllocAndQueryString, il driver può passare l'handle StringMemory a WdfMemoryGetBuffer per accedere al contenuto dell'oggetto memoria.

Per altre informazioni sui descrittori di stringhe USB, vedi la specifica USB.

Per altre informazioni sul metodo WdfUsbTargetDeviceAllocAndQueryString e sulle destinazioni di I/O USB, vedere Destinazioni di I/O USB.

Esempio

L'esempio di codice seguente chiama WdfUsbTargetDeviceAllocAndQueryString per ottenere la stringa del nome di un produttore, in inglese (0x0409) usa, da un descrittore di dispositivo USB. Il driver ha archiviato in precedenza il descrittore nello spazio di contesto definito dal 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
                                        );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfusb.h (include Wdfusb.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf)

Vedi anche

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

WDF_OBJECT_ATTRIBUTES

WdfUsbTargetDeviceCreateWithParameters

WdfUsbTargetDeviceQueryString