bdo*_*lan 7 windows com hook unit-testing shim
我想拦截COM CoCreateInstanceEx和/或CoGetClassObject函数,以在单元测试中用测试垫片替换类.这只适用于单个CLSID; 所有其他人都可以保持不变.没有可怕的,邪恶的黑客,有没有办法做到这一点?
这取决于你到底想要什么。
如果您想检测谁正在加载该类或查找它是否已加载,您可以使用Process Monitor。调用CoGetClassObject()(或CoCreateInstanceEx()) 将导致HKCR\CLSID\{Class of interest id}读取密钥,进程监视器将向您显示哪个进程、何时执行此操作以及其成功程度。
如果您想用您的类替换现有的类,请使用您的类版本(具有相同的类 id)编译一个库,并更改内部 COM 服务器的路径,HKCR\CLSID\{Class of interest id}以便您的库用于为具有该 id 的类提供服务。您可以手动或使用 regsvr32 来完成此操作 - 首先注册原始库,然后用您的库来覆盖感兴趣的注册类。当消费者调用CoGetClassObject()或时,COM 通过该键进行类 id -> 库映射CoCreateInstanceEx()。
| 归档时间: |
|
| 查看次数: |
1356 次 |
| 最近记录: |