Handle會遺失嗎或是改變型態? |
尚未結案
|
palw
初階會員 ![]() ![]() 發表:45 回覆:89 積分:26 註冊:2003-02-24 發送簡訊給我 |
您好:
最近在寫程式發現程式有點問題.我有宣告一個Handle的變數.
經由一個FunctionGetHandle並回傳給程式,傳回的Handle,
確認不是invalid Handle,我再次確認Handle是否為我所要的Device
卻會回傳不是我所要的Device,但是在Get Handle裡卻是對的.而且如果在
傳Handle value的時候,前面再加上(HANLDE)-->做強制轉換,結果就正確了.
可是本來就已經定義此變數為Handle,為什麼會有這種情況呢?請指教..
|
RaynorPao
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 您好: 最近在寫程式發現程式有點問題.我有宣告一個Handle的變數. 經由一個FunctionGetHandle並回傳給程式,傳回的Handle, 確認不是invalid Handle,我再次確認Handle是否為我所要的Device 卻會回傳不是我所要的Device,但是在Get Handle裡卻是對的.而且如果在 傳Handle value的時候,前面再加上(HANLDE)-->做強制轉換,結果就正確了. 可是本來就已經定義此變數為Handle,為什麼會有這種情況呢?請指教..palw 你好: 理論上來說應該是不會這樣子的,是否方便把你部分的程式碼貼上來呢?? (只需 要宣告、呼叫、被呼叫 function 的介面、傳回的寫法...這幾個部分) 小弟我 來看看
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
palw
初階會員 ![]() ![]() 發表:45 回覆:89 積分:26 註冊:2003-02-24 發送簡訊給我 |
RaynorPao您好,
抱歉這麼久才將程式放上來,程式主要有兩個CPP,第一個是Main Form,
第二個是usbchk-->提供Function讓Main Form呼叫.並在usbchk內宣告
DeviceHandle為全域變數.
//============================usbchk部分程式碼======================= for(i=0;i<25;i ){ if(Dflag&0x01){ TempHANDLE=OpenDeviceHANDLE(WhichDevice); if(TempHANDLE != INVALID_HANDLE_VALUE){ if(CheckDevice(TempHANDLE)==true){ DeviceHandle = TempHANDLE ; break; } else{ CloseHandle(TempHANDLE); } } } Dflag = Dflag>>1; WhichDevice ; } //==================End Usbchk===================================== //==================Main Form=================================== 呼叫CheckDevice再次確認Handle是正確的 CheckDevice(DeviceHandle)結果會等於False 但是如果在CheckDevice((Handle)DeviceHandle)結果會等於True //==========================End Main============================== |
RaynorPao
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao您好, 抱歉這麼久才將程式放上來,程式主要有兩個CPP,第一個是Main Form, 第二個是usbchk-->提供Function讓Main Form呼叫.並在usbchk內宣告 DeviceHandle為全域變數.//============================usbchk部分程式碼======================= for(i=0;i<25;i ){ if(Dflag&0x01){ TempHANDLE=OpenDeviceHANDLE(WhichDevice); if(TempHANDLE != INVALID_HANDLE_VALUE){ if(CheckDevice(TempHANDLE)==true){ DeviceHandle = TempHANDLE ; break; } else{ CloseHandle(TempHANDLE); } } } Dflag = Dflag>>1; WhichDevice ; } //==================End Usbchk===================================== //==================Main Form=================================== 呼叫CheckDevice再次確認Handle是正確的 CheckDevice(DeviceHandle)結果會等於False 但是如果在CheckDevice((Handle)DeviceHandle)結果會等於True //==========================End Main============================== palw 你好: (1)請問?? 有這種型態嗎??「Handle」?? 好像是這個樣子吧??「HANDLE」 (2)如果在 Form class 的範圍之內,寫 Handle 應該是代表 Form 的 Handle 吧?? (3)建議你再重新、仔細檢查你的程式碼看看
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
palw
初階會員 ![]() ![]() 發表:45 回覆:89 積分:26 註冊:2003-02-24 發送簡訊給我 |
|
jcjroc
高階會員 ![]() ![]() ![]() ![]() 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
palw
初階會員 ![]() ![]() 發表:45 回覆:89 積分:26 註冊:2003-02-24 發送簡訊給我 |
|
jcjroc
高階會員 ![]() ![]() ![]() ![]() 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
palw
初階會員 ![]() ![]() 發表:45 回覆:89 積分:26 註冊:2003-02-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |