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 pInst
cui 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