[原]ComFriendlyWaitForSingleObject
structThreadParam{unsignedint p1;// +00h ebp-24hunsignedint p2;// +04h ebp-20hunsignedint cookie;// +08h ebp-1ChLPSTREAM xxx;// +0Ch ebp-18hHANDLE hEvent;// +14h ebp-14hHANDLE hXXX;// +18h ebp-10hunsignedint xxx;// +1Ch ebp-0Ch}
HRESULT ComFriendlyWaitForSingleObject(LPUNKOWN p1, HANDLE* pThread){HANDLE hh1;HANDLE hh2;HRESULT hr = S_OK;hr =HrCreateEvent(0, TRUE,0,0,&hh2);if( FAILED(hr))return hr;hr =HrCreateEvent(0, TRUE,0,0,&hh1);if( FAILED(hr))return hr;ThreadParam param;param.p1 = p1;param.p2 = pThread;param.hr = S_OK;param.pStream = NULL;param.hEvent = hh2;param.hXXX = hh1;param.xxx =0;HANDLE hThread =CreateThread(0,0,&ComFriendlyWaitMtaThreadProc,¶m,0, NULL);WaitForSingleObject(hh2, INFINITE);if( SUCCEED(param.hr)){hr =CoGetInterfaceAndReleaseStream(param.pStream, GUID_6d5140c1_7436_11ce_8034_00aa006009fa,&p1);param.pStream = NULL;if( NULL != p1 ){p1->vtable[4](&p1);p1->Release();}SetEvent(hh1);WaitForSingleObject(*pThread, INFINITE);}AutoCleanupInfo(&hh1);AutoCleanupInfo(&hh2);AutoCleanupInfo(pThread);}
uf uiautomationcore!ComFriendlyWaitForSingleObjectuiautomationcore!ComFriendlyWaitForSingleObject:7303f4e98bff mov edi,edi7303f4eb55 push ebp7303f4ec8bec mov ebp,esp7303f4ee83ec24 sub esp,24h7303f4f153 push ebx7303f4f256 push esi7303f4f357 push edi7303f4f433f6 xor esi,esi7303f4f68d45f8 lea eax,[ebp-8]7303f4f950 push eax7303f4fa56 push esi7303f4fb56 push esi7303f4fc6a01 push 17303f4fe56 push esi7303f4ff8975f8 mov dword ptr [ebp-8],esi7303f502 e894fcffff call uiautomationcore!HrCreateEvent(7303f19b)7303f5073bc6 cmp eax,esi7303f5090f8c49950000 jl uiautomationcore!ComFriendlyWaitForSingleObject+0x22(73048a58)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0x36:7303f50f8d45fc lea eax,[ebp-4]7303f51250 push eax7303f51356 push esi7303f51456 push esi7303f5156a01 push 17303f51756 push esi7303f5188975fc mov dword ptr [ebp-4],esi7303f51b e87bfcffff call uiautomationcore!HrCreateEvent(7303f19b)7303f5208bd8 mov ebx,eax7303f5223bde cmp ebx,esi7303f5240f8ca7000000 jl uiautomationcore!ComFriendlyWaitForSingleObject+0x4d(7303f5d1)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0x58:7303f52a8b4508 mov eax,dword ptr [ebp+8]7303f52d8b7df8 mov edi,dword ptr [ebp-8]7303f5308945dc mov dword ptr [ebp-24h],eax7303f5338b450c mov eax,dword ptr [ebp+0Ch]7303f53656 push esi7303f5378945e0 mov dword ptr [ebp-20h],eax7303f53a8b45fc mov eax,dword ptr [ebp-4]7303f53d56 push esi7303f53e8945f0 mov dword ptr [ebp-10h],eax7303f5418d45dc lea eax,[ebp-24h]7303f54450 push eax7303f54568f1f50373 push offset uiautomationcore!ComFriendlyWaitMtaThreadProc(7303f5f1)7303f54a56 push esi7303f54b56 push esi7303f54c8975e4 mov dword ptr [ebp-1Ch],esi7303f54f8975e8 mov dword ptr [ebp-18h],esi7303f552897dec mov dword ptr [ebp-14h],edi7303f555 ff1514120373 call dword ptr [uiautomationcore!_imp__CreateThread (73031214)]7303f55b89450c mov dword ptr [ebp+0Ch],eax7303f55e3bc6 cmp eax,esi7303f5600f84f9940000 je uiautomationcore!ComFriendlyWaitForSingleObject+0x90(73048a5f)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0xac:7303f5666aff push 0FFFFFFFFh7303f56857 push edi7303f5698b3d28120373 mov edi,dword ptr [uiautomationcore!_imp__WaitForSingleObject (73031228)]7303f56f ffd7 call edi7303f5718b5de4 mov ebx,dword ptr [ebp-1Ch]7303f5743bde cmp ebx,esi7303f5767c40 jl uiautomationcore!ComFriendlyWaitForSingleObject+0xfe(7303f5b8)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0xbe:7303f5788d4508 lea eax,[ebp+8]7303f57b50 push eax7303f57c68e4230373 push offset uiautomationcore!_GUID_6d5140c1_7436_11ce_8034_00aa006009fa (730323e4)7303f581 ff75e8 push dword ptr [ebp-18h]7303f584897508 mov dword ptr [ebp+8],esi7303f587 ff1514130373 call dword ptr [uiautomationcore!_imp__CoGetInterfaceAndReleaseStream (73031314)]7303f58d8b4d08 mov ecx,dword ptr [ebp+8]7303f5908bd8 mov ebx,eax7303f5928975e8 mov dword ptr [ebp-18h],esi7303f5953bce cmp ecx,esi7303f597741f je uiautomationcore!ComFriendlyWaitForSingleObject+0xfe(7303f5b8)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0xdf:7303f5998d45f4 lea eax,[ebp-0Ch]7303f59c50 push eax7303f59d b87c2e0373 mov eax,offset uiautomationcore!_GUID_00000000_0000_0000_c000_000000000046 (73032e7c)7303f5a250 push eax7303f5a350 push eax7303f5a48975f4 mov dword ptr [ebp-0Ch],esi7303f5a78b11 mov edx,dword ptr [ecx]7303f5a951 push ecx7303f5aa ff520c call dword ptr [edx+0Ch]7303f5ad8bd8 mov ebx,eax7303f5af8b4508 mov eax,dword ptr [ebp+8]7303f5b28b08 mov ecx,dword ptr [eax]7303f5b450 push eax7303f5b5 ff5108 call dword ptr [ecx+8]uiautomationcore!ComFriendlyWaitForSingleObject+0xfe:7303f5b8 ff75fc push dword ptr [ebp-4]7303f5bb ff152c120373 call dword ptr [uiautomationcore!_imp__SetEvent (7303122c)]7303f5c16aff push 0FFFFFFFFh7303f5c3 ff750c push dword ptr [ebp+0Ch]7303f5c6 ffd7 call edi7303f5c88d450c lea eax,[ebp+0Ch]7303f5cb50 push eax7303f5cc e8e8f0ffff call uiautomationcore!AutoCleanupInfo<void*>::SafeRelease(7303e6b9)uiautomationcore!ComFriendlyWaitForSingleObject+0x4d:7303f5d18d45fc lea eax,[ebp-4]7303f5d450 push eax7303f5d5 e8dff0ffff call uiautomationcore!AutoCleanupInfo<void*>::SafeRelease(7303e6b9)uiautomationcore!ComFriendlyWaitForSingleObject+0x24:7303f5da8d45f8 lea eax,[ebp-8]7303f5dd50 push eax7303f5de e8d6f0ffff call uiautomationcore!AutoCleanupInfo<void*>::SafeRelease(7303e6b9)7303f5e35f pop edi7303f5e45e pop esi7303f5e58bc3 mov eax,ebx7303f5e75b pop ebx7303f5e8 c9 leave7303f5e9 c20800 ret 8uiautomationcore!ComFriendlyWaitForSingleObject+0x22:73048a588bd8 mov ebx,eax73048a5a e97b6bffff jmp uiautomationcore!ComFriendlyWaitForSingleObject+0x24(7303f5da)Branchuiautomationcore!ComFriendlyWaitForSingleObject+0x90:73048a5f8d450c lea eax,[ebp+0Ch]73048a6250 push eax73048a63 e8515cffff call uiautomationcore!AutoCleanupInfo<void*>::SafeRelease(7303e6b9)73048a688d45fc lea eax,[ebp-4]73048a6b50 push eax73048a6c e8485cffff call uiautomationcore!AutoCleanupInfo<void*>::SafeRelease(7303e6b9)73048a71 bb0e000780 mov ebx,8007000Eh73048a76 e95f6bffff jmp uiautomationcore!ComFriendlyWaitForSingleObject+0x24(7303f5da)Branch
[原]ComFriendlyWaitForSingleObject的更多相关文章
- [原]调试实战——使用windbg调试崩溃在ComFriendlyWaitMtaThreadProc
原调试debugwindbgcrash崩溃COM 前言 这是几年前在项目中遇到的一个崩溃问题,崩溃在了ComFriendlyWaitMtaThreadProc()里,没有源码.耗费了我很大精力,最终通 ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- 【原】AFNetworking源码阅读(六)
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...
- 【原】AFNetworking源码阅读(五)
[原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...
随机推荐
- Git 常见的一些小命令
Git 常见的一些命令 关于一些参数比较多,比较复杂的都有单独进行介绍 1. git cherry-pick 挑拣命令,当我们不想合并分支,或者git pull 更新仓库,而是 ...
- Android Scroller简单用法
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- WINDOWS遠程常規化後再次切換回到全屏
其实有更好的方法的,CTRI+Alt+Break,博主试试看
- (转载)Resin安装配置及使用教程
Resin是一个提供高性能的,支持 Java/PHP 的应用服务器.目前有两个版本:一个是GPL下的开源版本,提供给一些爱好者.开发人员和低流量网站使用:一种是收费的专业版本,增加了一些更加适用于生产 ...
- yii框架的安装
在安装YII2.0首先我们需要下载一个composer,何为composer,简单解释为PHP的组件工具, Composer是PHP中用来管理依赖(dependency)关系的工具,你可以在自己的项目 ...
- Oracle中较长number型数值的科学计数显示问题
表中有id列,类型为number(38).在sqlplus中查询的时候,查询结果的显示方式为科学计数法: ID ---------- 4.5572E+18 4.5574E+18 4.5585E+18 ...
- Git 取消跟踪已版本控制的文件
http://www.cnblogs.com/cposture/p/git.html 转: Git 是一个很好的版本控制工具,当然驾驭起来相比 SVN 要稍微复杂一些.初入 Git,难免有一些问题.比 ...
- Leetcode: LFU Cache && Summary of various Sets: HashSet, TreeSet, LinkedHashSet
Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the f ...
- linux------------Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
今天突然遇到这个么一个奇葩的问题,直接说问题的原因:原因是我们创建了一个计划任务,这个计划任务是一分钟执行一次,是iptables封ip的一个sh脚本.由于攻击我们的ip太多,已经达到了几千个,这个脚 ...
- 计蒜客A
联想公司最近要设计一个体现公司文化的 logo.联想的设计师想出了一个方案:先画了一个顶点 O,接着画出以顶点 O 为公共顶点的.夹角为 θ的两条线段 l1 和 l2 其中 l1作为圆 C1的 ...