Классы служебной программы 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). Добавление искусственных десятичных разрядов не увеличивает точность.