Compartir a través de


Función PutClassWmi

Crea una imagen o actualiza una existente.

Nota

Esta API es solo para uso interno. No está pensada para usarla desde código del desarrollador.

Sintaxis

HRESULT PutClassWmi (
   [in] IWbemClassObject*    pObject,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

Parámetros

pObject
[in] Un puntero a una definición de clase válida. Debe inicializarse correctamente con todos los valores de propiedad necesarios.

lFlags
[in] El valor de este parámetro se corresponde con una combinación de marcas que afectan al comportamiento de esta función. Los siguientes valores se definen en el archivo de encabezado WbemCli.h, aunque también puede definirlos como constantes en el código. Puede consultarlos a continuación:

Constante Value Descripción
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Si se establece este valor, WMI no almacenará ningún calificador que tenga el tipo modificado.
Si no se establece, se supondrá que este objeto no está localizado y todos los calificadores se almacenarán con esta instancia.
WBEM_FLAG_CREATE_OR_UPDATE 0 Crear la clase si no existe o sobrescribirla si ya existe.
WBEM_FLAG_UPDATE_ONLY 1 Actualizar la clase. La clase debe existir para que la llamada se realice correctamente.
WBEM_FLAG_CREATE_ONLY 2 Crear la clase. Se produce un error en la llamada si la clase ya existe.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Si se establece esta marca, se producirá una llamada semisincrónica.
WBEM_FLAG_OWNER_UPDATE 0x10000 Los proveedores de inserción deben especificar esta marca al llamar a PutClassWmi para indicar que esta clase ha cambiado.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Permite actualizar una clase si no hay clases derivadas y ninguna instancia de esa clase. También permite actualizaciones en todos los casos si el cambio es solo para calificadores no importantes, como el calificador Description. Si la clase tiene instancias o los cambios son en calificadores importantes, se produce un error en la actualización.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Permite actualizaciones de clases incluso si hay clases secundarias siempre y cuando el cambio no cause ningún conflicto con las clases secundarias. Por ejemplo, esta marca permite agregar una nueva propiedad a la clase base que no se mencionó anteriormente en ninguna de las clases secundarias. Si la clase tiene instancias, se produce un error en la actualización.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 Fuerza las actualizaciones de clases cuando existen clases secundarias en conflicto. Por ejemplo, esta marca fuerza una actualización si se define un calificador de clase en una clase secundaria y la clase base intenta agregar el mismo calificador que entra en conflicto con el existente. En este modo, el conflicto se resuelve eliminando el calificador en conflicto en la clase secundaria.

pCtx
[in] Normalmente, este valor es null. De lo contrario, es un puntero que apunta a una instancia de la interfaz IWbemContext que puede usarse en el proveedor que proporciona las clases que se solicitan.

ppCallResult
[out] Si el valor es null, este parámetro no se usa. Si el parámetro lFlags contiene la marca WBEM_FLAG_RETURN_IMMEDIATELY, la función se devolverá inmediatamente con el valor WBEM_S_NO_ERROR. El parámetro ppCallResult se usa para obtener un puntero que apunta a un nuevo objeto IWbemCallResult.

Valor devuelto

Los siguientes valores que devuelve esta función se definen en el archivo de encabezado WbemCli.h, aunque también puede definirlos como constantes en el código. Puede consultarlos a continuación:

Constante Value Descripción
WBEM_E_ACCESS_DENIED 0x80041003 El usuario no tiene permiso para crear o modificar clases.
WBEM_E_FAILED 0x80041001 Error no especificado.
WBEM_E_INVALID_CLASS 0x80041010 La clase especificada no es válida. Normalmente, esto indica que pObject especifica un objeto de instancia.
WBEM_E_INVALID_PARAMETER 0x80041008 Un parámetro no es válido.
WBEM_E_INVALID OPERATION 0x80041016 El nombre de clase especificado no es válido.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 Se intentó realizar un cambio que invalidaría una subclase.
WBEM_E_ALREADY_EXISTS 0x80041019 Se especificó la marca WBEM_FLAG_CREATE_ONLY, pero la clase ya existe.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY se especificó en lFlags y no se encontró la clase.
WBEM_E_INCOMPLETE_CLASS 0x80041020 No se han establecido todas las propiedades necesarias para las clases.
WBEM_E_OUT_OF_MEMORY 0x80041006 Memoria insuficiente para completar la operación.
WBEM_E_SHUTTING_DOWN 0x80041033 Si se devuelve este valor, significa que es probable que WMI se encontrara en un proceso de detención y reinicio. En este caso, vuelva a llamar a la función ConnectServerWmi.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Si se devuelve este valor, significará que ha ocurrido un error en el vínculo de llamada a procedimiento remoto (RPC) entre el proceso actual y WMI.
WBEM_S_NO_ERROR 0 Si se devuelve este valor, significará que la llamada a la función se realizó correctamente.

Comentarios

Esta función encapsula una llamada al método IWbemServices::PutClass.

Es posible que el usuario no cree clases con nombres que comiencen o terminen con un carácter de subrayado.

Si se produce un error en la llamada a la función, podrá obtener información adicional sobre este mediante una llamada a la función GetErrorInfo.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: WMINet_Utils.idl

Versiones de .NET Framework: está disponible desde la versión 4.7.2

Consulte también