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


Классы служебной программы Provider Framework

[Классы WMI C++, которые являются частью платформы поставщика WMI, которая в настоящее время рассматривается в окончательном состоянии, а дальнейшие разработки, усовершенствования или обновления не будут доступны для проблем, связанных с безопасностью, влияющих на эти библиотеки. API-интерфейсы MI должны использоваться для всех новых разработок.]

Библиотеки платформы поставщика Framedyd.dll (отладочная версия) и Framedyn.dll (версия выпуска) реализуют несколько вспомогательных классов поставщиков. Некоторые функции в Framedyn.dll были удалены из файлов заголовков. Чтобы продолжить использовать эти функции, добавьте #define FRAMEWORK_ALLOW_DEPRECATED в код перед включением Fwcommon.h.

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

Чтобы использовать эту возможность, необходимо внести три следующих изменения в поставщик в MainDll.cpp:

  • В функции DllMain, где вызывается CWbemProviderGlue::FrameworkLoginDLL, необходимо добавить второй параметр, который является указателем на длину.
  • В функции DllCanUnloadNow, где вызывается CWbemProviderGlue::FrameworkLogoffDLL, необходимо добавить второй параметр, который является указателем на длину.
  • В функции DllGetClassObject , в которой создается экземпляр CWbemGlueFactory, необходимо добавить параметр, который является указателем на длину.

Во всех трех случаях указатель на длину должен быть одинаковым указателем.

Примечание.

В Maindll.cpp библиотеки DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer и dllMain подпрограммы должны быть упакованы в блок try/catch.

 

Внимание

Ссылка на сборки отладки поставщика с framedyd.lib для Framedyd.dll. Framedyd.dll находится в каталоге microsoft Windows Software Development Kit (SDK) \bin, который не входит в системный путь. При тестировании отладочной сборки поставщика с помощью службы управления Windows поставщик платформы не будет загружаться, так как Framedyd.dll или одна из зависимостей не будет находиться. Поэтому необходимо скопировать Framedyd.dll из каталога \bin пакета SDK для Windows в каталог \system32\wbem или добавить каталог windows SDK \bin в системный путь поиска.

 

В следующей таблице перечислены классы служебной программы платформы поставщика.

Класс служебной программы Description
CHString Предоставляет функции сравнения строк и манипуляций для WMI.
CHStringArray Содержит для создания и управления массивами CHString.
TRefPointerCollection Предоставляет доступ к классу контейнера для указателей.
WBEMTime Упрощает преобразование между различными форматами времени выполнения Windows и ANSI C.
WBEMTimeSpan Содержит вспомогательные функции, используемые для вычисления и удержания интервала времени между двумя объектами WBEMTime .

 

Примечание.

Классы CHString и CHStringArray похожи на классы Microsoft Foundation (MFC) CString и CStringArray. Версии WMI существуют, чтобы разработчики могли получить доступ к методам обработки строк и сравнения без доступа к MFC. Классы WBEMTime и WBEMTimeSpan также похожи на классы MFC CTime и CTimeSpan. Версии WMI могут хранить время до точности nanosecond, а также могут преобразоваться в BSTR и из нее. Дополнительные сведения о классах CString, CStringArray, CTime и CTimeSpan см. в документации по классическим приложениям MFC.

 

Значения BSTR, возвращаемые методами WBEMTime, находятся в формате даты и времени: "yymmddHHMMSS.mmmmmmsUUU"

Значения BSTR, возвращаемые методами WBEMTimeSpan, находятся в формате интервала: "ddHHMMSS.mm:000"

Хотя интервалы времени и времени хранятся внутри как наносекунд, они не обязательно хранятся с точностью nanosecond. Это связано с тем, что объекты WBEMTime можно создавать с помощью форматов времени, которые являются точными для секунды (структуры tm и time_t). Добавление искусственных десятичных разрядов не увеличивает точность.