Anbieterframework-Hilfsprogrammklassen

[WMI-C++-Klassen, die Teil des WMI-Anbieterframework sind, das jetzt im endgültigen Zustand betrachtet wird, und keine weiteren Entwicklungen, Erweiterungen oder Updates für nicht sich sicherheitsbezogene Probleme, die diese Bibliotheken betreffen, verfügbar sind. Die MI-APIs sollten für alle neuen Entwicklungen verwendet werden.]

Die Frameworkbibliotheken des Anbieters Framedyd.dll (Debugversion) und Framedyn.dll (Releaseversion) implementieren mehrere Anbieter-Hilfsklassen. Einige Funktionen in Framedyn.dll aus den Headerdateien entfernt. Um diese Funktionen weiterhin zu verwenden, fügen Sie #define FRAMEWORK_ALLOW_DEPRECATED dem Code hinzu, bevor Sie Fwcommon.h hinzufügen.

Sie können einzelne Anbieter entladen, die nicht mehr benötigt werden.

Um diese Funktion verwenden zu können, müssen Sie die drei folgenden Änderungen an Ihrem Anbieter in MainDll.cpp vornehmen:

  • In der DllMain-Funktion, in der Sie CWbemProviderGlue::FrameworkLoginDLLaufrufen, müssen Sie einen zweiten Parameter hinzufügen, der ein Zeiger auf ein long-Objekt ist.
  • In der DllCanUnloadNow-Funktion, in der Sie CWbemProviderGlue::FrameworkLogoffDLLaufrufen, müssen Sie einen zweiten Parameter hinzufügen, bei dem es sich um einen Zeiger auf einen long handelt.
  • In der DllGetClassObject-Funktion, in der Sie eine Instanz von CWbemGlueFactory erstellen, müssen Sie einen Parameter hinzufügen, der ein Zeiger auf ein long-Objekt ist.

In allen drei Fällen muss der Zeiger auf einen long-Zeiger identisch sein.

Hinweis

In maindll.cpp müssen die Routinen "DllGetClassObject", "DllCanUnloadNow", "DllRegisterServer", "DllUnregisterServer" und "DllMain" in einen try/catch-Block umschlossen werden.

Achtung

Der Debugbuildlink des Anbieters mit Framedyd.lib Framedyd.dll. Framedyd.dll befindet sich im Bin-Verzeichnis des Microsoft Windows Software Development Kit \ (SDK), das nicht im Systempfad enthalten ist. Wenn ein Debugbuild eines Anbieters mit dem Windows Management-Dienst getestet wird, kann der Frameworkanbieter nicht geladen werden, da Framedyd.dll oder eine seiner Abhängigkeiten nicht gefunden wird. Daher müssen Sie entweder Framedyd.dll aus dem bin-Verzeichnis des Windows SDK in das \ \ Verzeichnis system32 wbem kopieren oder dem Systemsuchpfad das verzeichnis Windows \ SDK \ bin hinzufügen.

In der folgenden Tabelle sind die Anbieterframework-Hilfsprogrammklassen aufgeführt.

Hilfsprogrammklasse Beschreibung
CHString Stellt Zeichenfolgenvergleichs- und Bearbeitungsfunktionen für WMI zur Verfügung.
CHStringArray Enthält zum Erstellen und Bearbeiten von ARRAYS von CHString.
TRefPointerCollection Gewährt Zeigern Zugriff auf eine Containerklasse.
WBEMTime Erleichtert Konvertierungen zwischen verschiedenen Windows und ANSI C-Laufzeitformaten.
WBEMTimeSpan Enthält Hilfsfunktionen, die verwendet werden, um die Zeitspannendifferenz zwischen zwei WBEMTime-Objekten zu berechnen und zu halten.

Hinweis

Die Klassen CHString und CHStringArray ähneln den CString- und CStringArray-Klassen Microsoft Foundation Classes (MFC). Die WMI-Versionen sind vorhanden, sodass Entwickler auf Zeichenfolgenbearbeitungs- und Vergleichsmethoden zugreifen können, ohne auf MFC zugreifen zu müssen. Die Klassen WBEMTime und WBEMTimeSpan ähneln auch den Klassen MFC CTime und CTimeSpan. Die WMI-Versionen sind in der Lage, die Genauigkeit von Zeit bis Nanosekunden zu speichern, und können auch in und aus BSTR konvertieren. Weitere Informationen zu den Klassen CString, CStringArray, CTime und CTimeSpan finden Sie Microsoft Foundation Classes MSDN.

Von WBEMTime-Methoden zurückgegebene BSTR-Werte liegen im Datums- und Uhrzeitformatvor: "yyyymmddHHMMSS.mmmmmmsUUU".

Von WBEMTimeSpan-Methoden zurückgegebene BSTR-Werte liegen im Intervallformatvor: "dddddddHHMMSS.mmmmmm:000"

Obwohl Zeiten und Zeitspannen intern als Nanosekunden gespeichert werden, werden sie nicht unbedingt mit Nanosekundengenauigkeit gespeichert. Dies liegt daran, dass WBEMTime-Objekte mit Zeitformaten erstellt werden können, die auf eine Sekunde genau sind (struct tm und time _ t). Das Hinzufügen künstlicher Dezimalstellen erhöht die Genauigkeit nicht.