Condividi tramite


Metodo SWbemServicesEx.PutAsync

Il metodo PutAsync dell'oggetto SWbemServicesEx salva un oggetto in modo asincrono in uno spazio dei nomi. In caso di esito positivo, questo metodo invia un evento OnCompleted all'oggetto SWbemSink specificato come parametro di input.

Questo metodo viene chiamato nella modalità asincrona. Per altre informazioni, vedere Chiamata di un metodo.

Per una spiegazione di questa sintassi, vedere Convenzioni di documento per l'API scripting.

Sintassi

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

Parametri

objWbemSink

Obbligatorio. Sink oggetto che riceve gli oggetti in modo asincrono. Creare un oggetto SWbemSink per ricevere gli oggetti.

gubWbemObject

Obbligatorio. Nuovo oggetto da inserire nello spazio dei nomi. Può trattarsi di un oggetto appena creato o di un oggetto modificato.

iFlags [facoltativo]

Questo parametro determina se la chiamata crea o aggiorna l'oggetto e se la chiamata restituisce immediatamente. Questo parametro può accettare i valori seguenti.

wbemChangeFlagUpdateCompatible (0 (0x0))

Consente di aggiornare una classe quando non sono presenti classi derivate e nessuna istanza per la classe. Consente anche gli aggiornamenti in tutti i casi in cui la modifica è solo per qualificatori non importanti, ad esempio il qualificatore Descrizione . Si tratta del comportamento predefinito per questa chiamata e viene usato per la compatibilità con le versioni precedenti di WMI. Se la classe ha istanze, l'aggiornamento ha esito negativo.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Consente gli aggiornamenti delle classi anche quando sono presenti classi figlio e la modifica non causa conflitti con le classi figlio. Usare questo flag quando si aggiunge una nuova proprietà a una classe di base non menzionata in precedenza in nessuna delle classi figlio. Se la classe ha istanze, l'aggiornamento ha esito negativo.

wbemChangeFlagUpdateForceMode (64 (0x40))

Questo flag forza gli aggiornamenti delle classi quando esistono classi figlio in conflitto. Ad esempio, questo flag forza un aggiornamento quando un qualificatore di classe viene definito in una classe figlio e la classe base tenta di aggiungere lo stesso qualificatore in conflitto con quello esistente. Nella modalità di forza questo conflitto viene risolto eliminando il qualificatore in conflitto nella classe figlio. Se la classe ha istanze, l'aggiornamento ha esito negativo.

L'uso della modalità forza per aggiornare una classe statica causa l'eliminazione di tutte le istanze di tale classe. Un aggiornamento forzato in una classe provider non elimina le istanze della classe.

wbemChangeFlagCreateOrUpdate (0 (0x0))

Determina la creazione della classe o dell'istanza se non esiste o sovrascrive se esiste già.

wbemChangeFlagCreateOnly (2 (0x2))

Usato solo per la creazione. La chiamata ha esito negativo se la classe o l'istanza esiste già.

wbemChangeFlagUpdateOnly (1 (0x1))

Causa l'aggiornamento di questa chiamata. È necessario che la classe o l'istanza esistano per il successo della chiamata.

wbemFlagReturnImmediately (16 (0x10))

Causa la restituzione immediata della chiamata.

wbemFlagReturnWhenComplete (0 (0x0))

Causa il blocco della chiamata fino al completamento della query. Questo flag chiama il metodo nella modalità sincrona.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Consente a WMI di scrivere dati di modifica della classe e la definizione della classe di base. Per altre informazioni, vedere Localizzazione delle informazioni sulla classe WMI.

objWbemNamedValueSet [facoltativo]

In genere, questo è indefinito. In caso contrario, si tratta di un oggetto SWbemNamedValueSet i cui elementi rappresentano le informazioni di contesto che possono essere usate dal provider che esegue la richiesta. Un provider che supporta o richiede tali informazioni deve documentare i nomi di valore riconosciuti, il tipo di dati del valore, i valori consentiti e la semantica.

objWbemAsyncContext [facoltativo]

Oggetto SWbemNamedValueSet che restituisce al sink dell'oggetto per identificare l'origine della chiamata asincrona originale. Usare questo parametro per eseguire più chiamate asincrone usando lo stesso sink di oggetti. Per usare questo parametro, creare un oggetto SWbemNamedValueSet e usare il metodo SWbemNamedValueSet.Add per aggiungere un valore che identifica la chiamata asincrona eseguita. Questo oggetto SWbemNamedValueSet viene restituito al sink dell'oggetto e l'origine della chiamata può essere estratta usando il metodo SWbemNamedValueSet.Item . Per altre informazioni, vedere Chiamata di un metodo.

Valore restituito

Questo metodo non restituisce valori. Se la chiamata ha esito positivo, l'evento OnObjectPut del sink dell'oggetto fornito riceve un oggetto SWbemObjectPath , che contiene il percorso dell'oggetto dell'istanza o della classe che viene eseguito correttamente il commit a WMI.

Codici di errore

Al termine del metodo PutAsync , l'oggetto Err può contenere uno dei codici di errore nell'elenco seguente.

wbemErrAccessDenied - 2147749891 (0x80041003)

L'utente corrente non dispone dell'autorizzazione per aggiornare un'istanza della classe specificata.

wbemErrAlreadyExists - 2147749913 (0x80041019)

Il flag wbemChangeFlagCreateOnly è stato specificato, ma l'istanza esiste già.

wbemErrFailed - 2147749889 (0x80041001)

Errore non specificato.

wbemErrIllegalNull - 2147749898 (0x8004100A)

È stato specificato un valore Null per una proprietà che non può essere Null. Un esempio di tale proprietà è uno contrassegnato da un qualificatore Key, Indicizzato o Not_Null .

wbemErrInvalidObject - 2147749908 (0x80041014)

L'istanza specificata non è valida.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un parametro specificato non è valido.

wbemErrNotFound - 2147749890 (0x80041002)

Il flag wbemChangeFlagUpdateOnly è stato specificato, ma l'istanza o la classe non esiste.

wbemErrIncompleteClass - 2147749920 (0x80041020)

Le proprietà necessarie per le classi non sono tutte impostate.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memoria insufficiente per completare l'operazione.

Commenti

Questa chiamata restituisce immediatamente e i risultati e lo stato vengono restituiti al chiamante tramite eventi recapitati al sink specificato in objWbemSink. Per gestire ogni oggetto quando arriva, creare un objWbemSink. Subroutine dell'evento OnObjectReady . Qualsiasi elaborazione eseguita dopo l'arrivo di tutti gli oggetti viene eseguita in una subroutine per objWbemSink. Evento OnCompleted .

Un callback asincrono consente a un utente non autenticato di fornire dati al sink. Ciò comporta rischi di sicurezza per gli script e le applicazioni. Per eliminare i rischi, vedere Impostazione della sicurezza in una chiamata asincrona.

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Intestazione
Wbemdisp.h
Libreria dei tipi
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_ISWbemServicesEx
IID
IID_ISWbemServicesEx