線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2672
推到 Plurk!
推到 Facebook!

請問如何將DDK中的範例程式"HClient"轉換至BCB上編譯

尚未結案
c8631506
一般會員


發表:3
回覆:9
積分:2
註冊:2004-11-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-24 19:20:20 IP:210.243.xxx.xxx 未訂閱
DDK中的範例程式"HClient",是一支user mode的driver. 內容是介紹HID的應用.程式存放的路徑如下; \WINDDK\3790\src\wdm\hid\hclient 小弟想將其程式碼中有關於HID的部份轉換到BCB上編譯, 如此就能將BCB製作UI及VC撰寫底層的長處結合在一起. 小弟參考過底下連結的作法,也成功的將程式編譯出來, 可是發現BCB和VC編譯出來的程式碼,執行結果會不同. 不知為什麼會如此?請問有人可以指點一下嗎? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55700 PS:詳細的做法是將hclient中的hid.h, pnp.c, report.c三個 檔案移至BCB中.再參考上述連結的做法去利用OS提供的hid.dll. 結果是能通過BCB的編譯,但會和VC編譯出的程式執行結果不同.
c8631506
一般會員


發表:3
回覆:9
積分:2
註冊:2004-11-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-02 10:17:41 IP:210.243.xxx.xxx 未訂閱
進度報告...^^ 針對此問題,之前的解決方法是將hlient中有關HID操作的程式碼如(hid.h,pnp.c,report.c)等移至BCB上編譯(當然要做部份修改). 經測試是可以在BCB上通過編譯.但實際執行結果會和在VC上編譯的 程式有差異!可能原因是BCB對DDK/SDK指令的支援沒有VC來的完備. 故此方式不可行!! 目前的處理方式是將HID中有關DDK/SDK的部份,以VC編譯成Dll檔的 形式給BCB使用.初步測試是可行的~~ 結論是可利用此種方式將VC對底層driver的支援,和BCB對上層UI的 支援結合在一起使用.
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-09 17:43:31 IP:210.202.xxx.xxx 未訂閱
小弟之前為了公司所做的一個USB應用產品也須要寫一個測試程式去測試該產品的功能性; 用的也是HID介面, 而我也在DDK的src目錄下發現hclient這個應用程式的原始程式, 並且用DDK工具編譯過後確定沒問題, 所以也是想將其轉Port到BCB; 然而發生的問題我想也跟你一樣, BCB跟VC所編譯出來的結果不一樣, 後來小弟的應用程式有成功, 作法也跟大大一樣將hid.h, pnp.c, report.c移至BCB中, 但其中發現某些描述在BCB與VC之間發生差異, 導致執行不正確, 底下是pnp.c中的一段程式: HidDevice->InputDataLength = HidDevice->Caps.NumberInputButtonCaps numValues; HidDevice->InputData = data = (PHID_DATA) calloc (HidDevice->InputDataLength, sizeof (HID_DATA)); if (NULL == data) { return (FALSE); } 我想HID基本的概念應該就不用再說明, 這一段程式會根據裝置Report的Input Item為其建立記憶體空間, 問題就是發生在calloc的回傳值; 因為InputDataLength的值可能為0, 而透過VC編譯出來的程式碼, 變數data並不為NULL, 所以下面的判斷不會成立, 然而用BCB編出來的話, data就會為NULL, 故底下的判斷式成立導致回傳FALSE; 所以小弟在BCB中將其改成: if ((NULL == data)&& (HidDevice->InputDataLength)) { return (FALSE); } 這樣就不會有問題了, 注意像這樣的判斷在pnp.c應該有三個包括Input, Output及Feature這三個HID Report Item. 另外, 雖然我的應用程式沒問題, 但之前想要改hclient的重點在於它的插拔偵測, 但卻發現BCB的ApplcationEvents元件有收到WM_DEVICECHANGE訊息, 卻收不到DBT_DEVICEQUERYREMOVE等訊息, 所以這個功能小弟是用"騙的", 不知道大大知不知道如何去解決?
c8631506
一般會員


發表:3
回覆:9
積分:2
註冊:2004-11-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-09 19:00:37 IP:210.243.xxx.xxx 未訂閱
引言:
非常感謝你的回答,為這個問題提供了另一種的解決方法. 關於你提到的問題,很抱歉的是目前沒有處理到, 因為我是用在rs232方面...^^||
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-20 20:33:10 IP:61.66.xxx.xxx 未訂閱
請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=61716
系統時間:2024-04-29 18:34:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!