請問如何將DDK中的範例程式"HClient"轉換至BCB上編譯 |
尚未結案
|
c8631506
一般會員 發表:3 回覆:9 積分:2 註冊:2004-11-09 發送簡訊給我 |
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 發送簡訊給我 |
進度報告...^^
針對此問題,之前的解決方法是將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 發送簡訊給我 |
小弟之前為了公司所做的一個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 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |