0
我試圖將一些MSMQ功能編碼到DLL(C++)中,但遇到了麻煩。基本上,當我調用創建隊列時會引發一個低級異常(請參閱下面的callstack)。令我感到沮喪的是,這段代碼在可執行文件中工作正常,它似乎只在坐在dll中失敗。我已經對代碼進行了一些清理幷包含在下面。在DLL中創建MSMQ隊列的異常
調用堆棧:
[email protected]() + 0x58 bytes
[email protected]() + 0x45 bytes
mqsec.dll!CCancelRpc::Init() + 0xa5 bytes
mqrt.dll!CFreeRPCHandles::Add() + 0x1bc bytes
mqrt.dll!RtpOneTimeThreadInit() + 0x39 bytes
[email protected]() + 0x23 bytes
mqoa.dll!CMSMQQueueInfo::Create() + 0xba bytes
代碼:
HRESULT CreateQueue()
{
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
CComQIPtr<IMSMQQueueInfo, &IID_IMSMQQueueInfo> ipQueueInfo;
hr = CoCreateInstance(CLSID_MSMQQueueInfo,
NULL,
CLSCTX_SERVER,
IID_IMSMQQueueInfo,
(void**)(&ipQueueInfo.p));
if(hr != S_OK)
return hr;
hr = ipQueueInfo->put_PathName(L".\\private$\\TestQueue");
if(hr != S_OK)
return hr;
VARIANT vtFalse;
VariantInit(&vtFalse);
vtFalse.vt = VT_BOOL;
vtFalse.boolVal = FALSE;
hr = ipQueueInfo->Create(&vtFalse, &vtFalse);
return hr;
}
記錄您返回的hr值。 –
還沒有'CoInitializeEx'返回的'HRESULT'的檢查 –