Compartir por


Función PutInstanceWmi

Crea o actualiza una instancia de una clase existente. La instancia se escribe en el repositorio WMI.

Nota:

Esta API es solo para uso interno. No está pensado para su uso desde el código de desarrollador.

Syntax

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

Parámetros

pInst
[in] Puntero a la instancia que se va a escribir.

lFlags
[in] Combinación de marcas que afectan al comportamiento de esta función. Los siguientes valores se definen en el archivo de encabezado WbemCli.h , o bien puede definirlos como constantes en el código:

Constante Importancia Description
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Si se establece, WMI no almacena ningún calificador con el Amended sabor.
Si no se establece, se supone que este objeto no está localizado y todos los calificadores se almacenan con esta instancia.
WBEM_FLAG_CREATE_OR_UPDATE 0 Cree la instancia si no existe o sobrescriba si ya existe.
WBEM_FLAG_UPDATE_ONLY 1 Actualice la instancia. La instancia debe existir para que la llamada sea correcta.
WBEM_FLAG_CREATE_ONLY 2 Cree la instancia. Se produce un error en la llamada si la instancia ya existe.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 La marca provoca una llamada semisincrónica.

pCtx
[in] Normalmente, este valor es null. De lo contrario, es un puntero a una instancia de IWbemContext que puede usar el proveedor que proporciona las clases solicitadas.

ppCallResult
[out] Si nulles , este parámetro no se usa. Si lFlags contiene WBEM_FLAG_RETURN_IMMEDIATELY, la función devuelve inmediatamente con WBEM_S_NO_ERROR. El ppCallResult parámetro recibe un puntero a un nuevo objeto IWbemCallResult .

Valor devuelto

Los siguientes valores devueltos por esta función se definen en el archivo de encabezado WbemCli.h , o bien puede definirlos como constantes en el código:

Constante Importancia Description
WBEM_E_ACCESS_DENIED 0x80041003 El usuario no tiene permiso para actualizar una instancia de la clase especificada.
WBEM_E_FAILED 0x80041001 Se ha producido un error no especificado.
WBEM_E_INVALID_CLASS 0x80041010 La clase que admite esta instancia no es válida.
WBEM_E_ILLEGAL_NULL 0x80041028 null se especificó para una propiedad que no puede ser null, como una que está marcada por un Indexed calificador o Not_Null .
WBEM_E_INVALID_OBJECT 0x8004100f La instancia especificada no es válida. (Por ejemplo, llamar a PutInstanceWmi con una clase devuelve este valor).
WBEM_E_INVALID_PARAMETER 0x80041008 Un parámetro no es válido.
WBEM_E_ALREADY_EXISTS 0x80041019 La WBEM_FLAG_CREATE_ONLY marca se especificó, pero la instancia ya existe.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY se especificó en lFlags, pero la instancia no existe.
WBEM_E_OUT_OF_MEMORY 0x80041006 No hay suficiente memoria disponible para completar la operación.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI probablemente se detuvo y se reiniciará. Vuelva a llamar a ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Error en el vínculo de llamada a procedimiento remoto (RPC) entre el proceso actual y WMI.
WBEM_S_NO_ERROR 0 La llamada de función se realizó correctamente.

Observaciones

Esta función ajusta una llamada al método IWbemServices::P utInstance .

La PutInstanceWmi función solo admite la creación de instancias y la actualización de instancias de clases existentes. Dependiendo de cómo se establezca el pCtx parámetro, se actualizan algunas o todas las propiedades de la instancia.

Cuando la instancia a pInst la que apunta pertenece a una subclase, Administración de Windows llama a todos los proveedores responsables de las clases de las que deriva la subclase. Todos estos proveedores deben realizarse correctamente para que la solicitud original PutInstanceWmi se realice correctamente. Primero se llama al proveedor que admite la clase superior de la jerarquía. El orden de llamada continúa con la subclase de la clase superior y continúa de arriba a abajo hasta que Administración de Windows alcanza el proveedor para la clase propietaria de la instancia a pInstla que apunta . Administración de Windows no llama a los proveedores para ninguna de las clases secundarias de una instancia.

Cuando una aplicación debe actualizar una instancia que pertenece a una jerarquía de clases, el pInst parámetro debe apuntar a la instancia que contiene las propiedades que se van a modificar. Es decir, considere la posibilidad de una instancia de destino que pertenezca a ClassB. La ClassB instancia deriva de ClassA y ClassA define la propiedad PropA. Si una aplicación desea realizar un cambio en el valor de PropA en la ClassB instancia, debe establecerse pInst en esa instancia en lugar de en una instancia de ClassA.

No se permite llamar a PutInstanceWmi en una instancia de una clase abstracta.

Si se produce un error en la llamada a la función, puede obtener información de error adicional llamando a la función GetErrorInfo .

Requisitos

Plataformas: Consulte Requisitos del sistema.

Encabezado: WMINet_Utils.idl

Versiones de .NET Framework: Disponible desde la versión 4.7.2

Consulte también