com的扩展内容摘要:

Inverse(IMoniker **ppmk)。 HRESULT IsSystemMoniker(DWORD *pdwMksys)。 HRESULT CommonPrefixWith(IMoniker *pmkOther, IMoniker **ppmkPrefix)。 HRESULT RelativePathTo(IMoniker *pmkOther, IMoniker **ppmkRelPath)。 HRESULT ComposeWith(IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)。 HRESULT Reduce (IBindContext *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)。 系统名字对象 typedef enum tagMKSYS { MKSYS_NONE = 0, MKSYS_GENERICCOMPOSITE = 1, MKSYS_FILEMONIKER = 2, MKSYS_ANTIMONIKER = 3, MKSYS_ITEMMONIKER = 4, MKSYS_POINTERMONIKER = 5, MKSYS_URLMONIKER = 6, MKSYS_CLASSMONIKER = 7, MKSYS_OBJREFMONIKER = 8, MKSYS_SESSIONMONIKER = 9 } MKSYS。 名字解析 HRESULT GetDisplayName(IBindContext *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)。 HRESULT ParseDisplayName(IBindContext *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)。 显示名分隔符: “。 ” 、 “ \”、 “ /”、“ :”或 “ [” 复合名字对象 通用复合名字对象 HRESULT CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)。 按从左到右的顺序组合,满足结合律 举例:文档内部的电子表格 ROT表  COM使用 ROT表管理当前系统中正在运行的、已经被注册的名字对象  客户调用 GetRunningObjectTable函数访问ROT表 绑定环境对象 也是 COM实现的系统对象 绑定环境对象 (续 )  管理已被绑定的对象: – RegisterObjectBound、 RevokeObjectBound、ReleaseBoundObjects  管理绑定参数: (文件访问模式、超时设置等 ) – SetBindOptions、 GetBindOptions  管理绑定过程中的对象参数: – RegisterObjectParam、 GetObjectParam、 – EnumObjectParam、 RevokeObjectParam 复合名字对象绑定过程的剖析  IMoniker::BindToObject绑定过程: – ( 1)检查 ROT表 – ( 2)分解。 pmkRight : pmkLeft,最右边部分分离 – ( 3) 调用 pmkRightBindToObject(...,pmkLeft, ...) – ( 4)执行 pmkRightBindToObject • 如果 pmkLeft为简单名字对象,则可终止循环 • 否则, pmkRight往往要调用 pmkLeftBindToObject,从而形成自右向左的循环绑定过程  举例: File!Item1!Item2 File!Item1!Item2的绑定和构造过程 p m k Ite m 2 Bin d T o Ob jec t( … , p m k F il e Ite m 1 , IID_ IUn k n o w n , p p v Ob j)客户程序调用 p Co m p Bin d T o Ob jec t( … , IID_ IUn k n o w n , amp。 p Un k )复合名字对象被拆分成 p m k F il e Ite m 1 和 p m lIt e m 2 两部分p m k F il e Ite m 1 Bin d T o Ob jec t( … , NU L L , IID_ I Ole Ite m Co n tain e r , amp。 p Item 1 Ob j)p m k F il e Ite m 1 被拆分成 p m k F il e 和 p m lIt e m 1 两部分p m k Ite m 1 Bin d T o Ob jec t( … , p m k F il e , IID_ I Ole Item Co n tain e r , amp。 p Item 1 Ob j)p m k F il e Bin d T o Ob jec t( … , NU L L , IID_ I Ole Ite m Co n tain e r , amp。 p F il e Ob j )创建文件对象并返回其 IOleIte m Co n tain e r 接口指针p F il e Ob j 指向文件对象的 IOleIte m Co n tain e r 接口指针p F il e Ob j G e tOb jec t(. .. , I ID_ I Ole Item Co n tain e r , amp。 p Item 1 Ob j )p Item 1 Ob j 指向文件对象中 Item 1 对象的 IOleIte m Co n tain e r 接口指针p Item 1 Ob j G e tOb jec t(. .. , I ID_ IUn k n o w n , amp。 p U n k )p Un k 指向文件对象的 Item 1 对象的 Item 2 对象的 I Un k n o w n 接口指针绑定方向方向构造IOleItemContainer接口 COM名字对象分类  COM提供的系统名字对象  URL名字对象 自定义名字对象 系统名字对象  文件名字对象 (File Moniker) WINOLEAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)。  复合名字对象 (Composite Moniker) WINOLEAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)。  单项名字对象 (Item Moniker) WINOLEAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, IMoniker **ppmk)。  举例: CreateFileMoniker(“File”, amp。 pmkFile)。 CreateItemMoniker(“!”, “Item1”, amp。 pmkItem1)。 pmkFileComposeWith(pmkItem1, FALSE, amp。 pmkComp1)。 CreateItemMoniker(“!”, “Item2”, amp。 pmkItem2)。 pmkComp1ComposeWith(pmkItem2, FALSE, amp。 pmkComp2)。 系统名字对象 (续 )  反 名字对象 (Antimoniker)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。