Funzione WdfDeviceAllocAndQueryProperty (wdfdevice.h)

[Si applica a KMDF e UMDF]

Il metodo WdfDeviceAllocAndQueryProperty alloca un buffer e recupera una proprietà del dispositivo specificata.

Sintassi

NTSTATUS WdfDeviceAllocAndQueryProperty(
  [in]           WDFDEVICE                Device,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

[in] DeviceProperty

Enumeratore tipizzato DEVICE_REGISTRY_PROPERTY che identifica la proprietà del dispositivo da recuperare.

[in] PoolType

Enumeratore tipizzato POOL_TYPE che specifica il tipo di memoria da allocare.

[in, optional] PropertyMemoryAttributes

Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che descrive gli attributi oggetto per l'oggetto memoria allocato dalla funzione. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.

[out] PropertyMemory

Puntatore a una posizione tipizzata WDFMEMORY che riceve un handle per un oggetto memoria del framework.

Valore restituito

Se l'operazione ha esito positivo, WdfDeviceAllocAndQueryProperty restituisce STATUS_SUCCESS. I valori restituiti aggiuntivi includono:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER o STATUS_INVALID_PARAMETER_2
Il valore DeviceProperty specificato non è valido.
STATUS_INVALID_DEVICE_REQUEST
I driver del dispositivo non hanno ancora segnalato le proprietà del dispositivo.
 

Il metodo potrebbe restituire altri valori NTSTATUS.

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

Commenti

Il metodo WdfDeviceAllocAndQueryProperty determina la quantità di memoria necessaria per contenere la proprietà del dispositivo richiesta. Alloca memoria sufficiente per contenere i dati e restituisce un handle a un oggetto memoria del framework che descrive la memoria allocata. Per accedere ai dati, il driver può chiamare WdfMemoryGetBuffer.

In alternativa, è possibile usare WdfDeviceAllocAndQueryPropertyEx per accedere alle proprietà del dispositivo esposte tramite il modello di proprietà Unified.

Esempio

Nell'esempio di codice seguente viene inizializzata una struttura WDF_OBJECT_ATTRIBUTES con attributi per l'oggetto memoria del framework che verrà creato dal framework per la proprietà richiesta. L'esempio chiama quindi WdfDeviceAllocAndQueryProperty per ottenere la proprietà DevicePropertyPhysicalDeviceObjectName . Dopo la restituzione di WdfDeviceAllocAndQueryProperty , il driver può chiamare WdfMemoryGetBuffer per ottenere un puntatore al buffer contenente la stringa del nome.

WDF_OBJECT_ATTRIBUTES  attributes;
NTSTATUS  status;
WDFDEVICE  device;
WDFMEMORY  memory;

WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = device;

status = WdfDeviceAllocAndQueryProperty(device,
                                        DevicePropertyPhysicalDeviceObjectName,
                                        NonPagedPool,
                                        &attributes,
                                        &memory
                                        );
if (!NT_SUCCESS(status)) {
    return STATUS_UNSUCCESSFUL;
}

Requisiti

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

Vedi anche

WdfDeviceQueryProperty