DLL调用CoCreateInstance返回E_NOINTERFACE求解

cppzhentan 2011-10-06 01:47:01
说说这个小工程吧,它是一个SPI的DLL,在WSAStartup中创建COM对象.相关代码如下:

int WSPAPI WSPStartup(
IN WORD wVersionRequested,
OUT LPWSPDATA lpWSPData,
IN LPWSAPROTOCOL_INFO lpProtocolInfo,
IN WSPUPCALLTABLE UpcallTable,
OUT LPWSPPROC_TABLE lpProcTable
)
{
int ret = WSAEPROVIDERFAILEDINIT;

MessageBox(NULL, _T("TEST"), _T("DBG"), MB_OK);

CoInitialize(NULL);

IClassFactory *pCF=NULL;
HRESULT hr=::CoGetClassObject(
CLSID_IWzdSrv, // name of dll to load
CLSCTX_INPROC_SERVER,// use dll
NULL, // for DCOM, a COSERVERINFO structure that id's the remote server
// more typically set using OLEView
IID_IClassFactory, // the class factory interface (all COM DLL/EXE's must have this interface)
(LPVOID*)&pCF);

IUnknown* iWzd = NULL;
hr = pCF->CreateInstance(
NULL, // aggregated COM object (none)
IID_IWzd, // class to create and object of
(LPVOID*) &iWzd); // returned object pointer

................

return ret;
}

pCF->CreateInstance调用后,iWzd是NULL,hr的值是E_NOINTERFACE

COM已经注册,并且写了一个测试的EXE能够CreateInstance出iWzd对象...为什么在LSP中就不行了呢,求解释

那么要怎样的方法才能够让它创建成功呢?

备注:
该问题衔接:http://topic.csdn.net/u/20111005/16/d353c25a-b269-4ecb-8a6b-c1af2341d7f1.html
已经是两个帖子了,这个问题很急,两个帖子总共是400分,如果谁能够帮助我,这400分就是他的,谢谢大伙了.
...全文
372 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppzhentan 2011-10-07
  • 打赏
  • 举报
回复
呼叫oyljerry
(【勇敢的心】→ ㊣提拉米苏√㊣)
justlovetao 2011-10-07
  • 打赏
  • 举报
回复
好想拿分啊。。。可是能力有限啊 LZ 好运啊
cppzhentan 2011-10-07
  • 打赏
  • 举报
回复
请oyljerry
(【勇敢的心】→ ㊣提拉米苏√㊣)
进来,结贴了...
oyljerry 2011-10-07
  • 打赏
  • 举报
回复
^_^,解决问题了就好.
二星马甲 2011-10-06
  • 打赏
  • 举报
回复
晕,又开了一贴啊。。。看那个帖子
cppzhentan 2011-10-06
  • 打赏
  • 举报
回复
自己顶一下

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧