본문 바로가기

프로그래밍

[COM] 오토메이션 타입 정리

헬퍼함수는 MSDN색인으로 나오지 않아서 따로 정리 하였습니다.

Variant
오토메이션 호환 타입들의 Union

헬퍼함수
VariantChangeType(Ex)
VariantClear
VariantCopy
VariantCopyInd
VariantInit

ATL 클래스
CComVariant

BSTR
문자열 길이를 접두어로 포함하는 문자열

헬퍼함수
SysAllocString
SysAllocStringByteLen
SysAllocStringLen
SysFreeString
SysReAllocString
SysReAllocStringLen
SysStringByteLen
SysStringLen

ATL클래스
CComBSTR

SafeArray
안전하게 다룰 수 있는 배열

헬퍼함수
SafeArrayAccessData
SafeArrayAllocData
SafeArrayAllocDescriptor(Ex)
SafeArrayCopy
SafeArrayCopyData
SafeArrayCreate(Ex)
SafeArrayCreateVector(Ex)
SafeArrayDestory
SafeArrayDestroyData
SafeArrayDestoryDescriptor
SafeArrayGetDim
SafeArrayGetElement
SafeArrayGetElemsize
SafeArrayGetLBound
SafeArrayGetUBound
SafeArrayLock
SafeArrayPtrOfIndex
SafeArrayPutElement
SafeArrayRedim
SafeArrayUnaccessData
SafeArrayUnlock
SafeArraySetRecordInfo
SafeArrayGetRecordInfo
SafeArraySetIID
SafeArrayGetIID
SafeArrayGetVartype

ATL클래스
CComSafeArray
CComSafeArrayBound

사용자 정의 타입
user-defined type, UDT

구조체에 GUID를 할당 하기 위해 typedef 이용

typedef [ uuid([UUID적음])]
 struct myDataType {
  int x;
  int y;
 } myDataType;

Variant 타입의 VT_RECORD
IRecordInfo 인터페이스 구현

GetRecordInfoFromTypeInfo : 타입정보에서 서술한 UDT의 RecordInfo 얻음
GetRecordInfoFromGuids : uuid 를 통해 UDT의 RecordInfo 얻음

IRecordInfo 포인터를 얻음

IRecordInfo * precordInfo = 0;
hr = GetRecordInfoFromTypeInfo(pTypeInfo, &pRecordInfo);