Clases de utilidad del marco de trabajo del proveedor

[Clases de C++ de WMI que forman parte del marco de 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 se deben usar para todo el nuevo desarrollo.]

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 es un puntero a un 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án Framedyd.dll o una de sus dependencias. Por lo tanto, debe copiar Framedyd.dll desde el directorio \bin de Windows SDK al directorio \system32\wbem o agregar el directorio \bin de Windows SDK 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 de Windows y ANSI C.
WBEMTimeSpan Contiene funciones auxiliares usadas 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 de WMI son capaces de almacenar el tiempo en precisión de nanosegundos, y también se pueden convertir a y desde BSTR. Para 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.mmmmmmsUUUU"

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

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