Поделиться через


Реализация интерфейса высокой производительности

Поскольку WMI загружает высокопроизводительного поставщика в процессе работы с WMI или клиентским приложением, необходимо разработать вашего высокопроизводительного поставщика в качестве сервера в процессе. Кроме того, необходимо реализовать методы поставщика высокой производительности в интерфейсах IWbemHiPerfProvider и IWbemRefresher.

Вы должны реализовать высокопроизводительный провайдер как внутренний сервер. Одна из функций, которые следует учитывать при реализации безопасности внутрипроцессного сервера, заключается в том, как поставщик определяет свое расположение. При загрузке в процесс, WMI создает экземпляр поставщика с помощью CLSID. При загрузке в клиентское приложение оно создает экземпляр поставщика с использованием свойства ClientLoadableCLSID. Предоставляя разные значения CLSID и ClientLoadableCLSID, вы позволяете поставщику определять, загружается ли он в процессе в WMI или в клиентское приложение. При расположении в процессе WMI поставщик должен выполнять все необходимые олицетворения клиента с помощью ClientLoadableCLSID. При расположении в клиентском процессе поставщик наследует маркер доступа вызываемого потока. Дополнительные сведения о реализации внутрипроцессного сервера см. в документации по объектной модели компонентов (COM ).

В качестве сервера, работающего в процессе, высокопроизводительный поставщик использует объект обновления, чтобы данные оставались актуальными для удаленного клиента. В следующей таблице перечислены методы, которые необходимо реализовать для поставщика высокой производительности.

Способ Функция
IWbemHiPerfProvider::QueryInstances Запросы
IWbemHiPerfProvider::GetObjects Извлечение объектов
IWbemHiPerfProvider::CreateRefresher Создает обновление
IWbemHiPerfProvider::CreateRefreshableObject Создает обновляемый объект экземпляра
IWbemHiPerfProvider::CreateRefreshableEnum Создает обновляемый перечислитель
IWbemHiPerfProvider::StopRefreshing Остановка обновления перечислителя или объекта экземпляра
IWbemRefresher::Refresh Создает обновление

 

Преобразование поставщика экземпляров в поставщика высокой производительности