COM 原生接口对象。
参数 declInterface 必须指定 com.interface 名字空间下的接口声明类,
或者用字符串指定 com.interface 名字空间已导入的声明类名称。。
可以对返回对象添加匹配 declInterface 声明的成员函数。
未定义成员在被调用时忽略并直接返回 0
导入 COM 原生接口对象。
参数 implObjectOrPtr 可指定 COM 对象、COM 对象指针、com.IUnknown 托管指针。
参数 declInterface 必须指定 com.interface 名字空间下的接口声明类,
或者用字符串指定 com.interface 名字空间已导入的声明类名称。
在 COM 接口类中的自定义函数必须用 owner 代替 this 访问当前 COM 对象。
实现 COM 原生接口对象。
implTable 是一个纯表(元表), 并定义与接口匹配的成员函数(被调用时忽略未定义成员)。
参数 declInterface 必须指定 com.interface 名字空间下的接口声明类,
或者用字符串指定 com.interface 名字空间已导入的声明类名称。
在 COM 接口类中的自定义函数必须用 owner 代替 this 访问当前 COM 对象。
所有 COM 原生接口声明类都在此名字空间内。
所有 COM 原生接口声明类中的自定义函数必须用 owner 代替 this,
owner 才指向实际绑定的 COM 原生对象。
COM 原生接口声明类内部的 this 指向的是声明类而不是 COM 对象。
导入或实现 COM 原生接口对象。
COM 原生接口声明类的基类。
所有 COM 原生接口声明类必须直接继承此接口。
所有 COM 原生接口声明类中的自定义函数必须用 owner 代替 this,
owner 才指向实际绑定的 COM 原生对象。
COM 原生接口声明类内部的 this 指向的是声明类而不是 COM 对象。
如果有错误调用 error 函数抛出异常
可选用参数 @2 指定抛出异常的调用级别:
调用级别为 2 表示调用当前函数的函数
参数可指定 COM 原生接口声明类,
或者用字符串指定 com.interface 名字空间已导入的声明类名称。
此函数检查接口声明类是否有效,
如果有效则返回声明接口的类对象,并将类的静态 IID 成员转换为 win.guid 结构体。
如果是无效的声明类则抛出异常,可使用参数 @2 指定抛出异常的调用级别。
创建或实现原生接口
创建原生接口对象,参数 @1 指定 CLSID。
参数 declInterface 必须指定 com.interface 名字空间下的接口声明类,
或者用字符串指定 com.interface 名字空间已导入的声明类名称。
实现原生接口。
与直接调用 com.interface(declInterface) 作用相同。
可以在对象返回后再增加 COM 接口声明类 declInterface 声明的接口方法。
自类型库加载接口类,
并在 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