Condividi tramite


Classi di utilità Provider Framework

[Classi C++ WMI che fanno parte di WMI Provider Framework che ora è considerato in stato finale e non saranno disponibili ulteriori sviluppi, miglioramenti o aggiornamenti per problemi non correlati alla sicurezza che interessano queste librerie. Le API MI devono essere usate per tutte le nuove attività di sviluppo.

Le librerie del framework del provider Framedyd.dll (versione di debug) e Framedyn.dll (versione di rilascio) implementano diverse classi helper del provider. Alcune funzioni in Framedyn.dll sono state rimosse dai file di intestazione. Per continuare a usare queste funzioni, aggiungere #define FRAMEWORK_ALLOW_DEPRECATED al codice prima di includere Fwcommon.h.

È possibile scaricare singoli provider non più necessari.

Per usare questa funzionalità, è necessario apportare le tre modifiche seguenti al provider in MainDll.cpp:

  • Nella funzione DllMain in cui si chiama CWbemProviderGlue::FrameworkLoginDLL, è necessario aggiungere un secondo parametro che è un puntatore a un long.
  • Nella funzione DllCanUnloadNow in cui si chiama CWbemProviderGlue::FrameworkLogoffDLL, è necessario aggiungere un secondo parametro che è un puntatore a un long.
  • Nella funzione DllGetClassObject in cui si crea un'istanza di CWbemGlueFactory, è necessario aggiungere un parametro che è un puntatore a un long.

In tutti e tre i casi, il puntatore a un lungo deve essere lo stesso puntatore.

Nota

In Maindll.cpp le routine DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer e DllMain devono essere incluse in un blocco try/catch.

 

Attenzione

Collegamento alle compilazioni di debug del provider con Framedyd.lib per Framedyd.dll. Framedyd.dll si trova nella directory \bin di Microsoft Windows Software Development Kit (SDK) che non è inclusa nel percorso di sistema. Quando viene testata una build di debug di un provider con il servizio Gestione Windows, il provider di framework non verrà caricato perché Framedyd.dll o una delle relative dipendenze non verrà individuata. Pertanto, è necessario copiare Framedyd.dll dalla directory \bin di Windows SDK alla directory \system32\wbem o aggiungere la directory \bin di Windows SDK al percorso di ricerca di sistema.

 

Nella tabella seguente sono elencate le classi di utilità del framework del provider.

Classe di utilità Descrizione
CHString Fornisce funzioni di confronto e manipolazione di stringhe per WMI.
CHStringArray Contiene per la creazione e la modifica di matrici di CHString.
TRefPointerCollection Concede l'accesso a una classe contenitore per i puntatori.
WBEMTime Facilita le conversioni tra vari formati di runtime di Windows e ANSI C.
WBEMTimeSpan Contiene funzioni helper usate per calcolare e contenere la differenza di intervallo di tempo tra due oggetti WBEMTime.

 

Nota

Le classi CHString e CHStringArray sono simili a CString e CStringArray di Microsoft Foundation Classes (MFC). Le versioni WMI esistono in modo che gli sviluppatori possano accedere ai metodi di manipolazione e confronto delle stringhe senza dover accedere a MFC. Le classi WBEMTime e WBEMTimeSpan sono simili anche alle classi CTime E CTimeSpan MFC. Le versioni WMI sono in grado di archiviare la precisione del tempo in nanosecondo e possono anche eseguire la conversione da e verso BSTR. Per altre informazioni sulle classi CString, CStringArray, CTime e CTimeSpan, vedere la documentazione relativa alle applicazioni desktop MFC.

 

I valori BSTR restituiti dai metodi WBEMTime sono in formato data e ora: "aaaammdHHMMSS.mmmmmmsUUU"

I valori BSTR restituiti dai metodi WBEMTimeSpan sono in Formato intervallo: "dddHHMMSS.mmmmmm:000"

Anche se gli intervalli di tempo e di tempo vengono archiviati internamente come nanosecondi, non vengono necessariamente archiviati con precisione nanosecondo. Ciò è dovuto al fatto che gli oggetti WBEMTime possono essere costruiti usando formati temporali accurati per un secondo (struct tm e time_t). L'aggiunta di posizioni decimali artificiali non aumenta l'accuratezza.