CmRegisterCallbackEx function (wdm.h)

The CmRegisterCallbackEx routine registers a RegistryCallback routine.

Syntax

NTSTATUS CmRegisterCallbackEx(
  [in]           PEX_CALLBACK_FUNCTION Function,
  [in]           PCUNICODE_STRING      Altitude,
  [in]           PVOID                 Driver,
  [in, optional] PVOID                 Context,
  [out]          PLARGE_INTEGER        Cookie,
                 PVOID                 Reserved
);

Parameters

[in] Function

A pointer to the RegistryCallback routine to register.

[in] Altitude

A pointer to a UNICODE_STRING structure. This structure must contain a string that represents the altitude of the calling minifilter driver. For more information, see Remarks.

[in] Driver

A pointer to the DRIVER_OBJECT structure that represents the driver.

[in, optional] Context

A driver-defined value that the configuration manager will pass as the CallbackContext parameter to the RegistryCallback routine.

[out] Cookie

A pointer to a LARGE_INTEGER variable that receives the value that identifies the callback routine. When you unregister the callback routine, pass this value as the Cookie parameter to CmUnRegisterCallback.

Reserved

This parameter is reserved for future use.

Return value

CmRegisterCallbackEx returns STATUS_SUCCESS if the operation succeeds. Otherwise, this routine might return one of the following NTSTATUS values:

Return code Description
STATUS_FLT_INSTANCE_ALTITUDE_COLLISION
The calling driver or another driver has already registered a RegistryCallback routine for the specified altitude.
STATUS_INSUFFICIENT_RESOURCES
An attempt to allocate memory failed.

Remarks

The CmRegisterCallbackEx routine is available starting with Windows Vista.

A driver can call CmRegisterCallback or CmRegisterCallbackEx to register a RegistryCallback routine, which is called every time a thread performs an operation on the registry.

The Altitude parameter defines the position of the minifilter driver relative to other minifilters in the I/O stack when the minifilter is loaded. Allocation of altitudes to minifilters is managed by Microsoft. For more information about altitudes, see Load Order Groups and Altitudes for Minifilter Drivers.

Call CmUnRegisterCallback to unregister a callback routine that CmRegisterCallbackEx registered.

For more information about CmRegisterCallbackEx and filtering registry operations, see Filtering Registry Calls.

Requirements

Requirement Value
Minimum supported client Available starting with Windows Vista.
Target Platform Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI compliance rules HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm)

See also

CmRegisterCallback

CmUnRegisterCallback

DRIVER_OBJECT

RegistryCallback

UNICODE_STRING