IRegistryKey::QueryKey method

The QueryKey method retrieves information about a registry key, including the key name, key class, and the number of subkeys and their sizes.

Syntax


NTSTATUS QueryKey(
  [in]   KEY_INFORMATION_CLASS KeyInformationClass,
  [out]  PVOID KeyInformation,
  [in]   ULONG Length,
  [out]  PULONG ResultLength
);

Parameters

KeyInformationClass [in]

Specifies the type of information to be returned in the buffer. Set this parameter to one of the following KEY_INFORMATION_CLASS enumeration values:

  • KeyBasicInformation

  • KeyFullInformation

  • KeyNodeInformation

KeyInformation [out]

Pointer to a caller-allocated buffer into which the method writes the requested data. The buffer holds a structure of type KEY_BASIC_INFORMATION, KEY_FULL_INFORMATION, or KEY_NODE_INFORMATION, depending on the value of KeyInformationClass. The structure is followed by a string of Unicode characters whose size depends on the type of information being requested about the key and the length of the key's name or class string.

Length [in]

Size in bytes of the KeyInformation buffer, which the caller must set according to the given KeyInformationClass. To receive all the requested data, the buffer must be at least as large as the size of the requested data.

ResultLength [out]

Output pointer for the length of the resulting data. This parameter points to a caller-allocated ULONG variable into which the method writes a count specifying the number of bytes actually written into the KeyInformation buffer. If the specified buffer length is too small to contain the information, however, the method instead outputs the required buffer size and returns STATUS_BUFFER_OVERFLOW or STATUS_BUFFER_TOO_SMALL. For more information, see the following Remarks section.

Return value

QueryKey returns STATUS_SUCCESS if the call was successful in copying the requested information to the KeyInformation buffer. If the specified buffer size is too small to receive all of the requested information, the method returns STATUS_BUFFER_OVERFLOW. If the specified buffer size is too small to receive any of the requested information, the method returns STATUS_BUFFER_TOO_SMALL. Otherwise, the method returns an appropriate error status code. The following table shows some of the possible error codes.

Return codeDescription
STATUS_INVALID_PARAMETER

Indicates that one of the parameters passed to the method is not valid.

 

Remarks

If the KeyInformation buffer is too small to hold the requested information, the method writes the required size to *ResultLength and returns a status code of either STATUS_BUFFER_OVERFLOW or STATUS_BUFFER_TOO_SMALL. The method returns STATUS_BUFFER_OVERFLOW if it succeeded in writing only part of the requested information to the buffer. The method returns STATUS_BUFFER_TOO_SMALL if it was unable to write any information to the buffer. The value written to *ResultLength indicates the minimum buffer size required to hold all the requested information.

Requirements

Header

Portcls.h (include Portcls.h)

IRQL

PASSIVE_LEVEL

See also

KEY_BASIC_INFORMATION
KEY_FULL_INFORMATION
KEY_NODE_INFORMATION
ZwQueryKey

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft