Freigeben über


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
STATUS_INVALID_PARAMETER oder STATUS_INVALID_PARAMETER_2
Der angegebene DeviceProperty Wert ist ungültig.
STATUS_INVALID_DEVICE_REQUEST
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)

Siehe auch

WdfDeviceQueryProperty-