[原]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 ...
随机推荐
- ubuntu-vnc
Centos 中文gnome: 全新以最小化包安装了64位的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程: 1.先安装X Window yum groupinstall " ...
- iOS开发路线简述
1 iOS开发环境1.1 开发环境标准的配置是MacOSX+Xcode.MacOSX的话首选用苹果电脑,Macmini最便宜只要4000多就好了然后自己配一个显示器,MacBookPro 也可以,不推 ...
- 16C554(8250)驱动分析
参考: http://www.cnblogs.com/zym0805/p/4815041.html 一. 硬件数据手册 The ST16C554D is a universal asynchronou ...
- Leetcode: Design Phone Directory
Design a Phone Directory which supports the following operations: get: Provide a number which is not ...
- jQuery ajax的traditional参数的作用///////////////////////////////////zzzzzzzzzzz
jQuery ajax的traditional参数的作用 i33 发布时间: 2013/04/03 10:05 阅读: 9859 收藏: 9 点赞: 1 评论: 0 一般的,可能有些人在一个参数有多个 ...
- windows shell api SHEmptyRecycleBin 清空回收站
HRESULT SHEmptyRecycleBin( HWND hwnd, LPCTSTR pszRootPath, DWORD dwFlags ); hwnd 父窗口句柄 pszRootPath 将 ...
- NLog路由规则和上下文信息
NLog配置路由规则和上下文信息 rules: 规则节点 logger:一个路由规则 <rules> <!--<logger name="*" writeT ...
- splitFile2SmallFile
1. split file into several files """ this is aa customizable version of the standard ...
- python的应该关注的语法
1.try...finally def test_return(): try: print "try" raise ValueError("valueError" ...
- HTTPS原理详解
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTT ...