cmSetCallbackObjectContext 函数 (wdm.h)

CmSetCallbackObjectContext 例程将新的上下文信息与指定的注册表对象和回调例程相关联。

语法

NTSTATUS CmSetCallbackObjectContext(
  [in, out]       PVOID          Object,
  [in]            PLARGE_INTEGER Cookie,
  [in]            PVOID          NewContext,
  [out, optional] PVOID          *OldContext
);

参数

[in, out] Object

指向驱动程序要为其提供上下文信息的注册表项对象的指针。 驱动程序从以下结构之一的 ResultObject 成员获取此指针:

[in] Cookie

指向LARGE_INTEGER值的指针,该值标识要与之关联的回调例程。 注册回调例程时 ,CmRegisterCallbackEx 例程提供了此值。

[in] NewContext

指向驱动程序定义的上下文信息的指针。

[out, optional] OldContext

指向位置的指针,该位置接收指向驱动程序先前与指定对象和 Cookie 关联的上下文信息的指针。 此参数是可选的,可以为 NULL

返回值

CmSetCallbackObjectContext 返回STATUS_SUCCESS或其他适当的 NTSTATUS 类型值。

注解

CmSetCallbackObjectContext 例程从 Windows Vista 开始可用。

在创建或打开对象后,驱动程序的 RegistryCallback 例程可以为任何注册表项对象调用 CmSetCallbackObjectContext , (即,在创建操作的后通知期间,打开操作或任何后续通知,到句柄关闭) 的预通知。

如果驱动程序调用 CmSetCallbackObjectContext,驱动程序的 RegistryCallback 例程将收到 RegNtCallbackObjectContextCleanup 通知后,键对象的句柄已关闭或驱动程序调用 CmUnRegisterCallback 以取消注册 RegistryCallback 例程。 当 RegistryCallback 例程收到此通知时,该例程应释放它为对象的上下文分配的任何资源。

如果在 RegNtCallbackObjectContextCleanup 通知之前调用 CmSetCallbackObjectContext,则仍可由接收另一个通知的 RegistryCallback 引用 OldContext。 在 RegNtCallbackObjectContextCleanup 通知之前,不应发布 OldContext

有关 CmSetCallbackObjectContext 和筛选注册表操作的详细信息,请参阅 筛选注册表调用

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

CmRegisterCallbackEx

CmUnRegisterCallback

REG_CREATE_KEY_INFORMATION

REG_CREATE_KEY_INFORMATION_V1

RegistryCallback