다음을 통해 공유


IWbemClassObject::P ut 메서드(wbemcli.h)

IWbemClassObject::P ut 메서드는 명명된 속성을 새 값으로 설정합니다. 이 메서드는 항상 새 값으로 현재 값을 덮어씁니다. IWbemClassObject가 CIM 클래스 정의를 가리키면 Put은 속성 값을 만들거나 업데이트합니다. IWbemClassObject가 CIM instance 가리키는 경우 Put은 속성 값만 업데이트합니다. Put은 속성 값을 만들 수 없습니다.

사용자는 밑줄(_)로 시작하거나 끝나는 이름으로 속성을 만들 수 없습니다. 이는 시스템 클래스 및 속성용으로 예약되어 있습니다.

구문

HRESULT Put(
  [in] LPCWSTR wszName,
  [in] long    lFlags,
  [in] VARIANT *pVal,
  [in] CIMTYPE Type
);

매개 변수

[in] wszName

유효한 속성 이름을 가리킬 매개 변수입니다. 이 매개 변수는 NULL일 수 없습니다.

[in] lFlags

예약되어 있습니다. 이 매개 변수는 0이어야 합니다.

[in] pVal

새 속성 값이 되는 유효한 VARIANT를 가리킬 매개 변수입니다. pValNULL이거나 VT_NULL 형식의 VARIANT를 가리키는 경우 속성은 NULL로 설정됩니다. 즉, 값이 없습니다.

[in] Type

pVal이 가리키는 VARIANT 형식입니다.

VT_NULL 형식의 VARIANT로 지정된 속성의 NULL 값은 0 값이 있는 VT_I4 형식의 속성과 구분됩니다.

새 속성을 만들 때 pValNULL 이거나 VT_NULL 가리키는 경우 속성의 형식은 vtType 매개 변수에서 결정됩니다.

pVal이 포함된 IWbemClassObject를 포함하는 경우 호출자는 IID_IUnknown IWbemClassObject::QueryInterface를 호출하고 결과 포인터를 VT_UNKNOWN 형식을 사용하여 VARIANT에 배치해야 합니다. 원래 포함된 개체는 Put 작업 중에 복사되므로 작업에서 수정할 수 없습니다.

포인터는 읽기 전용으로 처리됩니다. 호출자는 이 호출이 완료된 후 VariantClear 를 호출해야 합니다.

CIM 클래스 정의에서 새 속성을 만들 때만 이 매개 변수를 사용하고 pValNULL이거나 VT_NULL 형식의 VARIANT를 가리킵니다. 이 경우 vtType 매개 변수는 속성의 CIM 형식을 지정합니다. 다른 모든 경우에서 vtType 은 0이어야 합니다. 또한 속성의 형식이 고정되어 변경될 수 없으므로 기본 개체가 instance 경우(pValNULL인 경우에도) vtType은 0이어야 합니다. 즉, pValNULL이거나 VT_NULLVARIANT를 가리키고 기본 개체가 CIM 클래스인 경우에만 vtType을 사용합니다.

IWbemClassObject::P ut을 사용하여 속성에 빈 배열 값을 할당하는 경우 정확한 VT 형식을 지정할 필요가 없습니다. VT_ARRAY VT_VARIANT 변형 형식의|VARIANT인 값을 pVal에 할당할 수있습니다.

반환 값

이 메서드는 메서드 호출의 상태를 나타내는 HRESULT를 반환합니다. 다음 목록에는 HRESULT에 포함된 값이 나열되어 있습니다. 일반적인 HRESULT 값은시스템 오류 코드를 참조하세요.

설명

IWbemClassObject::P ut 메서드에 의해 설정된 속성이 부모 클래스에 있는 경우 속성 형식이 부모 클래스 형식과 일치하지 않는 한 속성의 기본값이 변경됩니다. 속성이 존재하지 않고 형식이 일치하지 않으면 속성이 만들어집니다.

instance 이 메서드를 실행할 때 속성이 항상 존재하기 때문에 덮어쓰기가 항상 발생합니다.

새 클래스를 만들고 속성의 기본 형식이 개체 참조, 날짜/시간 문자열 또는 기타 특수 형식인 경우 속성에 대한 CIM 형식 매개 변수를 수정하여 특수한 새 클래스를 나타내야 할 수 있습니다. instance 속성의 CIMType 한정자는 읽기 전용이며 클래스 개체에서 상속됩니다.

pVal에 지정된 변형 형식이 속성의 CIM 형식과 일치하지 않는 경우 WMI는 일반적인 변형 강제 변환 규칙을 사용하여 변형을 적절한 변형 형식으로 변경하려고 시도합니다. 변형을 강제 변환할 수 없는 경우 WBEM_E_TYPE_MISMATCH 반환됩니다. 다음 목록에서는 속성이 uint32 형식인 경우 일반 변형 강제 변환 규칙에 대한 예외를 나열합니다.

변형 형식으로 전달 결과
VT_I4 S_OK
VT_I2 WBEM_TYPE_MISMATCH
VT_R8 S_OK

그러나 uint32[] 형식의 속성에 VT_ARRAY|VT_R8 전달하지 못합니다.

 

__CLASS 시스템 속성은 클래스를 만드는 동안에만 쓸 수 있으며, 비워 두지 않을 수 있습니다. 다른 모든 속성은 읽기 전용입니다.

예제

다음 코드 예제에서는 새 CIM 클래스에 대 한 클래스 이름을 설정 하는 방법을 보여 있습니다.

// pObj is an empty object from IWbemServices::GetObject
// Set up the property value.
VARIANT v; 
VariantInit(&v);
V_VT(&v) = VT_BSTR;
V_BSTR(&v) = SysAllocString(L"MyClass");

// Write it.
LPCWSTR strClassProp = L"__CLASS";
pObj->Put(strClassProp, 0, &v, 0);

// Clean up.
VariantClear(&v);

다음 코드 예제에서는 SomeUint64 속성의 값을 설정하는 방법을 보여 있습니다. BSTR 값은 16진수가 아닌 10진수 형식이어야 합니다.

// pObj is an instance containing a uint64 property
// Set up the property value.
VARIANT v; 
VariantInit(&v);
V_VT(&v) = VT_BSTR;
V_BSTR(&v) = SysAllocString(L"1033"); // - decimal format, not hex

// Write it.
LPCWSTR strClassProp = L"SomeUint64";
pObj->Put(strClassProp, 0, &v, CIM_UINT64);

// Clean up.
VariantClear(&v);

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 wbemcli.h(Wbemidl.h 포함)
라이브러리 WbemUuid.lib
DLL CIMWin32.dll; Esscli.dll; Fastprox.dll; FrameDyn.dll; FrameDynOS.dll; Krnlprov.dll; Ncprov.dll; Wbemcore.dll; Wbemess.dll; Wmipiprt.dll

추가 정보

IUnknown::QueryInterface

IWbemClassObject

WMI 한정자

WMI 시스템 클래스

WMI 시스템 속성