Freigeben über


Definieren einer Notify-Klasse

Notify-Klassen müssen implementiert werden, damit sie von der INetCfgComponentControl-Schnittstelle erben . Wenn jedoch Benachrichtigungsobjekte bestimmte Vorgänge ausführen, müssen ihre Benachrichtigungsklassen auch implementiert werden, um von den folgenden Schnittstellen zu erben:

  • Wenn ein Notify-Objekt Vorgänge im Zusammenhang mit dem Installieren, Aktualisieren und Entfernen der Komponente ausführt, die das Objekt besitzt, muss die zugeordnete Notify-Klasse von der INetCfgComponentSetup-Schnittstelle erben .

  • Wenn ein Notify-Objekt benutzerdefinierte Eigenschaftenseiten für die Komponente anzeigt, die das Objekt besitzt, muss die zugeordnete notify-Klasse von der INetCfgComponentPropertyUi-Schnittstelle erben .

  • Wenn ein Notify-Objekt Änderungen an der Art und Weise auswertet, wie das Netzwerkkonfigurationssubsystem die Komponente, die das Objekt besitzt, an andere Netzwerkkomponenten bindet, muss die zugeordnete notify-Klasse von der INetCfgComponentNotifyBinding-Schnittstelle erben .

  • Wenn ein Notify-Objekt Änderungen an der Netzwerkkonfiguration auswertet, die sich auf die Komponente auswirken können, die das Objekt besitzt, muss die zugeordnete notify-Klasse von der INetCfgComponentNotifyGlobal-Schnittstelle erben .

Bestimmte Datenmember innerhalb von Benachrichtigungsklassen sollten als gemeinsames Element für alle Benachrichtigungsobjekte definiert werden. Bestimmte Datenmember sollten als spezifisch für ihre Komponente definiert werden. Zu den Datenelementen, die von allen Benachrichtigungsobjekten definiert werden sollten, gehören:

  • Ein Zeiger auf eine instance der Netzwerkkomponente, die das Objekt vom Typ INetCfgComponent-Schnittstelle besitzt. Ein instance eines Notify-Objekts verwendet diesen Zeiger, um auf die Komponente zuzugreifen und diese zu steuern, die das Objekt besitzt.

  • Ein Zeiger auf eine instance des Netzwerkkonfigurationsobjekts vom Typ INetCfg-Schnittstelle. Ein instance eines Notify-Objekts verwendet diesen Zeiger, um auf alle Aspekte der Netzwerkkonfiguration zuzugreifen.

  • Variablen zum Speichern von Parameterinformationen für die Komponente, die das Notify-Objekt besitzt

  • Eine Variable, die die Aktion angibt, die ein Benachrichtigungsobjekt zuvor ausgeführt hat. Definieren Sie Konstanten, um die verschiedenen Aktionen anzugeben, die Benachrichtigungsobjekte ausführen können. Wenn das Netzwerkkonfigurationssubsystem die INetCfgComponentControl::ApplyRegistryChanges-Methode des Notify-Objekts aufruft, um Konfigurationsänderungen auf die Registrierung anzuwenden, verwendet ApplyRegistryChanges diese Variable, um zu bestimmen, wie Registrierungsänderungen vorgenommen werden. Wenn beispielsweise ein Notify-Objekt zuvor Vorgänge im Zusammenhang mit der Installation der Komponente ausgeführt hat, die das Objekt in seiner INetCfgComponentSetup::Install-Methode besitzt, sollte Install diese Variable so festlegen, dass die Aktion als Installation angegeben wird.

  • Ein Registrierungsschlüssel vom Typ HKEY. Ein Notify-Objekt ruft die INetCfgComponent::OpenParamKey-Methode der Komponente auf, die das Objekt zum Öffnen und Abrufen des Registrierungsschlüssels mit Parametern für die Komponente besitzt. Das notify-Objekt legt dann den HKEY-Member auf diesen Schlüssel fest.

Definieren Sie einen Konstruktor und einen Destruktor für Ihre Notify-Klasse. Erwägen Sie auch, private Methoden zu definieren, die nur die Notify-Klasse verwenden kann.

Alle IUnknown-Schnittstellenmethoden sollten für eine Notify-Klasse implementiert werden. Wenn eine Notify-Klasse von einer der optionalen Schnittstellen erbt, die in der vorherigen Liste aufgeführt sind, müssen alle Methoden dieser Schnittstellen implementiert werden. Beachten Sie, dass E_NOTIMPL kein gültiger Rückgabetyp für eine der Methoden der Notify-Objektschnittstellen ist. Wenn ein Notify-Objekt keine Implementierung für eine bestimmte Methode erfordert, implementieren Sie einfach die Methode, um S_OK zurückzugeben.