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 für ein Framework-Geräteobjekt.
[in] DeviceProperty
Ein DEVICE_REGISTRY_PROPERTY typisierter Enumerator, der die abzurufende Geräteeigenschaft identifiziert.
[in] PoolType
Ein POOL_TYPE typisiertes Enumerator, der den Typ des zu zuweisenden 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 ordnet. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[out] PropertyMemory
Ein Zeiger auf einen WDFMEMORY-typisierten Speicherort, der ein Handle für ein Frameworkspeicherobjekt 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 Gerätetreiber haben die Eigenschaften des Geräts noch nicht gemeldet. |
Die -Methode gibt möglicherweise andere NTSTATUS-Werte zurück.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Die WdfDeviceAllocAndQueryProperty-Methode bestimmt die Menge an Arbeitsspeicher, die erforderlich ist, um die angeforderte Geräteeigenschaft zu speichern. Sie weist genügend Arbeitsspeicher zu, um die Daten zu speichern, und gibt ein Handle an ein Frameworkspeicherobjekt zurück, das den zugeordneten Arbeitsspeicher 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 Einheitliche Eigenschaftenmodell verfügbar gemacht werden.
Beispiele
Im folgenden Codebeispiel wird eine WDF_OBJECT_ATTRIBUTES-Struktur mit Attributen für das Frameworkspeicherobjekt initialisiert, das das Framework für die angeforderte Eigenschaft erstellt. 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 zu erhalten, 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 | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfdevice.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |