【发布时间】:2010-10-14 17:47:04
【问题描述】:
注意:
- 将BSTR变量传递给COM方法,HRESULT返回
8000FFFF - 以前使用 接口指针 调用,成功:HRESULT 是
0 - 执行,在 Visual Studio 内部成功,在外部失败 - 发布和调试
插图:
BSTR raw_sim_Open = SysAllocString (L"c:\\example.S8");
hresult = pis8->raw_Open (raw_sim_Open); //0x8000FFFF returned
编辑 - WinDbg:
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=003a5be8 ebx=00009000 ecx=003a0208 edx=77606e00 esi=0012ec90 edi=00191b14
eip=003a0283 esp=0012ec34 ebp=0012ecb4 iopl=0 nv up ei ng nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010296
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
<Unloaded_PI32.dll>+0x3a0282:
003a0283 0080023a0088 add byte ptr [eax-77FFC5FEh],al ds:0023:883a95ea=??
【问题讨论】:
-
这是一个进程内或进程外 COM 服务器?
-
进程外服务器(我正在调用)
-
与上一个问题相比到底发生了什么变化?
-
看起来像未定义的行为。 raw_Open() 方法的签名是什么 - 它的参数类型是什么?
-
您尝试过 SysAllocStringLen() 解决方法吗?
标签: c++ windows visual-studio-2008 com