ContentsIndexPreviousNext

REG_ENUM_KEY Routine

Enumerates subkeys of a specified open registry key. REG_ENUM_KEY retrieves the name of one subkey each time it is called.

Usage

Call "REG_ENUM_KEY"
   USING OPEN-KEY-HANDLE, NDX, SUBKEY-NAME,
         NAME-SIZE,
   GIVING STATUS-CODE

Parameters

OPEN-KEY-HANDLE Usage unsigned-long

Handle of a currently open key or one of the following predefined handles of keys that are always open (defined in acugui.def):

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_USERS

The keys enumerated by REG_ENUM_KEY are subkeys of the key identified by OPEN-KEY-HANDLE.

NDX Numeric data item

Specifies the index of the subkey to retrieve. NDX should be set to '1' for the first call to REG_ENUM_KEY and then incremented for subsequent calls. The subkeys are not returned in any particular order.

SUBKEY-NAME PIC X(n)

Receives the name of the subkey. REG_ENUM_KEY copies only the name of the subkey, not the full key hierarchy, to the SUBKEY-NAME buffer.

NAME-SIZE Numeric data item

Specifies the size, in characters, of the SUBKEY-NAME buffer.

STATUS-CODE Numeric data item.

Receives the return status of the call to Microsoft's "RegEnumKey" function. A return status of zero indicates success; non-zero indicates that an error occurred.

Comments

To enumerate subkeys, your application should initialize the NDX parameter to '1' and call REG_ENUM_KEY repeatedly, incrementing NDX each time, until there are no more subkeys. You can tell that there are no more subkeys when the function returns a non-zero STATUS-CODE ('259' for 32-bit Windows).

While an application is using REG_ENUM_KEY, it should not make calls to any registry routines that might change the key being queried.

If the subkey name exceeds the size of the SUBKEY-NAME buffer (as specified by the NAME-SIZE parameter), the result depends on the operating system. Under 32-bit Windows, a STATUS-CODE of '234' is returned.