다음을 통해 공유


IWbemServices::P utInstance 메서드(wbemcli.h)

IWbemServices::P utInstance 메서드는 기존 클래스의 instance 만들거나 업데이트합니다. 인스턴스가 WMI 리포지토리에 기록됩니다.

구문

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

매개 변수

[in] pInst

쓸 instance 대한 포인터입니다. 호출자는 이 호출이 완료될 때 참조 횟수에 대해 가정할 수 없습니다.

[in] lFlags

다음 값 중 하나 이상을 설정할 수 있습니다.

WBEM_FLAG_CREATE_OR_UPDATE

이 플래그는 존재하지 않는 경우 instance 만들거나 이미 있는 경우 덮어씁니다.

WBEM_FLAG_UPDATE_ONLY

이 플래그로 인해 이 호출이 업데이트됩니다. 호출에 성공하려면 인스턴스가 있어야 합니다.

WBEM_FLAG_CREATE_ONLY

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

WBEM_FLAG_RETURN_IMMEDIATELY

이 플래그를 사용하면 반동기 호출이 됩니다. 자세한 내용은 메서드 호출을 참조하세요.

WBEM_FLAG_USE_AMENDED_QUALIFIERS

이 플래그를 설정하면 WMI는 수정된 버전으로 한정자를 저장하지 않습니다. 이 플래그를 설정하지 않으면 이 개체가 지역화되지 않고 모든 한정자는 이 instance 함께 저장됩니다.

[in] pCtx

일반적으로 NULL로, instance 모든 속성을 업데이트해야 함을 나타냅니다. 그렇지 않으면 instance 대한 자세한 정보를 포함하는 IWbemContext 개체에 대한 포인터입니다. 컨텍스트 개체의 데이터는 instance 담당하는 공급자가 문서화해야 합니다. NULL이 아닌 IWbemContext 개체는 부분 instance 업데이트에 대한 지원이 있는지 여부를 나타낼 수 있습니다.

전체 및 부분 instance 업데이트를 지원하는 방법에 대한 자세한 내용은 IWbemServices::P utInstanceAsync를 참조하세요. 전체 또는 부분 instance 업데이트 작업을 요청하는 방법에 대한 자세한 내용은 인스턴스 속성 수정을 참조하세요.

[out] ppCallResult

NULL인 경우 이 매개 변수는 사용되지 않습니다. lFlags 매개 변수에 WBEM_FLAG_RETURN_IMMEDIATELY 포함된 경우 이 호출은 WBEM_S_NO_ERROR 함께 즉시 반환됩니다. 그런 다음 ppCallResult 매개 변수는 IWbemCallResult::GetCallStatus를 사용하여 폴링하여 결과를 얻을 수 있는 새 IWbemCallResult 개체에 대한 포인터를 받습니다.

반환 값

이 메서드는 메서드 호출의 상태를 나타내는 HRESULT를 반환합니다. 다음 목록에는 HRESULT 내에 포함된 값이 나열되어 있습니다.

네트워크 문제로 인해 Windows Management에 대한 원격 연결이 끊어지는 경우에도 COM 관련 오류 코드가 반환될 수 있습니다.

설명

애플리케이션 및 공급자는 PutInstance를 호출하여 기존 클래스의 instance 만들거나 업데이트합니다. pCtx 매개 변수를 설정하는 방법에 따라 instance 속성의 일부 또는 전부가 업데이트됩니다. 부분 instance 업데이트를 지원하는 방법에 대한 자세한 내용은 IWbemServices::P utInstanceAsync를 참조하세요. 부분 instance 업데이트를 요청하는 방법에 대한 자세한 내용은 Instance 속성 수정을 참조하세요.

PutInstance 메서드는 인스턴스 만들기 및 인스턴스 업데이트만 지원합니다. 인스턴스 이동을 지원하지 않습니다. 즉, 호출자는 pInst 매개 변수를 형제 클래스의 다른 instance 동일한 키가 있는 instance 설정할 수 없습니다. 예를 들어 ClassA가 ClassBClassC의 기본 클래스라고 가정합니다. ClassA 클래스는 KeyProp 속성을 키로 정의하고 ClassB에는 KeyProp이 1로 설정된 instance 있습니다. KeyProp이 1로 설정된 ClassC의 instance 만들려면 먼저 DeleteInstance를 호출하여 ClassB instance 삭제한 다음 PutInstance를 사용하여 ClassC instance 저장해야 합니다.

pInst가 가리키는 instance 하위 클래스에 속하는 경우 Windows Management는 하위 클래스가 파생되는 클래스를 담당하는 모든 공급자를 호출합니다. 원래 PutInstance 요청이 성공하려면 이러한 모든 공급자가 성공해야 합니다. 계층에서 최상위 클래스를 지원하는 공급자가 먼저 호출됩니다. 호출 순서는 최상위 클래스의 하위 클래스로 계속 진행되며 Windows Management가 pInst가 가리키는 instance 소유한 클래스의 공급자에 도달할 때까지 위에서 아래로 진행됩니다.

Windows 관리는 인스턴스의 자식 클래스에 대한 공급자를 호출하지 않습니다. 따라서 애플리케이션이 상속된 속성의 값을 변경하려는 경우 애플리케이션은 부모 클래스의 해당 instance 아닌 자식 클래스의 전체 instance PutInstance를 호출해야 합니다.

애플리케이션이 클래스 계층 구조에 속하는 instance 업데이트해야 하는 경우 pInst 매개 변수는 수정할 속성이 포함된 instance 가리킵니다. 즉, ClassB에 속하는 대상 인스턴스를 고려합니다. ClassB 인스턴스는 ClassA에서 파생되며 ClassAPropA 속성을 정의합니다. 애플리케이션이 ClassB instance PropA 값을 변경하려는 경우 classA의 instance 아닌 해당 instance pInst를 설정해야 합니다.

추상 클래스의 instance PutInstance를 호출할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 wbemcli.h(Wbemidl.h 포함)
라이브러리 Wbemuuid.lib
DLL Fastprox.dll; Esscli.dll; FrameDyn.dll; FrameDynOS.dll; Ntevt.dll; Stdprov.dll; Viewprov.dll; Wbemcomn.dll; Wbemcore.dll; Wbemess.dll; Wbemsvc.dll; Wmipicmp.dll; Wmidcprv.dll; Wmipjobj.dll; Wmiprvsd.dll

추가 정보

인스턴스 만들기

IWbemCallResult

IWbemServices

IWbemServices::PutInstanceAsync

오류 코드 검색