討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
關於Windows 8的Airplane Mode Driver
更改我的閱讀文章字型大小
作者 : mmppeegg(帥竣)
[ 貼文 8 | 人氣 238 | 評價 10 | 評價/貼文 1.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/25 下午 08:48:32
大家好,小弟是驅動程式開發的新手,現在正任職於某系統商。

應公司需求小弟要開發這個Airplane Mode Driver,目前微軟有提供一個WDF的範例:

"Radio Switch Test Driver for OSR USB-FX2 Development Board"

經過survey,這個範例是for OSR USB-FX2這個device,所以都是透過USB的function來發送HID descriptor;

但微軟的文件中提到的是需要藉由ACPI notification來report HID。

目前我已經做到能註冊一個callback funciton來收到ACPI送來的notification,但如何在這個callback function裡面去report HID呢?為了這個問題我一直停滯不前,非常苦惱,可否請有經驗的先進們提供一點線索?

小弟還有幾個問題,如下:
1. 是否一定要寫成KMDF的格式才能和HIDclass.SYS做溝通?目前看到一個Intel的範例acpihid是WDF格式的!
2. 如果直接在callback function做report HID,那麼和IOCTL_HID_GET_DEVICE_DESCRIPTOR等IOCTL沒有關係了?這樣可行嗎?
3. 這個driver必須宣告成filter driver嗎?如果是的話似乎不能使用HidRegisterMinidriver這個函數了?

小弟的問題應該都蠻蠢的...但希望各位先進們能不吝指教!
作者 : mmppeegg(帥竣)
[ 貼文 8 | 人氣 238 | 評價 10 | 評價/貼文 1.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/25 下午 08:50:31
抱歉,要更正一下,小弟找到的Intel Acpihid是WDM格式的。
作者 : mmppeegg(帥竣)
[ 貼文 8 | 人氣 238 | 評價 10 | 評價/貼文 1.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/1/16 下午 02:58:24
這裡太冷清了吧?是遷站了嗎?

自己發表一下感想:
這個driver可以是filter也可以是function,而向HIDCLASS.sys註冊的動作只有在WDM格式的driver需要使用。

小弟目前做到成功連結了ACPI.SYS並在callback function中啟動了HID的通知。有興趣的人我們可以來討論細節^^

另外有一個疑問就是:在devmgmt中的disable device是跟哪隻Wdf API有關係呢?我雖然有功能了了但disable的功能不見了。
作者 : tdtsai(新兵衛) 驅動程式優秀好手貼文超過200則
[ 貼文 362 | 人氣 779 | 評價 1290 | 評價/貼文 3.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/1/30 下午 06:02:57
Disable devie is not call api of WDF. You need call CM_ function call.
>這裡太冷清了吧?是遷站了嗎?
>
>自己發表一下感想:
>這個driver可以是filter也可以是function,而向HIDCLASS.sys註冊的動作只有在WDM格式的driver需要使用。
>
>小弟目前做到成功連結了ACPI.SYS並在callback function中啟動了HID的通知。有興趣的人我們可以來討論細節^^
>
>另外有一個疑問就是:在devmgmt中的disable device是跟哪隻Wdf API有關係呢?我雖然有功能了了但disable的功能不見了。
作者 : tdtsai(新兵衛) 驅動程式優秀好手貼文超過200則
[ 貼文 362 | 人氣 779 | 評價 1290 | 評價/貼文 3.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/1/30 下午 06:05:13
Do you have modify ACPI.sys or you are write BIOS to make ACPI device to controll?
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/17 下午 01:24:47
你好, 對於airplane的技術, 有些問題想要請教. 我按照MS SPEC 下載radio switch test driver 也可以掛上driver.
但是卻無法 跟上層的 radio control management 溝通. 我本來是預期 上層應該會一直polling HID driver詢問
radio的狀態.看起來似乎不是這樣. 你的文章有提到 ACPI 通知. 但是SPEC 上並沒有看到這樣的敘述. 想要跟你請教
ACPI 那一塊的溝通該如何做, 是否可以指導.
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/17 下午 01:24:59
你好, 對於airplane的技術, 有些問題想要請教. 我按照MS SPEC 下載radio switch test driver 也可以掛上driver.
但是卻無法 跟上層的 radio control management 溝通. 我本來是預期 上層應該會一直polling HID driver詢問
radio的狀態.看起來似乎不是這樣. 你的文章有提到 ACPI 通知. 但是SPEC 上並沒有看到這樣的敘述. 想要跟你請教
ACPI 那一塊的溝通該如何做, 是否可以指導.
作者 : mmppeegg(帥竣)
[ 貼文 8 | 人氣 238 | 評價 10 | 評價/貼文 1.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/17 下午 04:28:42
我想第一步是要修改BIOS去export出來一個unknown device, 掛在HID下面(或是system下也可以)

第二步就是修改你的.inf去讓driver可以掛載上去

ACPI的部分,要宣告一個function去註冊notify

這個function會接收ACPI傳過來的event, 在這個function裡面去做report ID的動作。

>你好, 對於airplane的技術, 有些問題想要請教. 我按照MS SPEC 下載radio switch test driver 也可以掛上driver.
>但是卻無法 跟上層的 radio control management 溝通. 我本來是預期 上層應該會一直polling HID driver詢問
>radio的狀態.看起來似乎不是這樣. 你的文章有提到 ACPI 通知. 但是SPEC 上並沒有看到這樣的敘述. 想要跟你請教
>ACPI 那一塊的溝通該如何做, 是否可以指導.
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/18 上午 09:47:59
感謝你回覆我的問題, 我現在已經把driver掛起來, driver可以弄假report 回應給 windows.
windows 可以正常顯示出 airplane mode icon.
現在遇到的問題是 driver 要註冊 ACPI function.去拿取 scan code. 這部分我比較沒有想法
是否願意指點可以參考 哪一份 reference code 或是 SPEC, 感謝你的指導.

若是不方便公開, 可以mail給我 : adidwang@gmail.com
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/21 下午 03:41:11
你好, 我已經完成功能了.
關鍵點應該是在 EC/BIOS 也都有需要修改的地方. Driver部分只要註冊notify function 即可.
作者 : jjprr123(解千愁)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/22 上午 11:14:50
你好, 請問
1.我沒有這個開發治具 FX2 development board的話, 也能成功掛載這個driver?
2.BIOS 在ACPI 下弄個 device. 就可以掛載driver 了嗎? sample driver 需要修改那些呢?
3.sample driver 是和usb device 溝通的, 是不適要把對 FX2 board 設定的部分全部拿掉呢??
4.如何掛載 acpi notification 呢?

能方便給我sample code 嗎? inflame2@yahoo.com.tw
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/22 下午 01:08:18

>你好, 請問
>1.我沒有這個開發治具 FX2 development board的話, 也能成功掛載這個driver?
>2.BIOS 在ACPI 下弄個 device. 就可以掛載driver 了嗎? sample driver 需要修改那些呢?
     -> 不需要 board, 但是 driver sample code 需要把 usb board 部分移除. 不然會有BSOD
     -> BIOS 部分需要 在ASL code 把Device 宣告出來. (參考 ACPI Driver interface in windows vista SPEC)
 
>3.sample driver 是和usb device 溝通的, 是不適要把對 FX2 board 設定的部分全部拿掉呢??
>4.如何掛載 acpi notification 呢?
     -> 掛載部分 也可以參考 ACPI Driver interface in windows vista SPEC [Handling Events].
     裡面也有 sample code.

>能方便給我sample code 嗎? inflame2@yahoo.com.tw
  -> Sample code 請直接search " Radio Switch Test Driver for OSR USB-FX2 Development Board"
     下載即可. [注意的是 這份code 是 WDF, 所以需要安裝 VC 和 Win8 WDK ]
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/22 下午 01:08:51

>你好, 請問
>1.我沒有這個開發治具 FX2 development board的話, 也能成功掛載這個driver?
>2.BIOS 在ACPI 下弄個 device. 就可以掛載driver 了嗎? sample driver 需要修改那些呢?
     -> 不需要 board, 但是 driver sample code 需要把 usb board 部分移除. 不然會有BSOD
     -> BIOS 部分需要 在ASL code 把Device 宣告出來. (參考 ACPI Driver interface in windows vista SPEC)
 
>3.sample driver 是和usb device 溝通的, 是不適要把對 FX2 board 設定的部分全部拿掉呢??
>4.如何掛載 acpi notification 呢?
     -> 掛載部分 也可以參考 ACPI Driver interface in windows vista SPEC [Handling Events].
     裡面也有 sample code.

>能方便給我sample code 嗎? inflame2@yahoo.com.tw
  -> Sample code 請直接search " Radio Switch Test Driver for OSR USB-FX2 Development Board"
     下載即可. [注意的是 這份code 是 WDF, 所以需要安裝 VC 和 Win8 WDK ]
作者 : jjprr123(解千愁)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/31 下午 05:49:25
感謝各位
目前把 OSR USB FX2 sample code 的 WDF sample code 拿來修改.
依照碰一聲大大提到的 MS 的文件想去註冊 NOTIFY FUNCTION, 但是結果都一直是失敗的.

我把notify 註冊的源碼加在 AddDevice Function 裡面.
呼叫 WdfFdoQueryForInterface() 是可以成功取得 interface.

緊接著就試著去註冊, RegisterDeviceNotify. 但是不知為何無法註冊成功. 回傳status 一直是有問題的.
if(!NT_SUCCESS(status)) 判斷一直是失敗的.

是參數給錯了嗎? 還是有其他問題? 我去看了 俊大 說的 acpihid source.
WDM 方式和 wdf 方式 和參數怎麼不太一樣???
any idea ?
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/1 下午 01:17:34
建議可以把 function 貼出來看一下, 看參數是否有問題.
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/1 下午 01:17:48
建議可以把 function 貼出來看一下, 看參數是否有問題.
作者 : adidwang(碰一聲)
[ 貼文 9 | 人氣 0 | 評價 10 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/1 下午 01:17:54
建議可以把 function 貼出來看一下, 看參數是否有問題.
作者 : jjprr123(解千愁)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/1 下午 01:42:01
程式碼也是從 網路上看來的, 試過放在 AddDevice / PrepareHardware 都無法註冊成功.

 pDevContext = GetDeviceContext(hDevice);
status = WdfFdoQueryForInterface( hDevice,
&GUID_ACPI_INTERFACE_STANDARD,
(PINTERFACE)&pDevContext->AcpiInterfaces,
sizeof(ACPI_INTERFACE_STANDARD),
1,
NULL);
if (!NT_SUCCESS(status))
{
return status;
}

regstatus = pDevContext->AcpiInterfaces.RegisterForDeviceNotifications(pDevContext->AcpiInterfaces.Context, AcpiNotifyCallback, hDevice);
if (!NT_SUCCESS(regstatus ))
{ // 總是會fail.
return regstatus ;
}
 板主 : 徵求中
 > 驅動程式 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 驅動程式 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
驅動程式
1 新兵衛 1240 
2 eBoy 980 
3 牧童哥 780 
4 北極熊 580 
5 天行者 580 
6 燒酒仙 440 
7 weber 380 
8 KEN 350 
9 jonay 180 
10 掌握文武半邊天 180 
驅動程式
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
9.277344E-02