Método SWbemServicesEx.PutAsync

El método PutAsync del objeto SWbemServicesEx guarda un objeto de forma asincrónica en un espacio de nombres. Cuando se ejecuta correctamente, este método envía un evento OnCompleted al objeto SWbemSink especificado como parámetro de entrada.

Se llama al método en el modo asincrónico. Para más información, vea Llamada a un método.

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

Sintaxis

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parámetros

objWbemSink

Necesario. Receptor de objetos que recibe los objetos de forma asincrónica. Cree un objeto SWbemSink para recibir los objetos.

ojbWbemObject

Necesario. Nuevo objeto que se va a colocar en el espacio de nombres. Puede ser un objeto recién creado o un objeto modificado.

iFlags [opcional]

Este parámetro determina si la llamada crea o actualiza el objeto y si la llamada devuelve inmediatamente. Este parámetro puede aceptar los valores siguientes.

wbemChangeFlagUpdateCompatible (0 (0x0))

Permite actualizar una clase cuando no existen clases derivadas ni instancias para la clase. También permite actualizaciones en todos los casos en los que el cambio solo afecta a calificadores sin importancia, por ejemplo, el calificador Descripción. 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 actualizar las clases aunque haya clases secundarias y el cambio no cause conflictos con las clases secundarias. Use esta marca al agregar una nueva propiedad a una 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))

Esta marca fuerza la actualización de las clases cuando existen clases secundarias en conflicto. Por ejemplo, esta marca fuerza una actualización cuando se define un calificador de clase en una clase secundaria, y la clase base intenta añadir 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 de fuerza para actualizar una clase estática provoca 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 complete la consulta. Esta marca llama al método en el modo sincrónico.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Hace que WMI escriba datos de modificación de clase y la definición de clase base. Para obtener más información, vea Localización de información de clases WMI.

objWbemNamedValueSet [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 esa información debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.

objWbemAsyncContext [opcional]

Objeto SWbemNamedValueSet que se devuelve al receptor del objeto para identificar el origen de la llamada asincrónica original. Use este parámetro para realizar varias llamadas asincrónicas con 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 null para una propiedad que no puede ser Null. 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 los resultados y el estado se devuelven al autor de la llamada a través de eventos entregados al receptor especificado en objWbemSink. Para controlar cada objeto cuando llegue, cree una subrutina de eventos objWbemSink.OnObjectReady. Cualquier procesamiento realizado después de que todos los objetos lleguen se realice en una subrutina para objWbemSink. Evento OnCompleted.

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, consulte Establecimiento de la seguridad en una llamada asincrónica.

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_ISWbemServicesEx
IID
IID_ISWbemServicesEx