草庐IT

CoGetClassObject

全部标签

windows - COM 对象是否负责将自己的模块保存在内存中?

假设您执行以下操作:1)使用LoadLibrary加载foo.dll。2)使用GetProcAddress获取指向函数的指针。3)调用该函数,为您提供对该模块中实现的COM对象的引用。4)通过调用FreeLibrary释放foo.dll。5)在COM对象上调用方法。您是否希望第5步成功但AV没有成功?也就是说,COM对象本身是否负责(再次)调用LoadLibrary以增加Windows为每个模块保留的引用计数,以确保它不会超过模块? 最佳答案 当然不是。模块引用计数由正常的使用方法维护-你正在做的是进入运行时方案的后门。通常,您使用

c++ - 在 C 中使用 CoGetClassObject() - 访问 COM 对象接口(interface)

有关访问应用程序接口(interface)的说明,普通C/C++无:MFCATLWTL基本上,我想使用COM对象。工作示例源代码或指南-使用(功能)COM对象,不创建COM服务器。问候 最佳答案 这是一个简单的C++示例:CoInitialize(NULL);//absolutelyessential:initializetheCOMsubsystemIMyInterface*pIFace;//createtheobjectandobtainapointertothesoughtinterfaceCoCreateInstance(C

windows - 有没有办法 Hook 或拦截 CoGetClassObject 和/或 CoCreateInstance 调用?

我想拦截COMCoCreateInstanceEx和/或CoGetClassObject在单元测试中用测试垫片替换类的功能。这将仅针对单个CLSID;所有其他人都可以保持不变。有没有一种方法可以在不使用可怕、邪恶的黑客的情况下做到这一点? 最佳答案 总是有CoTreatAsClass函数:http://msdn.microsoft.com/en-us/library/ms693452(VS.85).aspx但是,正如您所指出的,它将在整个系统范围内替换类,而不是局部更改。或者,您可以按照ShayErlichmen的评论引用的帖子中的