参数一可以是com对象、com指针、托管com指针
参数二是com.interface名字空间下的接口类或类名
注意com.interface下接口类中的自定义函数必须用owner代替this,
owner才是com实例对象,this指向的是接口定义结构体
所有 COM 原生原生接口定义在此名字空间,
所有 COM 原生接口类中的自定义函数必须用 owner 代替 this,
owner 才是实例对象,this指向的是接口定义结构体
COM 原生接口类在构造函数中使用 this 引用 COM 接口定义结构体
COM 原生接口基类,
所有 COM 原生原生接口必须直接继承此接口,
所有 COM 原生接口类中的自定义函数必须用 owner 代替 this,
owner 才是实例对象,this指向的是接口定义结构体
COM 原生接口类在构造函数中使用 this 引用 COM 接口定义结构体
如果有错误调用error函数抛出异常
参数2指定抛出异常的调用级别
2表示调用当前函数的函数
如果有错误调用error函数抛出异常
检查是否com.interface名字空间下的接口类或类名,
不合法则抛出异常,可使用参数2指定调用级别,
成功返回类对象
创建原生接口对象
自类型库加载接口类,
并在com.interface名字空间创建参数@2指定名称的类,
类型库可以是路径等可传入com.LoadTypeLibrary函数的参数,
也可以是该函数创建的类型库对象,
可选在定义接口类以后,
在该类的名字空间下使用_funtions对象补全函数原型
引用计数加一,返回引用计数
参数是接口类,参考com.interface.IUnknown源码
引用计数减一,返回引用计数
CLSCTX_INPROC=3
_CLSCTX_INPROC_HANDLER=2
_CLSCTX_INPROC_SERVER=1
_CLSCTX_LOCAL_SERVER=4
_CLSCTX_SERVER=5
_FAILED=_/*hr*/ < 0
SUCCEEDED=_/*hr*/ >= 0
_VT_ARRAY=0x2000
_VT_BLOB=0x41
_VT_BLOB_OBJECT=0x46
_VT_BOOL=0xB
_VT_BSTR=8
_VT_BSTR_BLOB=0xFFF
_VT_BYREF=0x4000
_VT_CARRAY=0x1C
_VT_CF=0x47
_VT_CLSID=0x48
_VT_CY=6
_VT_DATE=7
_VT_DECIMAL=0xE
_VT_DISPATCH=9
_VT_EMPTY=0
_VT_ERROR=0xA
_VT_FILETIME=0x40
_VT_HRESULT=0x19
_VT_I1=0x10
_VT_I2=2
_VT_I4=3
_VT_I8=0x14
_VT_ILLEGAL=0xFFFF
_VT_ILLEGALMASKED=0xFFF
_VT_INT=0x16
_VT_INT_PTR=0x25
_VT_LPSTR=0x1E
_VT_LPWSTR=0x1F
_VT_NULL=1
_VT_PTR=0x1A
_VT_R4=4
_VT_R8=5
_VT_RECORD=0x24
_VT_RESERVED=0x8000
_VT_SAFEARRAY=0x1B
_VT_STORAGE=0x43
_VT_STORED_OBJECT=0x45
_VT_STREAM=0x42
_VT_STREAMED_OBJECT=0x44
_VT_TYPEMASK=0xFFF
_VT_UI1=0x11
_VT_UI2=0x12
_VT_UI4=0x13
_VT_UI8=0x15
_VT_UINT=0x17
_VT_UINT_PTR=0x26
_VT_UNKNOWN=0xD
_VT_USERDEFINED=0x1D
_VT_VARIANT=0xC
_VT_VECTOR=0x1000
_VT_VERSIONED_STREAM=0x49
_VT_VOID=0x18