Angeben von Kontextinformationen

Der Konfigurations-Manager bietet verschiedene Möglichkeiten für Registrierungsfiltertreiber, um Registrierungsvorgängen Kontextinformationen zuzuweisen. Ein Registrierungsfiltertreiber kann Folgendes ausführen:

  • Weisen Sie der RegistryCallback-Routine Kontextinformationen zu.

    Wenn Ihr Treiber CmRegisterCallback oder CmRegisterCallbackEx aufruft , um sich für die Benachrichtigung über einen Registrierungsvorgang zu registrieren, kann der Treiber einen vom Treiber definierten Kontextwert angeben. Der Konfigurations-Manager übergibt diesen Kontextwert jedes Mal an die RegistryCallback-Routine des Treibers, wenn der Konfigurations-Manager die Routine aufruft.

    Diese Kontextinformationen werden ab Windows XP unterstützt.

  • Weisen Sie einem Registrierungsvorgang Kontextinformationen zu.

    Treiber können vorgangsspezifische Kontextinformationen im CallContext-Member jeder REG_XXX_KEY_INFORMATION Struktur speichern, die die RegistryCallback-Routine des Treibers empfängt. Wenn Ihr Treiber sowohl eine Vorabbenachrichtigung als auch eine Nachbenachrichtigung für einen Registrierungsvorgang empfängt, enthält die REG_POST_OPERATION_INFORMATION-Struktur einen Zeiger auf die entsprechende Vorabbenachrichtigungsstruktur. Wenn eine RegistryCallback-Routine eine REG_POST_OPERATION_INFORMATION-Struktur empfängt, stimmt das CallContext-Element dieser Struktur mit dem CallContext-Member der Vorbenachrichtigungsstruktur überein.

    Das CallContext-Element dieser Strukturen ist ab Windows Vista verfügbar.

  • Weisen Sie einem Registrierungsschlüsselobjekt Kontextinformationen zu.

    Eine RegistryCallback-Routine kann einem bestimmten Registrierungsschlüsselobjekt Kontextinformationen zuweisen. Wenn die RegistryCallback-RoutineCmSetCallbackObjectContext aufruft, um einem Schlüsselobjekt Kontextinformationen zuzuweisen, enthalten nachfolgende Vor- und Nachbenachrichtigungen für alle Vorgänge für das Objekt den Kontextwert im ObjectContext-Member jeder REG_XXX_KEY_INFORMATION-Struktur . Wenn ein Treiber mehrere RegistryCallback-Routinen bereitstellt, kann der Treiber für jede Routine unterschiedliche Kontextinformationen für ein einzelnes Registrierungsschlüsselobjekt zuweisen.

    Wenn ein Treiber CmSetCallbackObjectContext aufgerufen hat, erhält die RegistryCallback-Routine des Treibers eine RegNtCallbackObjectContextCleanup-Benachrichtigung , nachdem das Handle des Schlüsselobjekts geschlossen wurde. Als Reaktion auf diese Benachrichtigung sollte die Routine alle Ressourcen freigeben, die sie für den Kontext des Objekts zugewiesen hat. Wenn der Argument1-Parameter für die RegistryCallback-RoutineRegNtCallbackObjectContextCleanup ist, ist der Parameter Argument2 ein Zeiger auf eine REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION Struktur, die einen Zeiger auf den Kontext enthält.

    Die CmSetCallbackObjectContext-Routine und die RegNtCallbackObjectContextCleanup-Benachrichtigung sind ab Windows Vista verfügbar.