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