AfterEnumerateKey Event
Fires after a subkey's information is retrieved during key enumeration.
Syntax
public class DefaultCbregistryEventListener implements CbregistryEventListener { ... public void afterEnumerateKey(CbregistryAfterEnumerateKeyEvent e) {} ... } public class CbregistryAfterEnumerateKeyEvent { public long keyContext; public int status; public int index; public int validFields; public java.util.Date lastWriteTime; public String name; public String className; public int subKeys; public int maxNameLength; public int maxClassNameLength; public int values; public int maxValueNameLength; public int maxValueDataSize; public boolean virtualizationCandidate; public boolean virtualizationEnabled; public boolean virtualTarget; public boolean virtualStore; public boolean virtualSource; public boolean processed; public boolean stopFiltering; public int resultCode; }
Remarks
This event fires after a subkey's information is retrieved during enumeration of a registry key's subkeys.
Applications only need to handle this event if they've added a standard filter rule that includes the REG_CE_AFTER_ENUM_KEY flag.
The KeyContext parameter is a placeholder for application-defined data associated with the registry key. Please refer to the Contexts topic for more information. Note that this event does not expose the registry key's name for performance reasons; applications that need it should store it in KeyContext during the BeforeCreateKey/BeforeOpenKey event so that it can be retrieved when this event fires.
The Status parameter contains a Win32 error code that indicates the outcome of the operation; 0 indicates success. This value is returned to the request originator if no other status is returned from this event. Applications may change this parameter's value if they want a different Win32 error code to be returned.
The Index parameter reflects the zero-based index of the key (within the registry key being enumerated).
The ValidFields parameter indicates which pieces of information about the key were retrieved. The value of this parameter is a combination of one or more of the following:
REG_KEYFIELD_LASTWRITETIME | 1 | A registry key's last write time. |
REG_KEYFIELD_NAME | 2 | A registry key's name. |
REG_KEYFIELD_MAXNAMELENGTH | 4 | A registry key's longest subkey name. |
REG_KEYFIELD_CLASSNAME | 8 | A registry key's class name. |
REG_KEYFIELD_MAXCLASSNAMELENGTH | 16 | A registry key's longest subkey class name. |
REG_KEYFIELD_SUBKEYS | 32 | The number of subkeys a registry key has. |
REG_KEYFIELD_VALUES | 64 | The number of values a registry key has. |
REG_KEYFIELD_MAXVALUENAMELENGTH | 128 | A registry key's longest value name. |
REG_KEYFIELD_MAXVALUEDATASIZE | 256 | A registry key's largest value data size. |
REG_KEYFIELD_VIRTUALIZATIONINFO | 512 | A registry key's virtualization information. |
The LastWriteTime parameter specifies when the key was last changed, specified in UTC.
The Name parameter specifies the key's name. The maximum length of a registry key name is 255 characters.
The ClassName parameter specifies the key's class name. The maximum length of a registry key class name is 255 characters.
The SubKeys parameter specifies the number of subkeys that the key has.
The MaxNameLength parameter specifies the length, in bytes, of the key's longest subkey name.
The MaxClassNameLength parameter specifies the length, in bytes, of the key's longest subkey class name.
The Values parameter specifies the number of values the key has.
The MaxValueNameLength parameter specifies the length, in bytes, of the key's longest value name.
The MaxValueDataSize parameter specifies the length, in bytes, of the subkey's largest value data size.
The VirtualizationCandidate parameter specifies whether the key is part of the virtualization namespace scope.
The VirtualizationEnabled parameter specifies whether virtualization is enabled on the key. This parameter can only be true if VirtualizationCandidate is true.
The VirtualTarget parameter specifies whether the key is a virtual key. This parameter can only be true if both VirtualizationCandidate and VirtualizationEnabled are both false; and its value is only valid on virtual store key handles.
The VirtualStore parameter specifies whether the key is part of the virtual store path.
The VirtualSource parameter specifies whether the key has ever been virtualized. This parameter can only be true if VirtualizationCandidate is true.
The Processed parameter indicates whether the response values have been modified. Applications must set this parameter to true if they alter any of the parameters related to the response values. Note that this parameter's value is ignored if an error is returned via ResultCode.
The StopFiltering parameter specifies whether the class's system driver should ignore all further operations for the registry key; it is false by default. Applications may set this parameter to true to prevent any further events from firing for the registry key.
The ResultCode parameter will always be 0 when the event is fired. If the event cannot be handled in a "successful" manner for some reason (e.g., a resource isn't available, security checks failed, etc.), set it to a non-zero value to report an appropriate error. Please refer to the Error Reporting and Handling topic for more information.
This event is fired synchronously; please refer to the Event Types topic for more information.