Implementazione dell'interfaccia a prestazioni elevate

Poiché WMI carica un provider ad alte prestazioni in-process per WMI o un'applicazione client, è necessario progettare il provider ad alte prestazioni come server in-process. Inoltre, è necessario implementare i metodi del provider ad alte prestazioni nelle interfacce IWbemHiPerfProvider e IWbemRefresher.

È consigliabile implementare un provider ad alte prestazioni come server in-process. Una funzionalità da tenere presente quando si implementa la sicurezza di un server in-process è il modo in cui il provider identifica la propria posizione. Quando viene caricato in-process in WMI, WMI crea un'istanza del provider usando un CLSID. Quando viene caricato in un'applicazione client, l'applicazione client crea un'istanza del provider con la proprietà ClientLoadableCLSID . Assegnando valori diversi a CLSID e ClientLoadableCLSID, è possibile consentire al provider di determinare se viene caricato in-process in WMI o in un'applicazione client. Se si trova in un processo WMI, il provider deve eseguire qualsiasi rappresentazione client necessaria usando ClientLoadableCLSID. Se si trova in un processo client, il provider eredita il token di accesso del thread su cui viene chiamato. Per altre informazioni sull'implementazione di un server in-process, vedere la documentazione di Component Object Model (COM).

Come server in-process, un provider ad alte prestazioni usa un oggetto refresher per mantenere aggiornati i dati per il client remoto. Nella tabella seguente sono elencati i metodi che è necessario implementare per un provider ad alte prestazioni.

metodo Funzionalità
IWbemHiPerfProvider::QueryInstances Query
IWbemHiPerfProvider::GetObjects Recupero di oggetti
IWbemHiPerfProvider::CreateRefresher Crea un aggiornamento
IWbemHiPerfProvider::CreateRefreshableObject Crea un oggetto istanza aggiornabile
IWbemHiPerfProvider::CreateRefreshableEnum Crea un enumeratore aggiornabile
IWbemHiPerfProvider::StopRefreshing Arresta l'aggiornamento di un enumeratore o di un oggetto istanza
IWbemRefresher::Refresh Crea un aggiornamento

 

Creazione di un provider di istanze in un provider ad alte prestazioni