Clases de utilidad de marco de proveedor

[Clases de C++ de WMI que forman parte del marco del proveedor de WMI que ahora se considera en estado final y no habrá más desarrollo, mejoras o actualizaciones disponibles para problemas no relacionados con la seguridad que afecten a estas bibliotecas. Las API de MI deben usarse para todo el desarrollo nuevo.

Las bibliotecas del marco de trabajo del proveedor Framedyd.dll (versión de depuración) y Framedyn.dll (versión de lanzamiento) implementan varias clases auxiliares de proveedor. Algunas funciones de Framedyn.dll se han quitado de los archivos de encabezado. Para seguir usando estas funciones, agregue #define FRAMEWORK_ALLOW_DEPRECATED al código antes de incluir Fwcommon.h.

Puede descargar proveedores individuales que ya no son necesarios.

Para usar esta funcionalidad, debe realizar los tres cambios siguientes en el proveedor en MainDll.cpp:

  • En la función DllMain donde se llama a CWbemProviderGlue::FrameworkLoginDLL, debe agregar un segundo parámetro, que es un puntero a un long.
  • En la función DllCanUnloadNow donde se llama a CWbemProviderGlue::FrameworkLogoffDLL, debe agregar un segundo parámetro que es un puntero a un long.
  • En la función DllGetClassObject donde se crea una instancia de CWbemGlueFactory, debe agregar un parámetro que sea un puntero a un valor long.

En los tres casos, el puntero a un long debe ser el mismo puntero.

Nota

En Maindll.cpp, las rutinas DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer y DllMain deben encapsularse en un bloque try/catch.

 

Precaución

Vínculo de las compilaciones de depuración del proveedor con Framedyd.lib para Framedyd.dll. Framedyd.dll está en el directorio \bin del Kit de desarrollo de software (SDK) de Microsoft Windows que no está incluido en la ruta de acceso del sistema. Cuando se prueba una compilación de depuración de un proveedor con el servicio de administración de Windows, el proveedor de marcos no se cargará porque no se ubicará Framedyd.dll o una de sus dependencias. Por lo tanto, debe copiar Framedyd.dll desde el directorio \bin del SDK de Windows al directorio \system32\wbem o agregar el directorio \bin del SDK de Windows a la ruta de búsqueda del sistema.

 

En la tabla siguiente se enumeran las clases de utilidad del marco de proveedor.

Clase de utilidad Descripción
CHString Proporciona funciones de manipulación y comparación de cadenas para WMI.
CHStringArray Contiene para crear y manipular matrices de CHString.
TRefPointerCollection Concede acceso a una clase de contenedor para punteros.
WBEMTime Facilita las conversiones entre varios formatos de tiempo de ejecución Windows y ANSI C.
WBEMTimeSpan Contiene funciones auxiliares que se usan para calcular y mantener la diferencia de intervalo de tiempo entre dos objetos WBEMTime .

 

Nota

Las clases CHString y CHStringArray son similares a las clases CString y CStringArray de Microsoft Foundation Classes (MFC). Las versiones de WMI existen para que los desarrolladores puedan acceder a métodos de comparación y manipulación de cadenas sin tener que acceder a MFC. Las clases WBEMTime y WBEMTimeSpan también son similares a las clases CTime y CTimeSpan de MFC. Las versiones WMI son capaces de almacenar el tiempo en la precisión nanosegunda, y también se pueden convertir a Y desde BSTR. Para obtener más información sobre las clases CString, CStringArray, CTime y CTimeSpan, vea Microsoft Foundation Classes en MSDN.

 

Los valores BSTR devueltos por los métodos WBEMTime están en formato de fecha y hora: "aaaammddHHMMSS.mmmmmmsUUUUU"

Los valores BSTR devueltos por los métodos WBEMTimeSpan están en formato de intervalo: "dddHHMMSS.mmmmmm:000"

Aunque los intervalos de tiempo y tiempo se almacenan internamente como nanosegundos, no se almacenan necesariamente con precisión nanosegunda. Esto se debe a que los objetos WBEMTime se pueden construir con formatos de tiempo precisos para un segundo (estructura tm y time_t). Agregar posiciones decimales artificiales no aumenta la precisión.