Condividi tramite


Funzione PutInstanceWmi

Crea o aggiorna un'istanza di una classe esistente. L'istanza viene scritta nel repository WMI.

Nota

Questa API è solo per uso interno. Non è destinata all'uso dal codice dello sviluppatore.

Sintassi

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

Parametri

pInst
[in] Puntatore all'istanza da scrivere.

lFlags
[in] Combinazione di flag che influiscono sul comportamento di questa funzione. I valori seguenti sono definiti nel file di intestazione WbemCli.h oppure è possibile definirli come costanti nel codice:

Costante Valore Descrizione
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se impostato, WMI non archivia alcun qualificatore con il sapore modificato .
In caso contrario, si presuppone che questo oggetto non sia localizzato e che tutti i qualificatori vengano archiviati con questa istanza.
WBEM_FLAG_CREATE_OR_UPDATE 0 Creare l'istanza se non esiste o sovrascriverla se esiste già.
WBEM_FLAG_UPDATE_ONLY 1 Aggiornare l'istanza. L'istanza deve esistere affinché la chiamata venga completata correttamente.
WBEM_FLAG_CREATE_ONLY 2 Creare l'istanza. La chiamata ha esito negativo se l'istanza esiste già.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Il flag causa una chiamata semisynchronous.

pCtx
[in] In genere, questo valore è null. In caso contrario, si tratta di un puntatore a un'istanza IWbemContext che può essere usata dal provider che fornisce le classi richieste.

ppCallResult
[out] Se null, questo parametro non è usato. Se lFlags contiene WBEM_FLAG_RETURN_IMMEDIATELY, la funzione restituisce immediatamente con WBEM_S_NO_ERROR. Il ppCallResult parametro riceve un puntatore a un nuovo oggetto IWbemCallResult .

Valore restituito

I valori seguenti restituiti da questa funzione sono definiti nel file di intestazione WbemCli.h oppure è possibile definirli come costanti nel codice:

Costante Valore Descrizione
WBEM_E_ACCESS_DENIED 0x80041003 L'utente non dispone dell'autorizzazione per aggiornare un'istanza della classe specificata.
WBEM_E_FAILED 0x80041001 Si è verificato un errore non specificato.
WBEM_E_INVALID_CLASS 0x80041010 La classe che supporta questa istanza non è valida.
WBEM_E_ILLEGAL_NULL 0x80041028 è null stato specificato per una proprietà che non può essere null, ad esempio una proprietà contrassegnata da un qualificatore indicizzato o Not_Null .
WBEM_E_INVALID_OBJECT 0x8004100f L'istanza specificata non è valida. Ad esempio, la chiamata PutInstanceWmi con una classe restituisce questo valore.
WBEM_E_INVALID_PARAMETER 0x80041008 Un parametro non è valido.
WBEM_E_ALREADY_EXISTS 0x80041019 Il WBEM_FLAG_CREATE_ONLY flag è stato specificato, ma l'istanza esiste già.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY è stato specificato in lFlags, ma l'istanza non esiste.
WBEM_E_OUT_OF_MEMORY 0x80041006 Memoria insufficiente per completare l’operazione.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI è stato probabilmente arrestato e riavviato. Chiamare di nuovo ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Il collegamento RPC (Remote Procedure Call) tra il processo corrente e WMI non è riuscito.
WBEM_S_NO_ERROR 0 La chiamata di funzione ha avuto esito positivo.

Commenti

Questa funzione esegue il wrapping di una chiamata al metodo IWbemServices::P utInstance .

La PutInstanceWmi funzione supporta la creazione di istanze e l'aggiornamento di istanze solo di classi esistenti. A seconda della modalità di impostazione del pCtx parametro, vengono aggiornate alcune o tutte le proprietà dell'istanza.

Quando l'istanza a pInst cui fa riferimento appartiene a una sottoclasse, Gestione Windows chiama tutti i provider responsabili delle classi da cui deriva la sottoclasse. Tutti questi provider devono avere esito positivo affinché la richiesta originale PutInstanceWmi abbia esito positivo. Il provider che supporta la classe più alta nella gerarchia viene chiamato per primo. L'ordine di chiamata continua con la sottoclasse della classe topmost e procede dall'alto verso il basso fino a quando Gestione Windows non raggiunge il provider per la classe proprietaria dell'istanza a pInstcui punta . Gestione Windows non chiama i provider per nessuna delle classi figlio di un'istanza.

Quando un'applicazione deve aggiornare un'istanza appartenente a una gerarchia di classi, il pInst parametro deve puntare all'istanza contenente le proprietà da modificare. Si consideri quindi un'istanza di destinazione appartenente a ClassB. L'istanza ClassB deriva da ClassA e ClassA definisce la proprietà PropA. Se un'applicazione vuole apportare una modifica al valore di PropA nell'istanza ClassB , deve essere impostata su pInst tale istanza anziché su un'istanza di ClassA.

La chiamata PutInstanceWmi a un'istanza di una classe astratta non è consentita.

Se la chiamata di funzione ha esito negativo, è possibile ottenere informazioni aggiuntive sull'errore chiamando la funzione GetErrorInfo .

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: WMINet_Utils.idl

Versioni di .NET Framework: Disponibile dalla versione 4.7.2

Vedi anche