SWbemObject.Put_ 메서드
SWbemObject의 Put_ 메서드는 인스턴스 또는 클래스 개체를 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 |
헤더 |
|
유형 라이브러리 |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |