다음을 통해 공유


SWbemServicesEx.PutAsync 메서드

SWbemServicesEx 개체의 PutAsync 메서드는 개체를 네임스페이스에 비동기적으로 저장합니다. 성공하면 이 메서드는 입력 매개 변수로 지정된 SWbemSink 개체에 OnCompleted 이벤트를 보냅니다.

이 메서드는 비동기 모드에서 호출됩니다. 자세한 내용은 메서드 호출을 참조하세요.

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

구문

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

매개 변수

objWbemSink

필수 요소. 개체를 비동기적으로 수신하는 개체 싱크입니다. 개체를 수신할 SWbemSink 개체를 만듭니다.

ojbWbemObject

필수 요소. 네임스페이스에 넣을 새 개체입니다. 새로 만든 개체 또는 수정된 개체일 수 있습니다.

iFlags [optional]

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

wbemChangeFlagUpdateCompatible (0 (0x0))

파생 클래스가 없고 해당 클래스의 인스턴스가 없는 경우 클래스를 업데이트할 수 있습니다. 또한 중요하지 않은 한정자(예: Description 한정자)만 변경되는 모든 경우에 업데이트를 허용합니다. 이 호출의 기본 동작으로, 이전 버전의 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 [optional]

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

objWbemAsyncContext [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)

Null이 될 수 없는 속성에 대해 Null 값이 지정되었습니다. 해당 속성의 예제는 Key, Indexed 또는 Not_Null 한정자로 표시된 속성입니다.

wbemErrInvalidObject - 2147749908 (0x80041014)

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

wbemErrInvalidParameter - 2147749896 (0x80041008)

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

wbemErrNotFound - 2147749890(0x80041002)

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

wbemErrIncompleteClass - 2147749920(0x80041020)

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

wbemErrOutOfMemory - 2147749894(0x80041006)

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

설명

이 호출이 즉시 반환되고 결과와 상태는 objWbemSink에 지정된 싱크에 전달된 이벤트를 통해 호출자에게 반환됩니다. 도착할 때 각 개체를 처리하려면 objWbemSink.OnObjectReady 이벤트 서브루틴을 만듭니다. 모든 개체가 도착한 후 수행되는 모든 처리는 objWbemSink.OnCompleted 이벤트에 대한 서브루틴에서 수행됩니다.

비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이로 인해 스크립트 및 애플리케이션에 보안 위험이 발생할 수 있습니다. 위험을 제거하려면 비동기 호출에서 보안 설정을 참조하세요.

요구 사항

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