Implementazione dell'interfaccia a prestazioni elevate
Perché WMI carica un provider ad alte prestazioni in-process su WMI o un'applicazione client, devi progettare il tuo 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 all'interno del processo in WMI, WMI crea un'istanza del provider usando un CLSID. Quando viene caricato in un'applicazione client, l'applicazione client istanzia il fornitore del servizio 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 impersonificazione del 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 | Interrogazioni |
IWbemHiPerfProvider::GetObjects | Recupero di oggetti |
IWbemHiPerfProvider::CreateRefresher | Crea un aggiornamento |
IWbemHiPerfProvider::CreateRefreshableObject | Crea un'istanza di oggetto 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 |
Argomenti correlati