CBFS Filter 2020 Python Edition

Questions / Feedback?

on_before_query_key Event

Fires before a registry key's information is retrieved.

Syntax

class CBRegistryBeforeQueryKeyEventParams(object):
  @property
  def key_context() -> int: ...
  @property
  def requested_fields() -> int: ...
  @property
  def last_write_time() -> datetime.datetime: ...
  @last_write_time.setter
  def last_write_time(value) -> None: ...
  @property
  def name() -> str: ...
  @name.setter
  def name(value) -> None: ...
  @property
  def class_name() -> str: ...
  @class_name.setter
  def class_name(value) -> None: ...
  @property
  def sub_keys() -> int: ...
  @sub_keys.setter
  def sub_keys(value) -> None: ...
  @property
  def max_name_length() -> int: ...
  @max_name_length.setter
  def max_name_length(value) -> None: ...
  @property
  def max_class_name_length() -> int: ...
  @max_class_name_length.setter
  def max_class_name_length(value) -> None: ...
  @property
  def values() -> int: ...
  @values.setter
  def values(value) -> None: ...
  @property
  def max_value_name_length() -> int: ...
  @max_value_name_length.setter
  def max_value_name_length(value) -> None: ...
  @property
  def max_value_data_size() -> int: ...
  @max_value_data_size.setter
  def max_value_data_size(value) -> None: ...
  @property
  def virtualization_candidate() -> bool: ...
  @virtualization_candidate.setter
  def virtualization_candidate(value) -> None: ...
  @property
  def virtualization_enabled() -> bool: ...
  @virtualization_enabled.setter
  def virtualization_enabled(value) -> None: ...
  @property
  def virtual_target() -> bool: ...
  @virtual_target.setter
  def virtual_target(value) -> None: ...
  @property
  def virtual_store() -> bool: ...
  @virtual_store.setter
  def virtual_store(value) -> None: ...
  @property
  def virtual_source() -> bool: ...
  @virtual_source.setter
  def virtual_source(value) -> None: ...
  @property
  def processed() -> bool: ...
  @processed.setter
  def processed(value) -> None: ...
  @property
  def fire_after_event() -> bool: ...
  @fire_after_event.setter
  def fire_after_event(value) -> None: ...
  @property
  def stop_filtering() -> bool: ...
  @stop_filtering.setter
  def stop_filtering(value) -> None: ...
  @property
  def result_code() -> int: ...
  @result_code.setter
  def result_code(value) -> None: ...

# In class CBRegistry:
@property
def on_before_query_key() -> Callable[[CBRegistryBeforeQueryKeyEventParams], None]: ...
@on_before_query_key.setter
def on_before_query_key(event_hook: Callable[[CBRegistryBeforeQueryKeyEventParams], None]) -> None: ...

Remarks

This event fires before a registry key's information is retrieved.

Applications only need to handle this event if they've added a standard filter rule that includes the REG_CE_BEFORE_QUERY_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 on_before_create_key/on_before_open_key event so that it can be retrieved when this event fires.

The RequestedFields parameter indicates which pieces of information about the key were requested. The value of this parameter is a combination of one or more of the following:

REG_KEYFIELD_LASTWRITETIME1A registry key's last write time.

REG_KEYFIELD_NAME2A registry key's name.

REG_KEYFIELD_MAXNAMELENGTH4A registry key's longest subkey name.

REG_KEYFIELD_CLASSNAME8A registry key's class name.

REG_KEYFIELD_MAXCLASSNAMELENGTH16A registry key's longest subkey class name.

REG_KEYFIELD_SUBKEYS32The number of subkeys a registry key has.

REG_KEYFIELD_VALUES64The number of values a registry key has.

REG_KEYFIELD_MAXVALUENAMELENGTH128A registry key's longest value name.

REG_KEYFIELD_MAXVALUEDATASIZE256A registry key's largest value data size.

REG_KEYFIELD_VIRTUALIZATIONINFO512A 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 underlying request has been handled successfully. Applications should set this parameter to True if they've handled the request themselves (this will prevent the corresponding After* event from being called). Note that this parameter's value is ignored if an error is returned via ResultCode.

The FireAfterEvent parameter specifies whether the corresponding After* event should be fired; it is True by default. Note that, regardless of how this parameter is set, the corresponding After* event will not fire if Processed is True, or if an error code 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.

Copyright (c) 2022 Callback Technologies, Inc. - All rights reserved.
CBFS Filter 2020 Python Edition - Version 20.0 [Build 8317]