ZwEnumerateKey-Funktion (wdm.h)

Die ZwEnumerateKey-Routine gibt Informationen zu einem Unterschlüssel eines geöffneten Registrierungsschlüssels zurück.

Syntax

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

Parameter

[in] KeyHandle

Handle mit dem Registrierungsschlüssel, der die aufzuzählenden Unterschlüssel enthält. Das Handle wird durch einen erfolgreichen Aufruf von ZwCreateKey oder ZwOpenKey erstellt.

[in] Index

Der Index des Unterschlüssels, für den Sie Informationen benötigen. Wenn der Schlüssel über n Unterschlüssel verfügt, werden die Unterschlüssel von 0 bis n-1 nummeriert.

[in] KeyInformationClass

Gibt einen KEY_INFORMATION_CLASS Enumerationswert an, der den Typ der vom KeyInformation-Puffer empfangenden Informationen bestimmt. Legen Sie KeyInformationClass auf einen der folgenden Werte fest:

  • KeyBasicInformation

  • KeyFullInformation

  • KeyNodeInformation

Wenn ein Wert angegeben wird, der nicht in dieser Liste enthalten ist, gibt die Routine den Fehlercode STATUS_INVALID_PARAMETER zurück.

[out, optional] KeyInformation

Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die angeforderten Informationen empfängt. Der KeyInformationClass-Parameter bestimmt den Typ der bereitgestellten Informationen.

[in] Length

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

[out] ResultLength

Zeiger auf eine Variable, die die Größe der Registrierungsschlüsselinformationen in Bytes empfängt. Wenn ZwEnumerateKey STATUS_SUCCESS zurückgibt, können Sie den Wert dieser Variablen verwenden, um die zurückgegebene Datenmenge zu bestimmen. Wenn die Routine STATUS_BUFFER_OVERFLOW oder STATUS_BUFFER_TOO_SMALL zurückgibt, können Sie den Wert dieser Variablen verwenden, um die Größe des Puffers zu bestimmen, der für die Schlüsselinformationen erforderlich ist.

Rückgabewert

ZwEnumerateKey gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden NTSTATUS-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.
STATUS_NO_MORE_ENTRIES Der Indexwert liegt außerhalb des Bereichs für den registrierungsschlüssel, der von KeyHandle angegeben wird. Wenn ein Schlüssel beispielsweise über n Unterschlüssel verfügt, gibt die Routine für jeden Wert, der größer als n-1 ist, STATUS_NO_MORE_ENTRIES zurück.

Hinweise

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

Der Index-Parameter ist einfach eine Möglichkeit, zwischen Unterschlüsseln des Schlüssels auszuwählen, auf den durch keyHandle verwiesen wird. Zwei Aufrufe von ZwEnumerateKey mit demselben Index geben nicht garantiert dasselbe Ergebnis zurück.

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 "NtEnumerateKey" anstelle von "ZwEnumerateKey" 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_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NODE_INFORMATION

RtlCheckRegistryKey

RtlCreateRegistryKey

RtlDeleteRegistryValue

RtlQueryRegistryValues

RtlWriteRegistryValue

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey