Compartir a través de


Clases de utilidad del marco de proveedor

[Las clases C++ de WMI que forman parte del marco del proveedor de WMI que ahora se consideran 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 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 sean 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 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

Las compilaciones de depuración del proveedor se vinculan 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 se incluye 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 de 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). Existen versiones de WMI 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 de nanosegundos, y también se pueden convertir a y desde BSTR. Para obtener más información sobre las clases CString, CStringArray, CTime y CTimeSpan, consulte la documentación de Aplicaciones de escritorio de MFC.

 

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

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

Aunque los intervalos de tiempo y 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 mediante formatos de tiempo que son precisos para un segundo (struct tm y time_t). La adición de posiciones decimales artificiales no aumenta la precisión.