HID over I2C 即 HID protocol 在 I2C 通訊介面上的實作, 以觸控板裝置為例, 在 Windows 8 中的驅動程式堆疊如下:
2012年4月12日 星期四
2012年3月11日 星期日
Event Shared Between Kernel and User Modes
要避免應用程式沒效率地監看驅動程式的事件, 我們會很直覺地想到使用 event, 但一般只有在 user mode 或是 kernel mode 各別使用, 如果要在 user mode 及 kernel mode 使用同一個 event, 要怎麼做呢?
2012年2月22日 星期三
Certificate Chain: Intermediate CA Certificates
每次還原系統後都忘記要再安裝 Intermediate CA Certificates, 而浪費時間在解決數位簽章不能做 code signing 的問題, 這次又溫習了一次, 趕緊記下來.
2012年2月3日 星期五
2011年12月27日 星期二
Using C RTL in Windows Driver
某一天在寫驅動程式時, 需要取字串, 比對字串, 及 parse 16進位字串, 沒想太多, 就用了 C 的 run-time library 中的 strlen(), strnicmp() 及 sscanf_s(), 也編出了 32/64-bit 的 WinXP 及 Win7 版本, 接著自己在 Win7 上測試都也都沒問題.
2011年12月21日 星期三
Removing Driver From DriverStore
如果驅動程式安裝/反安裝沒做好, 有可能在多次安裝新舊版驅動程式後, 發生一些詭異的問題, 譬如已經移除了驅動程式, 卻又在下次開機自動裝了起來. 這是因為 Windows 在驅動程式安裝時, 會複製一份到系統中的 DriverStore (如 C:\Windows\System32\DriverStore\FileRepository), 如果驅動程式已經被移除了, 卻還在 DriverStore 中看到, 那我們可以利用 Windows 7 內建的工具 pnputil, 將安裝包移除.
2011年9月10日 星期六
DebugView Log Boot Fails
在 Vista 以後的 Windows 系統中, 預設是不輸出所有種類的裝置驅動程式, 以 DbgPrint(Ex) 丟出的訊息的, 這使得我們用 DebugView 的 Log Boot 後, 依然無法看到訊息, 解決辦法就是設定 Debug Print Filter.
2011年8月24日 星期三
2011年7月19日 星期二
Remove Lock
假設應用程式正在對我們的 driver 進行 I/O 要求, 有一個要求已經被分發處理, 還有許多要求正在佇列中等著, 此時 driver 也收到了 PnP manager 傳來的 surprise remove 或是 remove device 的要求, 準備移除 device object. 針對這樣的情況, 我們一定會想到要將佇列中的要求清除, 並且暫停接受任合要求(WdfIoQueuePurge), 我們也一定會想到要盡快完成那個正在處理中的要求, 但怎麼做呢?
2011年7月16日 星期六
IRQL and Page Fault
寫 Windows driver 常會看到 IRQL(IRQ Level), 它其實是對應於 CPU 提供的硬體中斷, 不同架構的 CPU 提供不等的硬體中斷數目, IRQL 愈高, 優先權就愈高, 可插斷正在低優先權中執行的工作.
2011年7月15日 星期五
PS/2 Mouse Filter Driver and Hook Procedure
PS/2 mouse driver 的 stack 如下:
Mouclass (mouse class filter driver) (Optional mouse filter driver) I8042prt (function driver) ACPI (bus driver) ----------- Device
2011年7月9日 星期六
Applying DTM Filters
在作 Driver Test Manager(DTM) 測試中, 我們可能會在 Job Monitor 中看到測試失敗(紅X)的工作項目, 通常我們就是重跑該測試項目, 再次確認. 但如果測試還是失敗呢? 那也別急著改程式, 說不定這是 Microsoft 自家的問題.
2011年7月1日 星期五
Paged Section
將 code/data 設定為 pageable, 可縮減 driver image 在 kernel memory 中的 size. 當 pageable code/data 沒用到時, 就可以將他們晾在一邊, 而有需要用到時, 才將該 paged section 取出來使用.
訂閱:
意見 (Atom)