Реализация интерфейса высокой производительности
Поскольку WMI загружает внутрипроцессный поставщик высокопроизводительных данных в WMI или клиентское приложение, необходимо разработать поставщик высокой производительности в качестве внутреннего сервера. Кроме того, необходимо реализовать методы поставщика высокой производительности в интерфейсах IWbemHiPerfProvider и IWbemRefresher.
Вы должны реализовать высокопроизводительный поставщик в качестве внутреннего сервера. Одна из функций, которые следует учитывать при реализации безопасности внутрипроцессного сервера, заключается в том, как поставщик определяет свое расположение. При загрузке в WMI WMI WMI создает экземпляр поставщика с помощью CLSID. При загрузке в клиентское приложение клиентское приложение создает экземпляр поставщика с помощью свойства ClientLoadableCLSID . Предоставляя разные значения CLSID и ClientLoadableCLSID, поставщик может определить, загружается ли он в WMI или клиентское приложение. При расположении в процессе WMI поставщик должен выполнять все необходимые олицетворения клиента с помощью ClientLoadableCLSID. При расположении в клиентском процессе поставщик наследует маркер доступа вызываемого потока. Дополнительные сведения о реализации внутрипроцессного сервера см. в документации по объектной модели компонентов (COM ).
В качестве внутреннего сервера поставщик с высокой производительностью использует объект обновления для хранения данных для удаленного клиента. В следующей таблице перечислены методы, которые необходимо реализовать для поставщика высокой производительности.
Способ | Функция |
---|---|
IWbemHiPerfProvider::QueryInstances | Запросы |
IWbemHiPerfProvider::GetObjects | Извлечение объектов |
IWbemHiPerfProvider::CreateRefresher | Создает средство обновления |
IWbemHiPerfProvider::CreateRefreshableObject | Создает объект обновляемого экземпляра |
IWbemHiPerfProvider::CreateRefreshableEnum | Создает обновляемый перечислитель |
IWbemHiPerfProvider::StopRefreshing | Остановка обновления перечислителя или объекта экземпляра |
IWbemRefresher::Refresh | Создает средство обновления |
См. также