SWbemObject.Put_ 메서드

SWbemObjectPut_ 메서드는 인스턴스 또는 클래스 개체를 WMI(Windows Management Instrumentation)로 만들거나 업데이트합니다. SWbemObject에서 속성 또는 메서드를 수정하고 변경 내용이 WMI에 기록된 후에 이 메서드를 사용할 수 있습니다.

이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.

구문

objObjectPath = .Put_( _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

매개 변수

iFlags [in, optional]

이 매개 변수는 호출이 클래스 또는 인스턴스를 만들거나 업데이트하는지, 호출이 즉시 반환되는지 여부를 결정합니다. 이 매개 변수는 다음 값을 허용할 수 있습니다.

wbemChangeFlagUpdateCompatible (0 (0x0))

파생 클래스가 없고 해당 클래스의 인스턴스가 없는 경우 클래스를 업데이트할 수 있습니다. 중요하지 않은 한정자(예: 설명 한정자)만 변경되는 경우 모든 경우에 업데이트를 허용합니다. 이 호출의 기본 동작이며 이전 버전의 WMI와의 호환성에 사용됩니다. 클래스에 인스턴스가 있는 경우 업데이트가 실패합니다.

wbemChangeFlagUpdateSafeMode(32 (0x20))

변경으로 인해 자식 클래스와 충돌하지 않는 한, 자식 클래스가 있더라도 클래스를 업데이트할 수 있습니다. 자식 클래스에서 이전에 언급되지 않은 기본 클래스에 새 속성을 추가할 때 이 플래그를 사용할 수 있습니다. 클래스에 인스턴스가 있는 경우 업데이트가 실패합니다. 클래스에 인스턴스가 있는 경우 업데이트가 실패합니다.

WbemChangeFlagUpdateForceMode(64 (0x40))

이 플래그는 충돌하는 자식 클래스가 있을 때 클래스를 강제로 업데이트합니다. 예를 들어 이 플래그는 클래스 한정자를 자식 클래스에 정의한 경우 업데이트를 강제로 수행하며 기본 클래스는 기존 클래스와 충돌하는 동일한 한정자를 추가하려고 합니다. 강제 모드에서는 자식 클래스에서 충돌하는 한정자를 삭제하여 이 충돌이 해결됩니다. 클래스에 인스턴스가 있는 경우 업데이트가 실패합니다.

강제 모드를 사용하여 정적 클래스를 업데이트하면 해당 클래스의 모든 인스턴스가 삭제됩니다. 공급자 클래스의 강제 업데이트는 클래스의 인스턴스를 삭제하지 않습니다.

wbemChangeFlagCreateOrUpdate (0 (0x0))

클래스 또는 인스턴스가 없는 경우 생성되거나 이미 있는 경우 덮어쓰도록 합니다.

wbemChangeFlagCreateOnly (2 (0x2))

만들기에만 사용됩니다. 클래스 또는 인스턴스가 이미 있는 경우 호출이 실패합니다.

wbemChangeFlagUpdateOnly (1 (0x1))

이 호출이 업데이트되도록 합니다. 호출에 성공하려면 클래스 또는 인스턴스가 있어야 합니다.

wbemFlagReturnImmediately (16 (0x10))

호출이 즉시 반환되도록 합니다.

wbemFlagReturnWhenComplete(0(0x0))

쿼리가 완료될 때까지 이 호출을 차단합니다.

wbemFlagUseAmendedQualifiers(131072 (0x20000))

WMI가 기본 클래스 정의와 함께 클래스 수정 데이터를 반환하도록 합니다. 수정된 한정자에 대한 자세한 내용은 WMI 클래스 정보 지역화를 참조하세요.

objwbemNamedValueSet [in, optional]

일반적으로 이는 정의되지 않습니다. 그렇지 않으면 요청을 서비스하는 공급자가 사용할 수 있는 컨텍스트 정보를 나타내는 요소가 있는 개체입니다. 이러한 정보를 지원하거나 요구하는 공급자는 인식된 값 이름, 값의 데이터 형식, 허용된 값 및 의미 체계를 문서화해야 합니다.

반환 값

호출이 성공하면 SWbemObjectPath 개체가 반환됩니다. 이 개체는 WMI에 성공적으로 커밋된 인스턴스 또는 클래스의 개체 경로를 포함합니다.

오류 코드

Put_ 메서드가 완료되면 Err 개체에 다음 목록의 오류 코드 중 하나가 포함될 수 있습니다.

wbemErrAccessDenied - 2147749891

현재 사용자에게 지정된 클래스의 인스턴스를 업데이트할 권한이 없습니다.

wbemErrAlreadyExists - 2147749913 (0x80041019)

wbemChangeFlagCreateOnly 플래그를 지정했지만 인스턴스가 이미 존재합니다.

wbemErrFailed - 2147749889(0x80041001)

알 수 없는 오류입니다.

wbemErrIllegalNull - 2147749898 (0x8004100A)

Nothing이 아닐 수 있는 속성에 대해 Nothing 값이 지정되었습니다. 이러한 속성의 예제는 Key,Indexed 또는 Not_Null 한정자로 표시된 속성입니다.

wbemErrInvalidObject - 2147749908(0x80041014)

지정된 인스턴스가 잘못된 경우

wbemErrInvalidParameter - 0x80041008

지정된 매개 변수가 잘못되었습니다.

wbemErrNotFound - 2147749890(0x80041002)

wbemChangeFlagUpdateOnly 플래그가 지정되었지만 인스턴스 또는 클래스가 없습니다.

wbemErrIncompleteClass - 2147749920(0x80041020)

클래스에 필요한 속성이 일부만 설정되었습니다.

wbemErrOutOfMemory - 2147749894(0x80041006)

메모리가 부족하여 작업을 완료할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
헤더
Wbemdisp.h
유형 라이브러리
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

추가 정보

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier