Реализация интерфейса высокой производительности
Поскольку 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 | Создает обновление |
Связанные темы