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 成员获取此指针:
REG_OPEN_KEY_INFORMATION
REG_OPEN_KEY_INFORMATION_V1
[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 |