CIUknown_QueryInterface_Proxy 原因 一般保护故障
C IUknown_QueryInterface_Proxy cause General protection fault
我正在尝试做一些 COM/OLE,这是我的代码:
static struct IUnknown* punk = NULL;
static IDispatch* UIRManager = NULL;
void DispatcherStart(){
CoInitialize(NULL);
HRESULT retour = GetActiveObject(&CLSID_OASIQ_,NULL,&punk);
if(retour != S_OK){
return;
}
HRESULT hr = IUnknown_QueryInterface_Proxy(punk,&IID_UIRManager_,(void**) &UIRManager); // General protection fault
...
由于某种原因,IUnknown_QueryInterface_Proxy 导致一般保护错误。我不明白我做错了什么?
此函数是从与主线程不同的线程调用的,但由于我调用了 CoInitialize,所以它不是错误的原因。我正在使用 C99 在 W10
上编译 32 位可执行文件
IUnknow 的 C 实现与 C++ 不同。
调用 QueryInterface 的常用方法不是使用 IUnknown_QueryInterface_Proxy(来自 RpcRT4.lib)而是这样做:
HRESULT hr = (punk)->lpVtbl -> QueryInterface(punk,&IID_UIRManager_,(void**) &UIRManager);
我正在尝试做一些 COM/OLE,这是我的代码:
static struct IUnknown* punk = NULL;
static IDispatch* UIRManager = NULL;
void DispatcherStart(){
CoInitialize(NULL);
HRESULT retour = GetActiveObject(&CLSID_OASIQ_,NULL,&punk);
if(retour != S_OK){
return;
}
HRESULT hr = IUnknown_QueryInterface_Proxy(punk,&IID_UIRManager_,(void**) &UIRManager); // General protection fault
...
由于某种原因,IUnknown_QueryInterface_Proxy 导致一般保护错误。我不明白我做错了什么?
此函数是从与主线程不同的线程调用的,但由于我调用了 CoInitialize,所以它不是错误的原因。我正在使用 C99 在 W10
上编译 32 位可执行文件IUnknow 的 C 实现与 C++ 不同。 调用 QueryInterface 的常用方法不是使用 IUnknown_QueryInterface_Proxy(来自 RpcRT4.lib)而是这样做:
HRESULT hr = (punk)->lpVtbl -> QueryInterface(punk,&IID_UIRManager_,(void**) &UIRManager);