ZwEnumerateValueKey-Funktion (wdm.h)
Die ZwEnumerateValueKey-Routine ruft Informationen zu den Werteinträgen eines geöffneten Schlüssels ab.
Syntax
NTSYSAPI NTSTATUS ZwEnumerateValueKey(
[in] HANDLE KeyHandle,
[in] ULONG Index,
[in] KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
[out, optional] PVOID KeyValueInformation,
[in] ULONG Length,
[out] PULONG ResultLength
);
Parameter
[in] KeyHandle
Behandeln Sie den Registrierungsschlüssel, für den Sie Werteinträge aufzählen möchten. Ein erfolgreicher Aufruf von ZwCreateKey oder ZwOpenKey erstellt dieses Handle.
[in] Index
Der nullbasierte Index des Unterschlüssels, für den Sie Wertinformationen benötigen.
[in] KeyValueInformationClass
Gibt einen KEY_VALUE_INFORMATION_CLASS Wert an, der den Typ der im KeyValueInformation-Puffer zurückgegebenen Informationen bestimmt.
[out, optional] KeyValueInformation
Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die angeforderten Informationen empfängt.
[in] Length
Gibt die Größe des KeyValueInformation-Puffers in Bytes an.
[out] ResultLength
Zeiger auf eine Variable, die die Größe der Wertinformationen in Byte empfängt. Wenn diese Routine STATUS_SUCCESS zurückgibt, gibt die Variable die zurückgegebene Datenmenge an. Wenn diese Routine STATUS_BUFFER_OVERFLOW oder STATUS_BUFFER_TOO_SMALL zurückgibt, gibt die Variable die Puffergröße an, die erforderlich ist, um die Wertinformationen zu enthalten.
Rückgabewert
ZwEnumerateValueKey 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_VALUE_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 an ZwEnumerateValueKey übergebeneKeyHandle 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.
Der Index ist einfach eine Möglichkeit, zwischen Unterschlüsseln mit Werteinträgen auszuwählen. Zwei Aufrufe von ZwEnumerateValueKey mit demselben Index geben nicht garantiert dieselben Ergebnisse 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 "NtEnumerateValueKey" anstelle von "ZwEnumerateValueKey" 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) |