SWbemObject.PutAsync_ 메서드
SWbemObject의 PutAsync_ 메서드는 인스턴스 또는 클래스 개체를 WMI(Windows Management Instrumentation)로 비동기적으로 만들거나 업데이트합니다. SWbemObject에서 속성 또는 메서드를 수정하고 변경 내용이 WMI에 기록된 후에 이 메서드를 사용할 수 있습니다.
이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.
구문
SWbemObject.PutAsync_( _
ByVal objWbemSink, _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
매개 변수
-
objWbemSink [in]
-
필수 요소. put 작업의 결과를 비동기적으로 수신하는 개체 싱크입니다.
-
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))
-
쿼리가 완료될 때까지 이 호출을 차단합니다.
-
wbemFlagSendStatus (128 (0x80))
-
비동기 호출이 개체 싱크에 대한 SWbemSink.OnProgress 이벤트 처리기로 상태 업데이트를 보내도록 합니다.
-
wbemFlagDontSendStatus (0 (0x0))
-
비동기 호출이 개체 싱크에 대한 OnProgress 이벤트 처리기로 상태 업데이트를 보내지 않도록 방지합니다.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
WMI가 기본 클래스 정의와 함께 클래스 수정 데이터를 작성하도록 합니다. 수정된 한정자에 대한 자세한 내용은 WMI 클래스 정보 지역화를 참조하세요.
objWbemNamedValueSet [in, optional]
일반적으로 이는 정의되지 않습니다. 그렇지 않으면 요청을 서비스하는 공급자가 사용할 수 있는 컨텍스트 정보를 나타내는 요소가 있는 SWbemNamedValueSet 개체입니다. 이런 정보를 지원하거나 요구하는 공급자는 인식된 값 이름, 값의 데이터 형식, 허용된 값 및 의미 체계를 문서화해야 합니다.
objWbemAsyncContext [in, optional]
원래 비동기 호출의 원본을 식별하기 위해 개체 싱크로 반환되는 SWbemNamedValueSet 개체입니다. 동일한 개체 싱크를 사용하여 여러 비동기 호출을 수행하는 경우 이 매개 변수를 사용합니다. 이 매개 변수를 사용하려면 SWbemNamedValueSet 개체를 만들고 SWbemNamedValueSet.Add 메서드를 사용하여 수행 중인 비동기 호출을 식별하는 값을 추가합니다. 이 SWbemNamedValueSet 개체는 개체 싱크로 반환되며 SWbemNamedValueSet.Item 메서드를 사용하여 호출 원본을 추출할 수 있습니다. 자세한 내용은 메서드 호출을 참조하세요.
반환 값
이 메서드는 값을 반환하지 않습니다. 호출이 성공하면 제공된 개체 싱크의 OnObjectPut 이벤트는 WMI에 성공적으로 커밋된 인스턴스 또는 클래스의 개체 경로를 포함하는 SWbemObjectPath 개체를 받습니다.
오류 코드
PutAsync_ 메서드가 완료되면 Err 개체에 다음 목록의 오류 코드 중 하나가 포함될 수 있습니다.
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
현재 사용자에게 지정된 클래스의 인스턴스를 업데이트할 권한이 없습니다.
-
wbemErrAlreadyExists - 2147749913 (0x80041019)
-
wbemChangeFlagCreateOnly 플래그를 지정했지만 인스턴스가 이미 존재합니다.
-
wbemErrFailed - 2147749889(0x80041001)
-
알 수 없는 오류입니다.
-
wbemErrIllegalNull - 2147749898 (0x8004100A)
-
Nothing이 아닐 수 있는 속성에 대해 Nothing 값이 지정되었습니다. 해당 속성의 예는 키, 인덱싱 또는 Not_Null 한정자로 표시된 속성입니다.
-
wbemErrInvalidObject - 2147749908 (0x80041014)
-
지정된 인스턴스가 잘못된 경우
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
지정된 매개 변수가 잘못되었습니다.
-
wbemErrNotFound - 2147749890(0x80041002)
-
wbemChangeFlagUpdateOnly 플래그가 지정되었지만 인스턴스 또는 클래스가 없습니다.
-
wbemErrIncompleteClass - 2147749920(0x80041020)
-
클래스에 필요한 속성이 일부만 설정되었습니다.
-
wbemErrOutOfMemory - 2147749894(0x80041006)
-
메모리가 부족하여 작업을 완료할 수 없습니다.
설명
이 호출은 즉시 반환되고 put 작업의 결과는 objWbemSink에 지정된 싱크에 전달된 콜백을 통해 호출자에게 반환됩니다. objWbemSink를 구현합니다. OnObjectPut 메서드는 WMI 리포지토리에 기록된 인스턴스 또는 클래스의 개체 경로를 가져옵니다. 싱크 메서드에 대한 자세한 내용은 메서드 호출을 참조하세요.
비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이로 인해 스크립트 및 애플리케이션에 보안 위험이 발생할 수 있습니다. 위험을 제거하려면 반동기 또는 동기 통신을 사용합니다. 자세한 내용은 메서드 호출을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista |
지원되는 최소 서버 |
Windows Server 2008 |
헤더 |
|
유형 라이브러리 |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |