Freigeben über


ZwQueryKey-Funktion (wdm.h)

Die ZwQueryKey-Routine stellt Informationen zur Klasse eines Registrierungsschlüssels sowie zur Anzahl und Größe seiner Unterschlüssel bereit.

Syntax

NTSYSAPI NTSTATUS ZwQueryKey(
  [in]            HANDLE                KeyHandle,
  [in]            KEY_INFORMATION_CLASS KeyInformationClass,
  [out, optional] PVOID                 KeyInformation,
  [in]            ULONG                 Length,
  [out]           PULONG                ResultLength
);

Parameter

[in] KeyHandle

Handle mit dem Registrierungsschlüssel, zu dem Informationen abgerufen werden sollen. Dieses Handle wird durch einen erfolgreichen Aufruf von ZwCreateKey oder ZwOpenKey erstellt.

[in] KeyInformationClass

Gibt einen KEY_INFORMATION_CLASS Wert an, der den Typ der im KeyInformation-Puffer zurückgegebenen Informationen bestimmt.

[out, optional] KeyInformation

Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die angeforderten Informationen empfängt.

[in] Length

Gibt die Größe des KeyInformation-Puffers in Bytes an.

[out] ResultLength

Zeiger auf eine Variable, die die Größe der angeforderten Schlüsselinformationen in Bytes empfängt. Wenn ZwQueryKey STATUS_SUCCESS zurückgibt, enthält die Variable die zurückgegebene Datenmenge. Wenn ZwQueryKey STATUS_BUFFER_OVERFLOW oder STATUS_BUFFER_TOO_SMALL zurückgibt, können Sie den Wert der Variablen verwenden, um die erforderliche Puffergröße zu bestimmen.

Rückgabewert

ZwQueryKey gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden Fehlercode bei Einem Fehler zurück. Mögliche Fehlercodewerte sind:

Rückgabecode Beschreibung
STATUS_BUFFER_OVERFLOW Der bereitgestellte Puffer ist zu klein, und es wurden nur teilweise Daten in den Puffer geschrieben. *ResultLength ist auf die Mindestgröße festgelegt, die erforderlich ist, um die angeforderten Informationen zu enthalten.
STATUS_BUFFER_TOO_SMALL Der bereitgestellte Puffer ist zu klein, und es wurden keine Daten in den Puffer geschrieben. *ResultLength ist auf die Mindestgröße festgelegt, die erforderlich ist, um die angeforderten Informationen zu enthalten.
STATUS_INVALID_PARAMETER Der KeyInformationClass-Parameter ist kein gültiger KEY_INFORMATION_CLASS Wert.

Hinweise

Das an ZwQueryKey übergebene KeyHandle muss mit KEY_QUERY_VALUE Zugriff geöffnet worden sein. Dies wird erreicht, indem KEY_QUERY_VALUE, KEY_READ oder KEY_ALL_ACCESS als DesiredAccess-Parameter an ZwCreateKey oder ZwOpenKey übergeben werden.

Wenn KeyInformationClass auf KeyNameInformation oder KeyHandleTagsInformation festgelegt ist, gilt die KEY_QUERY_VALUE Anforderung nicht.

ZwQueryKey kann verwendet werden, um Informationen abzurufen, die Sie zum Zuordnen von Puffern zum Speichern von Registrierungsdaten verwenden können, z. B. die maximale Größe der Werteinträge oder Unterschlüsselnamen eines Schlüssels oder die Anzahl der Unterschlüssel. Sie können beispielsweise ZwQueryKey aufrufen, die zurückgegebenen Informationen verwenden, um einen Puffer für einen Unterschlüssel zuzuweisen, ZwEnumerateKey aufrufen, um den Namen des Unterschlüssels abzurufen, und diesen Namen an eine RtlXxx-Registrierungsroutine übergeben.

Weitere Informationen zum Arbeiten mit Registrierungsschlüsseln finden Sie unter Verwenden der Registrierung in einem Treiber.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtQueryKey" anstelle von "ZwQueryKey" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Weitere Informationen

KEY_BASIC_INFORMATION

KEY_CACHED_INFORMATION

KEY_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NAME_INFORMATION

KEY_NODE_INFORMATION

KEY_VIRTUALIZATION_INFORMATION

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwClose

ZwEnumerateKey

ZwOpenKey