复合文件,俗称“文件中的文件系统”。 复合文件的特点: 1.复合文件的中的“流对象”,是真正保存数据的空间。它的存储单位为512字节。也就是说,即使你在流中只保存了一个字 节的数据,它也要占据512字节的文件空间。啊~~~,这也太浪费了呀?不浪费!因为文件保存在磁盘上,即使一个字节也还 要占用一个“簇”的那空。 2.不同的进程,或同一个进程的不同线程可以同时访问一个复合文件的不同部分而互不干扰。 VC6.0附带了一个工具软件“复合文件浏览器”DFView.exe 复合文件的函数和磁盘目录文件的操作非常类似。所有这些函数,被分为3种类型:WIN API全局函数,存储IStorage接口函 数,流IStream接口函数。 typedef struct _GUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; }; typedef GUID CLSID; typedef GUID IID; 常用函数: CLSIDFromProgID CLSIDFromProgIDEx ProgIDFromCLSID IsEqualGuid IsEqualCLSID IsEqualIID StringFromCLSID StringFromGUID2 StringFromIID COM组件是运行在分布式环境中的。通俗地说,你不能直接把一个内存指针直接作为参数传递给COM函数。 BSTR相关函数: SysAllocString SysFreeString SysAllocStringLen SysAllocStringByteLen 各种ATL转换宏,如A2BSTR OL32A A2W等等等 使用转换宏之前,需要先添加USES_CONVERSION宏 使用ATL转换宏,需要注意以下几点: 0.使用ATL转换宏,由于不用释放临时空间,所以使用起来非常方便。但是需要考虑到栈空间的尺寸。 1.只适合于进行短字符串的转换。 2.不要试图在一个次数比较多的循环体内进行转换 CComVariant v1(100), v2(true), v3("Hello,你好") IDL经过编译,生成二进制的等价类型库文件TLB提供给其它语言来使用。 自动化组件,其实就是实现了IDispatch接口的组件。IDispatch接口有4个函数,解释语言的执行器就通过这仅有的4个函数来 执行组件所提供的功能。 GetTypeInfoCount GetTypeInfo GetIDsOfNames Invoke IConnectionPointContainer包含EnumConnectionPoints, FindConnectionPoint IConnectionPoint包含Advise, Unadvise,
COM杂项
最新推荐文章于 2023-09-04 18:19:14 发布