Указание сведений о контексте
Диспетчер конфигурации предоставляет несколько способов фильтрации драйверов реестра для назначения контекстных сведений операциям реестра. Драйвер фильтрации реестра может:
Назначьте сведения о контексте подпрограмме RegistryCallback .
Когда драйвер вызывает CmRegisterCallback или CmRegisterCallbackEx для регистрации для уведомления об операции реестра, драйвер может указать определенное драйвером значение контекста. Диспетчер конфигурации передает это контекстное значение в подпрограмму RegistryCallback драйвера каждый раз, когда диспетчер конфигурации вызывает подпрограмму.
Эти сведения о контексте поддерживаются, начиная с Windows XP.
Назначьте сведения о контексте операции реестра.
Драйверы могут хранить сведения о контексте для конкретной операции в элементе CallContext каждой структуры REG_XXX_KEY_INFORMATION , которую получает подпрограмма RegistryCallback драйвера. Если драйвер получает предварительное и последующее уведомление об операции реестра, структура REG_POST_OPERATION_INFORMATION содержит указатель на соответствующую структуру предварительного уведомления. Когда подпрограмма RegistryCallback получает REG_POST_OPERATION_INFORMATION структуру, элемент CallContext этой структуры соответствует элементу CallContext структуры предварительного уведомления.
Элемент CallContext этих структур доступен, начиная с Windows Vista.
Назначение контекстных сведений объекту раздела реестра.
Подпрограмма RegistryCallback может назначать сведения о контексте конкретному объекту раздела реестра. Если подпрограмма RegistryCallback вызывает CmSetCallbackObjectContext для назначения контекстных сведений объекту ключа, последующие предварительные и последующие уведомления для всех операций с объектом будут включать значение контекста в элемент ObjectContext каждой структуры REG_XXX_KEY_INFORMATION . Если драйвер предоставляет несколько подпрограмм RegistryCallback , драйвер может назначать разные сведения контекста для каждой подпрограммы для одного объекта раздела реестра.
Если драйвер вызвал CmSetCallbackObjectContext, подпрограмма RegistryCallback драйвера получит уведомление RegNtCallbackObjectContextCleanup после закрытия дескриптора объекта ключа. В ответ на это уведомление подпрограмма должна освободить все ресурсы, выделенные для контекста объекта. Если параметр Argument1 для подпрограммы RegistryCallback имеет значение RegNtCallbackObjectContextCleanup, параметр Argument2 является указателем на структуру REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION , содержащую указатель на контекст.
Подпрограмма CmSetCallbackObjectContext и уведомление RegNtCallbackObjectContextCleanup доступны, начиная с Windows Vista.