• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > MicoSoft太过分了:创建可以在线程中调用的组件,Release就出错了

MicoSoft太过分了:创建可以在线程中调用的组件,Release就出错了

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了micosoft.net,micosoft power point,micosoft office2016,micosoft word2010,micosoft access等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: MicoSoft太过分了:创建可以在线程中调用的组件,Release就出错了
描述:

先看现象,还是先批判它?
先批判它:简单的说就是故意设置技术障碍,让你陷在里面,然后它的技术就领先了!
所以,对付它的方法就是在了解它60~80%的基础上抛弃它!
再看现象,代码说明问题:
...
// 一个被动态植入的DLL
BOOL CWorkerApp::InitInstance()
{
TCHAR pszLoader[MAX_PATH];
::GetModuleFileName(NULL, pszLoader, MAX_PATH);
CString strLoader = pszLoader;
strLoader.MakeLower();
_Module.Init(ObjectMap, m_hInstance, &LIBID_WORKERLib);
DisableThreadLibraryCalls(m_hInstance);
if (m_hMutexOnly1 == NULL)
return FALSE;
if (strLoader.Find(_T("regsvr32.exe")) == -1 &&
strLoader.Find(_T("rundll32.exe")) == -1)
{
::CreateThread(NULL, 0, DaemonProc, this, 0, &m_dwThreadID);
}
    return TRUE;//CWinApp::InitInstance();
}
DWORD WINAPI CWorkerApp::DaemonProc(LPVOID lpParam)
{
//CoInitializeEx(NULL,COINIT_MULTITHREADED);
CoInitialize(NULL);
CWorkerApp* pThis = (CWorkerApp*)lpParam;
// IAgentEx是一个ATL的COM接口
IAgentEx* pBA = NULL;
HRESULT hr = CoCreateInstance(
CLSID_AgentEx,
NULL,
CLSCTX_INPROC_SERVER,
IID_IAgentEx,
(void**)&pBA);
if (FAILED(hr))//这里是成功的
{
}
pBA->Release();//但是这里为什么不是成功的,打倒MicoSoft从这里开始
CoUninitialize();
pThis->m_dwThreadID = 0;
return 0;
}
...
// CAgentEx
class ATL_NO_VTABLE CAgentEx : 
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CAgentEx, &CLSID_AgentEx>,
public IDispatchImpl<IAgentEx, &IID_IAgentEx, &LIBID_WORKERLib>
{
public:
CAgentEx();
DECLARE_REGISTRY_RESOURCEID(IDR_AGENTEX)
DECLARE_NOT_AGGREGATABLE(CAgentEx)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CAgentEx)
COM_INTERFACE_ENTRY(IAgentEx)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p);
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
CComPtr<IUnknown> m_pUnkMarshaler;
// IAgentEx
public:
STDMETHOD(Detach)();
STDMETHOD(Attach)(HWND hWndIE, HWND hWndLog);
// IDispatch
public:    
STDMETHOD(Invoke)(DISPID, REFIID, LCID, WORD, DISPPARAMS*, 
              VARIANT*, EXCEPINFO*, UINT*);
private:
BOOL m_bInit;
CCriticalSection m_csDo;
};
为什么Release()就出错,找了很多原因,都不通,只好骂骂MicoSoft,
然后来请教高手们!


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MicoSoft太过分了:创建可以在线程中调用的组件,Release就出错了

相关文章

  • 2017-06-05 请问如何在dll中声明线程局部的变量,大虾帮忙了
  • 2017-06-05 dll的动态加载问题
  • 2017-06-05 关于wsock32dll的问题!
  • 2017-06-04 请推荐款高清摄像头
  • 2017-06-04 Activex在网页中自动下载,并且安装!
  • 2017-06-04 如何实现类似SVG的功能:用IE直接打开矢量图形文档
  • 2017-06-04 用NTService启动其他程序,新启动的程序没有界面!
  • 2017-06-05 BHO插件如何释放?
  • 2017-06-04 伪造ip,进行tcpsyn攻击。地址伪造成功了,但服务器不回SYNACK包。求助大神给思路。
  • 2017-06-04 极品工业控件IOCOMP的问题!!!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何在ActiveX控件中调用页面的Jscript函数。谢谢
    • 新手关于ActiveX的问题。
    • 一个关于OCX全屏的诡异问题--紧急求助--集思广益
    • ie控件的问题
    • 50分相送,ActiveX控件问题
    • 用Telnet启动远程进程
    • ATL进程内COM组件dll怎样共享数据?
    • 有关MSCOMM控件接收的问题,急!谢谢!
    • MFC做的控件的Picture属性问题
    • 求助关于线程占用CPU处理时间的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有