Hulpprogrammaklassen providerframework
[WMI C++-klassen die deel uitmaken van het WMI Provider Framework dat nu als definitief wordt beschouwd, en er geen verdere ontwikkeling, verbeteringen of updates beschikbaar zijn voor problemen met betrekking tot niet-beveiliging die van invloed zijn op deze bibliotheken. De MI-API's moeten worden gebruikt voor alle nieuwe ontwikkeling.]
De frameworkbibliotheken van de provider Framedyd.dll (foutopsporingsversie) en Framedyn.dll (releaseversie) implementeren verschillende helperklassen van providers. Sommige functies in Framedyn.dll zijn verwijderd uit de headerbestanden. Als u deze functies wilt blijven gebruiken, voegt u #define FRAMEWORK_ALLOW_DEPRECATED
toe aan uw code voordat u Fwcommon.h opgeeft.
U kunt afzonderlijke providers die niet meer nodig zijn, uitpakken.
Als u deze mogelijkheid wilt gebruiken, moet u de drie volgende wijzigingen aanbrengen in uw provider in MainDll.cpp:
- In de functie DllMain waar u CWbemProviderGlue::FrameworkLoginDLLaanroept, moet u een tweede parameter toevoegen die een aanwijzer is naar een lange.
- In de functie DllCanUnloadNow waar u CWbemProviderGlue::FrameworkLogoffDLLaanroept, moet u een tweede parameter toevoegen die een aanwijzer is naar een lange.
- In de functie DllGetClassObject waar u een exemplaar van CWbemGlueFactorymaakt, moet u een parameter toevoegen die een aanwijzer is naar een lange.
In alle drie gevallen moet de aanwijzer naar een lange aanwijzer dezelfde aanwijzer zijn.
Notitie
In Maindll.cpp, DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer en DllMain routines moeten worden verpakt in een try/catch-blok.
Voorzichtigheid
Koppeling naar builds voor foutopsporing van providers met Framedyd.lib voor Framedyd.dll. Framedyd.dll bevindt zich in de Map \bin (Microsoft Windows Software Development Kit) \bin die niet is opgenomen in het systeempad. Wanneer een foutopsporingsbuild van een provider wordt getest met de Windows Management-service, kan de frameworkprovider niet worden geladen omdat Framedyd.dll of een van de bijbehorende afhankelijkheden zich niet bevindt. Daarom moet u Framedyd.dll kopiƫren van de Windows SDK \bin-map naar de map \system32\wbem of de map Windows SDK \bin toevoegen aan het zoekpad van het systeem.
De volgende tabel bevat de hulpprogrammaklassen van het providerframework.
Hulpprogrammaklasse | Beschrijving |
---|---|
CHString- | Biedt tekenreeksvergelijkings- en manipulatiefuncties voor WMI. |
CHStringArray- | Bevat voor het maken en bewerken van matrices van CHString. |
TRefPointerCollection- | Verleent toegang tot een containerklasse voor aanwijzers. |
WBEMTime- | Vereenvoudigt conversies tussen verschillende Windows- en ANSI C-runtime-indelingen. |
WBEMTimeSpan- | Bevat helperfuncties die worden gebruikt om het tijdsspanneverschil tussen twee WBEMTime--objecten te berekenen en vast te houden. |
Notitie
De CHString-- en CHStringArray- klassen zijn vergelijkbaar met de MFC-klassen (Microsoft Foundation Classes) CString en CStringArray-. De WMI-versies bestaan zodat ontwikkelaars toegang hebben tot tekenreeksmanipulatie- en vergelijkingsmethoden zonder toegang te hebben tot MFC. De klassen WBEMTime en WBEMTimeSpan zijn ook vergelijkbaar met de klassen MFC CTime en CTimeSpan. De WMI-versies kunnen de nauwkeurigheid van de nanoseconden opslaan en kunnen ook worden geconverteerd naar en van BSTR-. Zie de MFC Desktop Applications documentatie voor meer informatie over de klassen CString, CStringArray, CTime en CTimeSpan.
BSTR--waarden die worden geretourneerd door WBEMTime--methoden, bevinden zich in datum- en tijdnotatie: "jjjjmmddHHMMSS.mmmmmmsUUU"
BSTR- waarden die worden geretourneerd door WBEMTimeSpan methoden zijn in intervalindeling: "dddHHMMSS.mmmmmm:000"
Hoewel tijden en tijdsspanne intern worden opgeslagen als nanoseconden, worden ze niet noodzakelijkerwijs opgeslagen met nauwkeurigheid van nanoseconden. Dit komt doordat WBEMTime objecten kunnen worden samengesteld met tijdnotaties die nauwkeurig zijn voor een seconde (struct tmen time_t). Het toevoegen van kunstmatige decimalen verhoogt de nauwkeurigheid niet.