WdfDeviceAllocAndQueryProperty-Funktion (wdfdevice.h)
[Gilt für KMDF und UMDF]
Die WdfDeviceAllocAndQueryProperty--Methode weist einen Puffer zu und ruft eine angegebene Geräteeigenschaft ab.
Syntax
NTSTATUS WdfDeviceAllocAndQueryProperty(
[in] WDFDEVICE Device,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
[out] WDFMEMORY *PropertyMemory
);
Parameter
[in] Device
Ein Handle zu einem Framework-Geräteobjekt.
[in] DeviceProperty
Ein DEVICE_REGISTRY_PROPERTY-typed-Enumerator, der die abzurufende Geräteeigenschaft identifiziert.
[in] PoolType
Ein POOL_TYPE-typed-Enumerator, der den Zuteilungstyp des zuzuordnenden Arbeitsspeichers angibt.
[in, optional] PropertyMemoryAttributes
Ein Zeiger auf eine vom Aufrufer zugewiesene WDF_OBJECT_ATTRIBUTES Struktur, die Objektattribute für das Speicherobjekt beschreibt, das die Funktion zuweist. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[out] PropertyMemory
Ein Zeiger auf einen WDFMEMORY-typierten Speicherort, der ein Handle für ein Framework-Speicherobjekt empfängt.
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt WdfDeviceAllocAndQueryProperty STATUS_SUCCESS zurück. Weitere Rückgabewerte sind:
Rückgabecode | Beschreibung |
---|---|
|
Der angegebene DeviceProperty Wert ist ungültig. |
|
Die Treiber des Geräts haben die Eigenschaften des Geräts noch nicht gemeldet. |
Die Methode gibt möglicherweise andere NTSTATUS-Wertezurück.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Die WdfDeviceAllocAndQueryProperty--Methode bestimmt die Speichermenge, die zum Speichern der angeforderten Geräteeigenschaft erforderlich ist. Es weist genügend Arbeitsspeicher zum Speichern der Daten zu und gibt ein Handle zu einem Framework-Speicherobjekt zurück, das den zugewiesenen Speicher beschreibt. Um auf die Daten zuzugreifen, kann Ihr Treiber WdfMemoryGetBuffer-aufrufen.
Alternativ können Sie WdfDeviceAllocAndQueryPropertyEx- verwenden, um auf Geräteeigenschaften zuzugreifen, die über das Unified Property Model verfügbar gemacht werden.
Beispiele
Im folgenden Codebeispiel wird eine WDF_OBJECT_ATTRIBUTES Struktur mit Attributen für das Framework-Speicherobjekt initialisiert, das vom Framework für die angeforderte Eigenschaft erstellt wird. Anschließend ruft das Beispiel WdfDeviceAllocAndQueryProperty- auf, um die DevicePropertyPhysicalDeviceObjectName-Eigenschaft abzurufen. Nachdem WdfDeviceAllocAndQueryProperty- zurückgegeben wurde, kann der Treiber WdfMemoryGetBuffer- aufrufen, um einen Zeiger auf den Puffer abzurufen, der die Namenszeichenfolge enthält.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Header- | wdfdevice.h (einschließen Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL- | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |