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 |
Argomenti correlati