[問題] 有關於 CoCreateInstance

看板C_and_CPP作者 (小鳥頭)時間7年前 (2018/04/24 14:42), 7年前編輯推噓1(106)
留言7則, 3人參與, 7年前最新討論串1/1
開發平台(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

04/24 16:00, 7年前 , 1F
我覺得你應該要看看那個 hr 是什麼值
04/24 16:00, 1F
我有下了 Debug::Write(__FUNCTION__, (const char*)hr, DEBUG_TYPE) 但是沒有東西跑出來 code還會hang住 不知是否我用的方式有錯 ※ 編輯: jay70120 (211.23.76.67), 04/24/2018 16:04:26

04/24 16:28, 7年前 , 2F
恩...hr的type應該長那樣嗎?
04/24 16:28, 2F
嗚… 其實我不太知道怎樣去把他po 出來 我還在試… ※ 編輯: jay70120 (211.23.76.67), 04/24/2018 17:01:50

04/24 20:25, 7年前 , 3F
我印象中HRESULT是DWORD
04/24 20:25, 3F

04/25 02:58, 7年前 , 4F
HRESULT 是 Handle, 要印的話轉成 void * 最穩
04/25 02:58, 4F
感謝各位的回復 目前我用 (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

04/25 13:38, 7年前 , 5F
為什麼會覺得hr是個char *?
04/25 13:38, 5F

04/25 13:38, 7年前 , 6F
他應該要指到一個字串告訴你錯誤訊息嗎?
04/25 13:38, 6F

04/25 13:38, 7年前 , 7F
一般來說function的回傳值應該是個錯誤碼吧
04/25 13:38, 7F
是的 我找到po 出來了 Debug::Write(__FUNCTION__, CHelpers::DWORDToString(hr) 這樣po才對,po出來的代碼是 2147943568 目前正在查原因 ※ 編輯: jay70120 (211.23.76.67), 04/25/2018 14:02:45
文章代碼(AID): #1Qtj7OrO (C_and_CPP)