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月23日 星期五
2011年12月21日 星期三
Removing Driver From DriverStore
如果驅動程式安裝/反安裝沒做好, 有可能在多次安裝新舊版驅動程式後, 發生一些詭異的問題, 譬如已經移除了驅動程式, 卻又在下次開機自動裝了起來. 這是因為 Windows 在驅動程式安裝時, 會複製一份到系統中的 DriverStore (如 C:\Windows\System32\DriverStore\FileRepository), 如果驅動程式已經被移除了, 卻還在 DriverStore 中看到, 那我們可以利用 Windows 7 內建的工具 pnputil, 將安裝包移除.
2011年12月4日 星期日
2011年11月4日 星期五
The Birth
2011年11月1日 星期二
2011年10月20日 星期四
Pregnancy Week 31, 33, 35 and 37
小汪, 隨著你漸漸長大, 骨頭開始鈣化, 透過超音波能看到的東西愈來愈少了, 這幾次去看你, 都只能看看羊水量正不正常, 頭圍大小, 肚子大小, 還有內臟等.
2011年9月13日 星期二
2011年9月12日 星期一
2011年9月10日 星期六
DebugView Log Boot Fails
在 Vista 以後的 Windows 系統中, 預設是不輸出所有種類的裝置驅動程式, 以 DbgPrint(Ex) 丟出的訊息的, 這使得我們用 DebugView 的 Log Boot 後, 依然無法看到訊息, 解決辦法就是設定 Debug Print Filter.
2011年9月6日 星期二
Zone Identifier
我們用檔案總管從網芳直接解壓 zip 檔到本機磁碟中, 接著執行剛解壓到本機磁碟的檔案, 會出現 Open File - Security Warning 這個對話框, 咦? 為什麼 Windows 知道這檔案可能有安全顧慮呢?
2011年8月25日 星期四
2011年8月24日 星期三
2011年8月20日 星期六
2011年8月14日 星期日
How to See 3D Photos
2011年8月13日 星期六
2011年8月10日 星期三
VML and DOCTYPE
最近遇到在網頁中使用 VML(Vector Markup Language) 看不到效果的問題, 結果發現移除了 DOCTYPE 就解決了, 但是網頁中其它部份卻因為沒有 DOCTYPE 而亂了, 因此看來還是需要將 DOCTYPE 加上, 往 "加了 DOCTYPE, VML 就不正常" 的方向找問題.
2011年8月8日 星期一
Controlling Your PS/2 Pointing Device Using I/O Ports
PS/2 鍵盤裝置與 PS/2 指標裝置連接 EC(包含 8042 KBC). 反過來看, 在作業系統中, 我們要與 PS/2 指標裝置溝通, 就必須透過 EC, 而這溝通的管道就是系統的 I/O port 0x60 及 0x64.
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月8日 星期五
Setting ACL by Well-Known SID Instead of Name to Avoid Multilingual Issue
以下這段 code 在大部份語系的 Windows 上試過都沒問題, 但卻在俄文語系失敗.
2011年7月2日 星期六
Accessing Higher Privileged Application
在 Vista 或是 Windows 7 中, 如果有開啟 UAC, 而經 UAC 尋問後執行的程式, 會執行於最高的權級, 跟以一般使用者權級執行的程式有所區隔, 以防止在低權級執行的惡意程式控制高權級程式, 如 SendMessage 等, 這稱為 User Interface Privileged Isolation(UIPI).
2011年7月1日 星期五
Paged Section
將 code/data 設定為 pageable, 可縮減 driver image 在 kernel memory 中的 size. 當 pageable code/data 沒用到時, 就可以將他們晾在一邊, 而有需要用到時, 才將該 paged section 取出來使用.
2011年6月28日 星期二
2011年6月2日 星期四
2011年5月12日 星期四
2011年4月28日 星期四
2011年4月7日 星期四
2011年3月26日 星期六
2011年3月22日 星期二
2011年3月10日 星期四
2011年3月5日 星期六
訂閱:
文章 (Atom)