Condividi tramite


Funzione PutClassWmi

Crea una nuova classe o ne aggiorna una esistente.

Nota

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

Sintassi

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

Parametri

pObject
[in] Puntatore a una definizione di classe valida. Deve essere inizializzato correttamente con tutti i valori di proprietà necessari.

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 la classe se non esiste o sovrascriverla se esiste già.
WBEM_FLAG_UPDATE_ONLY 1 Aggiornare la classe. La classe deve esistere per la corretta riuscita della chiamata.
WBEM_FLAG_CREATE_ONLY 2 Creare la classe. La chiamata ha esito negativo se la classe esiste già.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Il flag causa una chiamata semisynchronous.
WBEM_FLAG_OWNER_UPDATE 0x10000 I provider push devono specificare questo flag quando si chiama PutClassWmi per indicare che questa classe è stata modificata.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Consente l'aggiornamento di una classe se non sono presenti classi derivate e nessuna istanza di tale classe. Consente anche gli aggiornamenti in tutti i casi se la modifica è solo per qualificatori non importanti, ad esempio il qualificatore Descrizione. Se la classe ha istanze o modifiche sono di qualificatori importanti, l'aggiornamento ha esito negativo.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Consente gli aggiornamenti delle classi anche se sono presenti classi figlio, purché la modifica non causa conflitti con le classi figlio. Ad esempio, questo flag consente di aggiungere una nuova proprietà alla classe di base non menzionata in precedenza nelle classi figlio. Se la classe ha istanze, l'aggiornamento ha esito negativo.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 forza gli aggiornamenti delle classi quando esistono classi figlio in conflitto. Ad esempio, questo flag forza un aggiornamento se un qualificatore di classe è definito in una classe figlio e la classe base tenta di aggiungere lo stesso qualificatore che è in conflitto con quello esistente. In modalità di forza, il conflitto tis viene risolto eliminando il qualificatore in conflitto nella classe figlio.

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

ppCallResult
[out] Se null, questo parametro è inutilizzato. 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 creare o modificare le classi.
WBEM_E_FAILED 0x80041001 Si è verificato un errore non specificato.
WBEM_E_INVALID_CLASS 0x80041010 La classe specificata non è valida. In genere, questo indica che pObject specifica un oggetto di istanza.
WBEM_E_INVALID_PARAMETER 0x80041008 Un parametro non è valido.
WBEM_E_INVALID OPERATION 0x80041016 Il nome della classe specificato non è valido.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 È stato effettuato un tentativo di apportare una modifica che invaliderebbe una sottoclasse.
WBEM_E_ALREADY_EXISTS 0x80041019 Il WBEM_FLAG_CREATE_ONLY flag è stato specificato, ma la classe esiste già.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY è stato specificato in lFlagse la classe non è stata trovata.
WBEM_E_INCOMPLETE_CLASS 0x80041020 Le proprietà necessarie per le classi non sono tutte impostate.
WBEM_E_OUT_OF_MEMORY 0x80041006 Memoria insufficiente per completare l’operazione.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI probabilmente è stato 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 alla funzione ha avuto esito positivo.

Commenti

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

L'utente potrebbe non creare classi con nomi che iniziano o terminano con un carattere di sottolineatura.

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

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: WMINet_Utils.idl

Versioni di .NET Framework: Disponibile da 4.7.2

Vedi anche