Condividi tramite


Funzione PutInstanceWmi

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

Annotazioni

Questa API è solo per uso interno. Non è destinato 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 Value Description
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se impostato, WMI non archivia i qualificatori con il Amended sapore.
Se non è impostato, 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 di . L'istanza deve esistere affinché la chiamata venga completata correttamente.
WBEM_FLAG_CREATE_ONLY 2 Creare l'istanza di . La chiamata ha esito negativo se l'istanza esiste già.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Il flag genera una chiamata semisincrona.

pCtx
[in] In genere, questo valore è null. In caso contrario, è un puntatore a un'istanza di 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 Value Description
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 Indexed qualificatore 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 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.

Osservazioni:

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

La PutInstanceWmi funzione supporta la creazione di istanze e l'aggiornamento solo di istanze 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 punta appartiene 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ù in alto nella gerarchia viene chiamato per primo. L'ordine chiamante continua con la sottoclasse della classe topmost e procede dall'alto verso il basso fino a quando Gestione Windows 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 che appartiene 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 di , 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 non riesce, è possibile ottenere informazioni aggiuntive sull'errore chiamando la funzione GetErrorInfo .

Requisiti

Piattaforme: Vedere Requisiti di sistema.

Intestazione: WMINet_Utils.idl

Versioni di .NET Framework: Disponibile dalla versione 4.7.2

Vedere anche