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 |
---|---|
|
Il valore DeviceProperty specificato non è valido. |
|
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) |