Freigeben über


WdfRegistryQueryMemory-Funktion (wdfregistry.h)

[Gilt für KMDF und UMDF]

Die WdfRegistryQueryMemory-Methode ruft die Daten ab, die derzeit einem angegebenen Registrierungswert zugewiesen sind, speichert die Daten in einem vom Framework zugewiesenen Puffer und erstellt ein Frameworkspeicherobjekt zur Darstellung des Puffers.

Syntax

NTSTATUS WdfRegistryQueryMemory(
  [in]            WDFKEY                 Key,
  [in]            PCUNICODE_STRING       ValueName,
  [in]            POOL_TYPE              PoolType,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [out]           WDFMEMORY              *Memory,
  [out, optional] PULONG                 ValueType
);

Parameter

[in] Key

Ein Handle für ein Registrierungsschlüsselobjekt, das einen geöffneten Registrierungsschlüssel darstellt.

[in] ValueName

Ein Zeiger auf eine UNICODE_STRING-Struktur , die einen Wertnamen enthält.

[in] PoolType

Ein POOL_TYPE typisierter Wert, der den Typ des Arbeitsspeichers angibt, der für den Datenpuffer zugewiesen werden soll.

[in, optional] MemoryAttributes

Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES-Struktur , die Objektattribute für das neue Speicherobjekt enthält. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.

[out] Memory

Ein Zeiger auf eine Position, die ein Handle auf das neue Speicherobjekt empfängt.

[out, optional] ValueType

Ein Zeiger auf einen Speicherort, der den Datentyp empfängt. Eine Liste der Datentypwerte finden Sie im Typelement von KEY_VALUE_BASIC_INFORMATION. Dieser Zeiger ist optional und kann NULL sein.

Rückgabewert

WdfRegistryQueryMemory gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory wurde bei IRQL = PASSIVE_LEVEL nicht aufgerufen.

STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde angegeben.
STATUS_INSUFFICIENT_RESOURCES
Ein Speicherobjekt konnte nicht zugeordnet werden.
STATUS_ACCESS_DENIED
Der Treiber hat den Registrierungsschlüssel nicht mit KEY_QUERY_VALUE, KEY_READ oder KEY_ALL_ACCESS Zugriff geöffnet.
STATUS_OBJECT_NAME_NOT_FOUND
Der Registrierungswert war nicht verfügbar.
STATUS_RESOURCE_DATA_NOT_FOUND
Der Registrierungswert ist unter dem angegebenen Schlüssel vorhanden, ist aber leer.
 

Eine Liste mit anderen Rückgabewerten, die von der WdfRegistryQueryMemory-Methode möglicherweise zurückgegeben werden, finden Sie unter Fehler beim Erstellen von Frameworkobjekten.

Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Wenn ein Treiber WdfRegistryQueryMemory aufruft, weist das Framework einen Puffer zu, der groß genug ist, um die Daten des angegebenen Registrierungswerts aufzunehmen. Nachdem WdfRegistryQueryMemory zurückgegeben wurde, kann der Treiber WdfMemoryGetBuffer aufrufen, um einen Zeiger auf den Puffer und die Größe des Puffers abzurufen.

Weitere Informationen zu Registrierungsschlüsselobjekten finden Sie unter Verwenden der Registrierung in Framework-Based-Treibern.

Beispiele

Im folgenden Codebeispiel werden die Daten abgerufen, die dem Wert MyValueName zugewiesen sind, und dann die Adresse und Größe der Daten abgerufen.

WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");

status = WdfRegistryQueryMemory(
                                Key,
                                &valueName1,
                                PagedPool,
                                NULL,
                                &memory,
                                &type
                                );
pBuf = (PUCHAR)WdfMemoryGetBuffer(
                                   memory,
                                   &size
                                   );

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfregistry.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)

Weitere Informationen

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue