PutClassWmi-Funktion

Erstellt eine neue Klasse oder aktualisiert eine vorhandene Klasse.

Hinweis

Diese API ist ausschließlich für die interne Verwendung vorgesehen. Sie ist nicht für die Verwendung im Entwicklercode vorgesehen.

Syntax

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

Parameter

pObject
[in] Ein Zeiger auf eine gültige Klassendefinition. Muss ordnungsgemäß mit allen erforderlichen Eigenschaftswerten initialisiert werden.

lFlags
[in] Eine Kombination von Flags, die das Verhalten dieser Funktion beeinflussen. Die folgenden Werte werden in der WbemCli.h-Headerdatei definiert, oder Sie können sie als Konstanten im Code definieren:

Konstante Wert BESCHREIBUNG
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Wenn festgelegt, speichert WMI keine Qualifizierer mit der geänderten Variante.
Wenn nicht festgelegt, wird davon ausgegangen, dass dieses Objekt nicht lokalisiert ist, und alle Qualifizierer werden mit dieser Instanz gespeichert.
WBEM_FLAG_CREATE_OR_UPDATE 0 Erstellen Sie die Klasse, wenn sie nicht vorhanden ist, oder überschreiben Sie sie, wenn sie bereits vorhanden ist.
WBEM_FLAG_UPDATE_ONLY 1 Aktualisieren der Klasse. Die Klasse muss vorhanden sein, damit der Aufruf erfolgreich ist.
WBEM_FLAG_CREATE_ONLY 2 Erstellen der Klasse. Der Aufruf schlägt fehl, wenn die Klasse bereits vorhanden ist.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Das Flag verursacht einen halbsynchronen Aufruf.
WBEM_FLAG_OWNER_UPDATE 0x10000 Pushanbieter müssen dieses Flag beim Aufrufen von PutClassWmi angeben, um anzuzeigen, dass sich diese Klasse geändert hat.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Ermöglicht das Aktualisieren einer Klasse, wenn keine abgeleiteten Klassen und keine Instanzen dieser Klasse vorhanden sind. Es ermöglicht außerdem Aktualisierungen in allen Fällen, wenn die Änderung nur an unwichtigen Qualifizierern wie dem Beschreibungsqualifizierer vorgenommen wird. Wenn die Klasse über Instanzen verfügt oder Änderungen an wichtigen Qualifizierern vorgenommen werden, schlägt die Aktualisierung fehl.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Ermöglicht Aktualisierungen von Klassen auch dann, wenn untergeordnete Klassen vorhanden sind, solange die Änderung keine Konflikte mit untergeordneten Klassen verursacht. Mit diesem Flag kann z. B. der Basisklasse eine neue Eigenschaft hinzugefügt werden, die zuvor in keiner der untergeordneten Klassen erwähnt wurde. Wenn die Klasse über Instanzen verfügt, schlägt die Aktualisierung fehl.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 Erzwingt Aktualisierungen von Klassen, wenn in Konflikt stehende untergeordnete Klassen vorhanden sind. Beispielsweise erzwingt dieses Flag eine Aktualisierung, wenn ein Klassenqualifizierer in einer untergeordneten Klasse definiert ist, und die Basisklasse versucht, denselben Qualifizierer hinzuzufügen, der mit dem vorhandenen in Konflikt steht. Im Erzwingungsmodus wird dieser Konflikt gelöst, indem der in Konflikt stehende Qualifizierer in der untergeordneten Klasse gelöscht wird.

pCtx
[in] In der Regel ist dieser Wert null. Andernfalls handelt es sich um einen Zeiger auf eine IWbemContext-Instanz, die von dem Anbieter verwendet werden kann, der die angeforderten Klassen bereitstellt.

ppCallResult
[out] Wenn null, wird dieser Parameter nicht verwendet. Wenn lFlagsWBEM_FLAG_RETURN_IMMEDIATELY enthält, wird die Funktion sofort mit WBEM_S_NO_ERROR zurückgegeben. Der ppCallResult-Parameter empfängt einen Zeiger auf ein neues IWbemCallResult-Objekt.

Rückgabewert

Die folgenden von dieser Funktion zurückgegebenen Werte werden in der WbemCli.h-Headerdatei definiert, oder Sie können sie als Konstanten im Code definieren:

Konstante Wert BESCHREIBUNG
WBEM_E_ACCESS_DENIED 0x80041003 Der Benutzer verfügt über keine Berechtigungen zum Erstellen oder Ändern von Klassen.
WBEM_E_FAILED 0x80041001 Ein unbekannter Fehler ist aufgetreten.
WBEM_E_INVALID_CLASS 0x80041010 Die angegebene Klasse ist ungültig. In der Regel zeigt dies an, dass pObject ein Instanzobjekt angibt.
WBEM_E_INVALID_PARAMETER 0x80041008 Ein Parameter ist nicht gültig.
WBEM_E_INVALID OPERATION 0x80041016 Der angegebene Klassenname ist ungültig.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 Es wurde versucht, eine Änderung vorzunehmen, durch die eine Unterklasse ungültig würde.
WBEM_E_ALREADY_EXISTS 0x80041019 Das WBEM_FLAG_CREATE_ONLY-Flag wurde angegeben, aber die Klasse ist bereits vorhanden.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY wurde in lFlags angegeben, und die Klasse wurde nicht gefunden.
WBEM_E_INCOMPLETE_CLASS 0x80041020 Die erforderlichen Eigenschaften für Klassen wurden nicht alle festgelegt.
WBEM_E_OUT_OF_MEMORY 0x80041006 Es ist nicht genügend Arbeitsspeicher verfügbar, um den Vorgang abzuschließen.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI wurde wahrscheinlich beendet und startet neu. Rufen Sie ConnectServerWmi erneut auf.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Fehler bei der Remoteprozeduraufruf-Verbindung (RPC) zwischen dem aktuellen Prozess und WMI.
WBEM_S_NO_ERROR 0 Der Funktionsaufruf war erfolgreich.

Bemerkungen

Diese Funktion umschließt einen Aufruf der IWbemServices::PutClass-Methode.

Der Benutzer darf keine Klassen mit Namen erstellen, die mit einem Unterstrich beginnen oder enden.

Wenn der Funktionsaufruf fehlschlägt, können Sie zusätzliche Fehlerinformationen abrufen, indem Sie die GetErrorInfo-Funktion aufrufen.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: WMINet_Utils.idl

.NET Framework-Versionen: Seit Version 4.7.2 verfügbar

Weitere Informationen