Compartir a través de


Método SWbemObject.PutAsync_

El método PutAsync_ de SWbemObject crea o actualiza de forma asincrónica una instancia o un objeto de clase a Instrumental de administración de Windows (WMI). Puede usar este método después de modificar las propiedades o métodos de SWbemObject, y los cambios se escriben en WMI.

Para obtener una explicación de esta sintaxis, consulte Convenciones de documentación para la API de scripting.

Sintaxis

SWbemObject.PutAsync_( _
  ByVal objWbemSink, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parámetros

objWbemSink [en]

Necesario. Receptor de objetos que recibe de forma asincrónica el resultado de la operación put.

iFlags [entrada, opcional]

Determina si la llamada crea o actualiza la clase o instancia y si la llamada se devuelve inmediatamente. Este parámetro puede aceptar los siguientes valores.

wbemChangeFlagUpdateCompatible (0 (0x0))

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 (por ejemplo, el calificador Description). Este es el comportamiento predeterminado de esta llamada y se usa para la compatibilidad con versiones anteriores de WMI. Si la clase tiene instancias, se produce un error en la actualización.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Permite actualizaciones de clases incluso si hay clases secundarias siempre y cuando el cambio no cause ningún conflicto con las clases secundarias. Se puede usar esta marca para 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.

WbemChangeFlagUpdateForceMode (64 (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 en conflicto con el existente. En este modo, el conflicto se resuelve eliminando el calificador en conflicto en la clase secundaria. Si la clase tiene instancias, se produce un error en la actualización.

El uso del modo force para actualizar una clase estática da como resultado la eliminación de todas las instancias de esa clase. Una actualización forzada en una clase de proveedor no elimina instancias de la clase.

wbemChangeFlagCreateOrUpdate (0 (0x0))

Hace que la clase o instancia se cree si no existe o se sobrescribe si ya existe.

wbemChangeFlagCreateOnly (2 (0x2))

Se usa solo para la creación. Se produce un error en la llamada si la clase ya existe.

wbemChangeFlagUpdateOnly (1 (0x1))

Hace que esta llamada se actualice. La clase o la instancia debe existir para que la llamada se realice correctamente.

wbemFlagReturnImmediately (16 (0x10))

Hace que la llamada se devuelva inmediatamente.

wbemFlagReturnWhenComplete (0 (0x0))

Hace que esta llamada se bloquee hasta que se haya completado la consulta.

wbemFlagSendStatus (128 (0x80))

Hace que las llamadas asincrónicas envíen actualizaciones de estado al controlador de eventos SWbemSink.OnProgress para el receptor de objetos.

wbemFlagDontSendStatus (0 (0x0))

Impide que las llamadas asincrónicas envíen actualizaciones de estado al controlador de eventos OnProgress para el receptor de objetos.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Hace que WMI escriba datos de modificación de clase junto con la definición de clase base. Para obtener más información sobre los calificadores modificados, consulte Localizar información de clase WMI.

objWbemNamedValueSet [entrada, opcional]

Normalmente, esto no está definido. De lo contrario, se trata de un objeto SWbemNamedValueSet cuyos elementos representan la información de contexto que puede usar el proveedor que atiende la solicitud. Un proveedor que admita o necesite esta información debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.

objWbemAsyncContext [entrada, opcional]

Se trata de un objeto SWbemNamedValueSet que se devuelve al receptor del objeto para identificar el origen de la llamada asincrónica original. Use este parámetro si realiza varias llamadas asincrónicas mediante el mismo receptor de objetos. Para usar este parámetro, cree un objeto SWbemNamedValueSet y use el método SWbemNamedValueSet.Add para agregar un valor que identifique la llamada asincrónica que realiza. Este objeto SWbemNamedValueSet se devuelve al receptor del objeto y el origen de la llamada se puede extraer mediante el método SWbemNamedValueSet.Item. Para más información, vea Llamada a un método.

Valor devuelto

Este método no devuelve ningún valor. Si la llamada se realiza correctamente, el evento OnObjectPut del receptor de objetos proporcionado recibe un objeto SWbemObjectPath, que contiene la ruta de acceso del objeto de la instancia o clase que se confirma correctamente en WMI.

Códigos de error

Después de completar el método PutAsync_, el objeto Err puede contener uno de los códigos de error de la lista siguiente.

wbemErrAccessDenied - 2147749891 (0x80041003)

Si se devuelve este valor, el usuario actual no tiene permiso para actualizar una instancia de la clase que se especifica.

wbemErrAlreadyExists: 2147749913 (0x80041019)

Se especificó el indicador wbemChangeFlagCreateOnly, pero la instancia ya existe.

wbemErrFailed: 2147749889 (0x80041001)

Error no especificado.

wbemErrIllegalNull: 2147749898 (0x8004100A)

Se especificó un valor de Nothing (Nada) para una propiedad que puede no ser Nothing. Un ejemplo de esta propiedad es uno marcado por un calificador Key, Indexed o Not_Null.

wbemErrInvalidObject - 2147749908 (0x80041014)

La instancia especificada no es válida.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un parámetro especificado no es válido.

wbemErrNotFound: 2147749890 (0x80041002)

Se especificó la marca wbemChangeFlagUpdateOnly, pero la instancia o la clase no existe.

wbemErrIncompleteClass: 2147749920 (0x80041020)

No se han establecido todas las propiedades necesarias para las clases.

wbemErrOutOfMemory: 2147749894 (0x80041006)

No hay suficiente memoria para completar la operación.

Comentarios

Esta llamada se devuelve inmediatamente y el resultado de la operación put se devuelve al autor de la llamada a través de devoluciones de llamada entregadas al receptor especificado en objWbemSink. Implemente objWbemSink. Método OnObjectPut para obtener la ruta de acceso del objeto de la instancia o clase que se escribe en el repositorio de WMI. Para obtener más información sobre los métodos de receptor, vea Llamar a un método.

Una devolución de llamada asincrónica permite a un usuario no autenticado proporcionar datos al receptor. Esto supone riesgos de seguridad para los scripts y las aplicaciones. Para eliminar los riesgos, use la comunicación semisincrónica o sincrónica. Para más información, consulte Llamada a un método.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Consulte también

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier