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


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

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

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