Поделиться через


Указание сведений о контексте

Диспетчер конфигурации предоставляет несколько способов фильтрации драйверов реестра для назначения контекстных сведений операциям реестра. Драйвер фильтрации реестра может:

  • Назначьте сведения о контексте подпрограмме 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.