作者jay70120 (小鳥頭)
看板C_and_CPP
標題[問題] 有關於 CoCreateInstance
時間Tue Apr 24 14:42:29 2018
開發平台(Platform): (Ex: Win10, Linux, ...)
Windows 10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
餵入的資料(Input):
預期的正確結果(Expected Output):
No error
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
hr = CoCreateInstance(CLSID_MbnInterfaceManager,
NULL,
CLSCTX_ALL,
IID_IMbnInterfaceManager,
(void**)&m_gInterfaceMgr);
Debug::Write(__FUNCTION__, "Enter CLSID MbnInterfaceMrg.", DEBUG_TYPE);//QQ
if (FAILED(hr))
{
Debug::Write(__FUNCTION__, "Creating COM Instance of IMbnInterfaceManager Failed.", ERROR_TYPE);
goto __Exit_CreateWWANDevice;
}
hr = m_gInterfaceMgr->GetInterfaces(&psaObjects);
if (FAILED(hr))
{
Debug::Write(__FUNCTION__, "IMbnInterfaceManager::GetInterfaces Failed.", ERROR_TYPE);
goto __Exit_CreateDevice;
}
hr = SafeArrayGetLBound(psaObjects, 1, &lLower);
if (FAILED(hr))
{
Debug::Write(__FUNCTION__, "SafeArrayGetLBound Failed.", ERROR_TYPE);
goto __Exit_CreateDevice;
}
hr = SafeArrayGetUBound(psaObjects, 1, &lUpper);
if (FAILED(hr))
{
Debug::Write(__FUNCTION__, "SafeArrayGetLBound Failed.", ERROR_TYPE);
goto __Exit_CreateDevice;
}
補充說明(Supplement):
小弟為c++的新手 目前拿到一板source code 在debug
此為放在services 的一個服務器 目前遇到的問題是 create com instance 都可以正常過
但到了 GetInterface 還有 SafeArray 都會fail 更怪的是我用手動開啟這個服務器是可以
正常的但是我把系統重開機的話就會跑出這幾段error
請問有人遇過這樣的問題嗎? 真的無解了… 嗚嗚
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.76.67
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524552152.A.D58.html
→ Lipraxde: 我覺得你應該要看看那個 hr 是什麼值 04/24 16:00
我有下了 Debug::Write(__FUNCTION__, (const char*)hr, DEBUG_TYPE)
但是沒有東西跑出來 code還會hang住 不知是否我用的方式有錯
※ 編輯: jay70120 (211.23.76.67), 04/24/2018 16:04:26
→ Lipraxde: 恩...hr的type應該長那樣嗎? 04/24 16:28
嗚… 其實我不太知道怎樣去把他po 出來 我還在試…
※ 編輯: jay70120 (211.23.76.67), 04/24/2018 17:01:50
→ petercoin: 我印象中HRESULT是DWORD 04/24 20:25
推 LPH66: HRESULT 是 Handle, 要印的話轉成 void * 最穩 04/25 02:58
感謝各位的回復
目前我用 (const char*)hr 也是印不出來…
我發現這個function是抓我的device 然後拉出來認id
我有試過把device 拔掉手動去開 看起來是會show 一樣的log fail 在一樣的地方
看來我要查清楚為什麼reboot 他認不到…
神奇的是 我用innosetup 包起來exe 去安裝是沒問題的 我改成extension inf 就會這樣
※ 編輯: jay70120 (211.23.76.67), 04/25/2018 11:30:34
→ Lipraxde: 為什麼會覺得hr是個char *? 04/25 13:38
→ Lipraxde: 他應該要指到一個字串告訴你錯誤訊息嗎? 04/25 13:38
→ Lipraxde: 一般來說function的回傳值應該是個錯誤碼吧 04/25 13:38
是的 我找到po 出來了
Debug::Write(__FUNCTION__, CHelpers::DWORDToString(hr)
這樣po才對,po出來的代碼是 2147943568
目前正在查原因
※ 編輯: jay70120 (211.23.76.67), 04/25/2018 14:02:45