[原]ComFriendlyWaitMtaThreadProc
DWORD __stdcall *ComFriendlyWaitMtaThreadProc(LPVOID lpThreadParameter)
{
CoInitializeEx(0,0);
ThreadParam* pParam =(ThreadParam*)lpThreadParameter;
ComFriendlyWaiter* pData =newComFriendlyWaiter(pParam->p2, pParam->p1);
hr =CoMarshalInterThreadInterfaceInStream(GUID_6d5140c1_7436_11ce_8034_00aa006009fa, pData,&pStream);
pData->Release();
SetEvent(pParam->hEvent);
WaitForSingleObject(pParam->hXXX);
CoUninitialize();
}
uiautomationcore!ComFriendlyWaitMtaThreadProc:
7303f5f18bff mov edi,edi
7303f5f355 push ebp
7303f5f48bec mov ebp,esp
7303f5f656 push esi
7303f5f757 push edi
7303f5f86a00 push 0
7303f5fa6a00 push 0
7303f5fc ff1504130373 call dword ptr [uiautomationcore!_imp__CoInitializeEx (73031304)]
7303f6026a18 push 18h
7303f604 e80c34ffff call uiautomationcore!operatornew(73032a15)
7303f6098b7d08 mov edi,dword ptr [ebp+8]
7303f60c59 pop ecx
7303f60d85c0 test eax,eax
7303f60f7452 je uiautomationcore!ComFriendlyWaitMtaThreadProc+0x2e(7303f663)Branch
uiautomationcore!ComFriendlyWaitMtaThreadProc+0x20:
7303f611 ff7704 push dword ptr [edi+4]
7303f6148bc8 mov ecx,eax
7303f616 ff37 push dword ptr [edi]
7303f618 e84f000000 call uiautomationcore!ComFriendlyWaiter::ComFriendlyWaiter(7303f66c)
uiautomationcore!ComFriendlyWaitMtaThreadProc+0x30:
7303f61d8bf0 mov esi,eax
7303f61f83c008 add eax,8
7303f622 f7de neg esi
7303f6241bf6 sbb esi,esi
7303f62623f0 and esi,eax
7303f6288d470c lea eax,[edi+0Ch]
7303f62b50 push eax
7303f62c56 push esi
7303f62d68e4230373 push offset uiautomationcore!_GUID_6d5140c1_7436_11ce_8034_00aa006009fa (730323e4)
7303f632 ff150c130373 call dword ptr [uiautomationcore!_imp__CoMarshalInterThreadInterfaceInStream (7303130c)]
7303f638894708 mov dword ptr [edi+8],eax
7303f63b8b06 mov eax,dword ptr [esi]
7303f63d56 push esi
7303f63e ff5008 call dword ptr [eax+8]
7303f641 ff7710 push dword ptr [edi+10h]
7303f644 ff152c120373 call dword ptr [uiautomationcore!_imp__SetEvent (7303122c)]
7303f64a6aff push 0FFFFFFFFh
7303f64c ff7714 push dword ptr [edi+14h]
7303f64f ff1528120373 call dword ptr [uiautomationcore!_imp__WaitForSingleObject (73031228)]
7303f655 ff1508130373 call dword ptr [uiautomationcore!_imp__CoUninitialize (73031308)]
7303f65b5f pop edi
7303f65c33c0 xor eax,eax
7303f65e5e pop esi
7303f65f5d pop ebp
7303f660 c20400 ret 4
uiautomationcore!ComFriendlyWaitMtaThreadProc+0x2e:
7303f66333c0 xor eax,eax
7303f665 ebb6 jmp uiautomationcore!ComFriendlyWaitMtaThreadProc+0x30(7303f61d)Branch
[原]ComFriendlyWaitMtaThreadProc的更多相关文章
- [原]调试实战——使用windbg调试崩溃在ComFriendlyWaitMtaThreadProc
原调试debugwindbgcrash崩溃COM 前言 这是几年前在项目中遇到的一个崩溃问题,崩溃在了ComFriendlyWaitMtaThreadProc()里,没有源码.耗费了我很大精力,最终通 ...
- [原]调试ComFriendlyWaitMtaThreadProc崩溃
项目里安装了UIA相关的钩子来监听UIA相关事件,退出的时候偶尔会崩溃在ComFriendlyWaitMtaThreadProc中,如下 从上图可以看出 是访问到无效的地址了,用!address 0 ...
- 【原】谈谈对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 ...
随机推荐
- cookie的session_id解释
HTTP协议(http://www.w3.org/Protocols/)是“一次性单向”协议. 服务端不能主动连接客户端,只能被动等待并答复客户端请求.客户端连接服务端,发出一个HTTP Reques ...
- ActionListener的三种实现方法
Swing是目前Java中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的 强大工具.Java Swing组件自动产生各种事件来响应用户行为.如当用户点击按钮或选择菜单项目时,Swing ...
- LeetCode Power of Four
原题链接在这里:https://leetcode.com/problems/power-of-four/ 题目: Given an integer (signed 32 bits), write a ...
- java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)
import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...
- React Native IOS源码初探
原文链接 http://www.open-open.com/lib/view/open1465637638193.html 每个项目都有一个入口,然后进行初始化操作,React Native 也不例外 ...
- SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题
- play 源码分析
play 入口: play.server.Server类 主要做2件事情: 1,Play.init; // 初始化,主要是配置的加载,插件的加载等等 2,new Server(); 这里play ...
- python脚本生成exe可执行文件
1.先安装第三方插件: py2exe. Get py2exe from http://www.py2exe.org/ 在download里下载与自己python对应的版本 2.写一个测试python文 ...
- NET基础(3):is 和 as 操作符
在C#语言中进行类型转换的另外一种方式是使用is和as操作符.is检查对象是否兼容于指定类型,返回Boolean值true或false.注意,is操作符永远不抛出异常,例如以下代码: Object o ...
- 开始学习c语言
学习c语言的第一篇博客,心里的感觉说不出来,不知道能不能坚持下去,我是一名工作了差不多2年的phper,其实我本来是想学习数据结构和算法的,但是尼玛这年头那些书的例子都不是php,动不动就是c,jav ...