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


Реализация интерфейса High-Performance

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

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

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

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

 

Превращение поставщика экземпляра в поставщик High-Performance