ZwQueryValueKey
The ZwQueryValueKey routine returns the value entries for an open registry key.
NTSTATUS
ZwQueryValueKey(
IN HANDLE KeyHandle,
IN PUNICODE_STRING ValueName,
IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
OUT PVOID KeyValueInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
Parameters
- KeyHandle
- Handle to the key for which value entries are to be read. This handle is created by a successful call to ZwCreateKey or ZwOpenKey.
- ValueName
- Pointer to the name of the value entry for which the data is requested.
- KeyValueInformationClass
- Specifies a KEY_VALUE_INFORMATION_CLASS value that determines the type of information returned in the KeyValueInformation buffer.
- KeyValueInformation
- Pointer to a caller-allocated buffer to receive the requested data.
- Length
- Specifies the size, in bytes, of the KeyValueInformation buffer.
- ResultLength
- Pointer to a variable that receives the size, in bytes, of the key information. If the ZwQueryValueKey routine returns STATUS_SUCCESS, callers can use the value of this variable to determine the amount of data returned. If the routine returns STATUS_BUFFER_OVERFLOW or STATUS_BUFFER_TOO_SMALL, callers can use the value of this variable to determine the size of buffer required to hold the key information.
Headers
Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.
Return Value
ZwQueryValueKey returns STATUS_SUCCESS on success, or the appropriate error code on failure. Possible error code values include:
- STATUS_BUFFER_OVERFLOW
- The buffer supplied is too small, and only partial data has been written to the buffer. *ResultLength is set to the minimum size required to hold the requested information.
- STATUS_BUFFER_TOO_SMALL
- The buffer supplied is too small, and no data has been written to the buffer. *ResultLength is set to the minimum size required to hold the requested information.
- STATUS_INVALID_PARAMETER
- The KeyInformationClass parameter is not a valid KEY_VALUE_INFORMATION_CLASS value.
Warning If KeyValueBasicInformation is specified, Windows 98/Me returns STATUS_SUCCESS even if the specified registry key or value name does not exist.
Comments
The KeyHandle handle passed to ZwQueryValueKey must have been opened with the KEY_QUERY_VALUE DesiredAccess flag set for this call to succeed. For a description of possible values for DesiredAccess, see ZwCreateKey.
Callers of ZwQueryValueKey must be running at IRQL = PASSIVE_LEVEL.
See Also
KEY_VALUE_BASIC_INFORMATION, KEY_VALUE_FULL_INFORMATION, KEY_VALUE_INFORMATION_CLASS, KEY_VALUE_PARTIAL_INFORMATION, ZwCreateKey, ZwEnumerateValueKey, ZwOpenKey