Condividi tramite


metodo SWbemObject.PutAsync_

Il metodo PutAsync_ di SWbemObject crea o aggiorna in modo asincrono un'istanza o un oggetto classe a Strumentazione gestione Windows (WMI). È possibile usare questo metodo dopo aver modificato le proprietà o i metodi in SWbemObject e le modifiche vengono scritte in WMI.

Per una spiegazione di questa sintassi, vedere Document Conventions per l'API di scripting.

Sintassi

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

Parametri

objWbemSink [in]

Obbligatorio. Sink oggetto che riceve in modo asincrono il risultato dell'operazione put .

iFlags [in, facoltativo]

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

wbemChangeFlagUpdateCompatible (0 (0x0))

Consente l'aggiornamento di una classe se non sono presenti classi derivate e non sono presenti istanze per tale classe. Consente anche gli aggiornamenti in tutti i casi se la modifica è solo per qualificatori non importanti (ad esempio il qualificatore Descrizione ). Questo è il comportamento predefinito per questa chiamata e viene usato per la compatibilità con le versioni precedenti di WMI. Se la classe ha istanze dell'aggiornamento ha esito negativo.

wbemChangeFlagUpdateSafeMode (32 (0x20))

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

WbemChangeFlagUpdateForceMode (64 (0x40))

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

L'uso della modalità forza per aggiornare una classe statica comporta 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))

Fa sì che la classe o l'istanza venga creata se non esiste o sovrascritta se esiste già.

wbemChangeFlagCreateOnly (2 (0x2))

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

wbemChangeFlagUpdateOnly (1 (0x1))

Fa sì che questa chiamata venga aggiornata. La classe o l'istanza deve esistere affinché la chiamata venga eseguita correttamente.

wbemFlagReturnImmediately (16 (0x10))

Fa sì che la chiamata venga restituita immediatamente.

wbemFlagReturnWhenComplete (0 (0x0))

Determina il blocco di questa chiamata fino al completamento della query.

wbemFlagSendStatus (128 (0x80))

Fa sì che le chiamate asincrone inviino aggiornamenti dello stato al gestore eventi SWbemSink.OnProgress per il sink dell'oggetto.

wbemFlagDontSendStatus (0 (0x0))

Impedisce alle chiamate asincrone di inviare aggiornamenti dello stato al gestore eventi OnProgress per il sink dell'oggetto.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Fa sì che WMI scriva i dati di modifica della classe insieme alla definizione della classe di base. Per altre informazioni sui qualificatori modificati, vedere Localizzazione delle informazioni sulla classe WMI.

objWbemNamedValueSet [in, facoltativo]

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

objWbemAsyncContext [in, facoltativo]

Si tratta di un oggetto SWbemNamedValueSet che restituisce al sink dell'oggetto per identificare l'origine della chiamata asincrona originale. Utilizzare questo parametro se si eseguono più chiamate asincrone usando lo stesso sink dell'oggetto. Per utilizzare questo parametro, creare un oggetto SWbemNamedValueSet e utilizzare 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 contenente il percorso dell'oggetto dell'istanza o della classe di cui è stato eseguito correttamente il commit in WMI.

Codici di errore

Dopo il completamento 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)

È stato specificato il flag wbemChangeFlagCreateOnly , ma l'istanza esiste già.

wbemErrFailed - 2147749889 (0x80041001)

Errore non specificato.

wbemErrIllegalNull - 2147749898 (0x8004100A)

È stato specificato un valore Nothing per una proprietà che potrebbe non essere Nothing. Un esempio di tale proprietà è quello contrassegnato da un qualificatore Key, Indexed o Not_Null .

wbemErrInvalidObject - 2147749908 (0x80041014)

L'istanza specificata non è valida.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un parametro specificato non è valido.

wbemErrNotFound - 2147749890 (0x80041002)

È stato specificato il flag wbemChangeFlagUpdateOnly , ma l'istanza o la classe non esiste.

wbemErrIncompleteClass - 2147749920 (0x80041020)

Le proprietà obbligatorie per le classi non sono state impostate tutte.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memoria insufficiente per completare l'operazione.

Commenti

Questa chiamata restituisce immediatamente e il risultato dell'operazione put viene restituito al chiamante tramite callback recapitati al sink specificato in objWbemSink. Implementare objWbemSink. Metodo OnObjectPut per ottenere il percorso dell'oggetto dell'istanza o della classe scritta nel repository WMI. Per altre informazioni sui metodi sink, vedere Chiamata di un metodo.

Un callback asincrono consente a un utente non autenticato di fornire dati al sink. Ciò comporta rischi per la sicurezza per gli script e le applicazioni. Per eliminare i rischi, usare la comunicazione semiincrona o sincrona. Per altre informazioni, vedere Chiamata di un metodo.

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_SWbemObject
IID
IID_ISWbemObject

Vedi anche

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier