Ctrl2Cap v2.0

作者:Mark Russinovich

發佈日期: 2006 年 11 月 1 日



介紹

Ctrl2cap 是一種核心模式裝置驅動程式,它會篩選系統的鍵盤類別驅動程式,才能將大寫鎖定字元轉換成控制字元。其他像我一樣將 UNIX 遷移至 NT 的人習慣使用 控制鍵 (即標準 PC 鍵盤上的 Caps Lock 鍵),所以這類型的公用程式對我們編輯的工作方面是必要的。

Ctrl2cap 可以在 NT 4.0 和更新的版本,以及 64 位元 Windows XP 與 Window Server 2003 中執行。

回到頁首 回到頁首


安裝和使用

將執行命令 ctrl2cap /install 的 Ctrl2cap 從目錄安裝至您已經解壓縮的 Ctrl2cap 檔案中。輸入 ctrl2cap /uninstall 進行解壓縮。如果您是在 64 位元 Windows 中執行的話,請改執行 ctrl2cap64.exe。

回到頁首 回到頁首


建置 Ctrl2cap

Ctrl2cap 需要 ddk\src\input\inc 目錄中的 ntddkbd.h,所以您必須先將該檔案複製到 ctrl2cap 目錄。如需建置標準 NT 4 驅動程式,請輸入 buildnt4;建置 Win2K WDM 驅動程式,請輸入 buildnt5。輸出檔案則放置在 \release 子目錄下。

回到頁首 回到頁首


Ctrl2cap 如何運作

NT 4 上的 Ctrlcap 實際上相當簡單。只要附加於鍵盤類別驅動程式,就能偵測鍵盤讀取要求。它針對每項要求張貼 I/O 完成回撥,並快速瀏覽傳回的掃描碼。如果剛好是大寫鎖定的設定,則 ctrl2cap 會變更為左邊的 Ctrl 鍵。

Win2K 上的 Ctrl2cap 是一種 WDM 篩選器驅動程式,在鍵盤類別裝置上鍵盤類別裝置的堆疊中進行分層。這是為了和 Win2K DDK 的 kbfiltr 範例中 i8042 連接埠裝置和鍵盤類別裝置之間加以分層,呈現對比。我選擇在鍵盤類別裝置的上方分層,原因如下:

  • 它代表 Ctrl2cap IRP_MJ_READ 攔截和管理程式碼在 NT 4 和 Win2K 版本之間共用。

  • 我不需提供 INF 檔和讓使用者使用裝置管理員進行安裝 Ctrl2cap – 只要調整適當的登錄值 (鍵盤類別裝置的 HKLM\System\CurrentControlSet\Control\Class UpperFilters 數值) 即可。請參閱 Ctrl2cap.exe 的原始程式碼,以取得更多資訊。

我的方法缺點如下 (此根據每個人不同的觀點而有不同的認定):

  • 由於不是透過裝置管理員的 INF 檔進行安裝,所以使用者沒有收到 Ctrl2cap 驅動程式檔並未經過 Microsoft 數位簽章的警告。

在這個特殊的情況下,我認為其優點多過於缺點。不過,在 Ctrl2cap 上建立 Win2K 鍵盤篩選器模型之前,強烈建議先研讀 Win2K DDK 的 kbfiltr 範例。Kbfiltr 的快速鍵輸入順序的攔截點讓 kbfiltr 將按鍵插入至輸入資料流,使得使用 Ctrl2cap 來源基礎變得更加困難。

回到頁首 回到頁首


更多相關資訊

如需更多有關撰寫篩選器驅動程式的資訊 (附加至其他驅動程式的驅動程式,使得他們可以看見自己的輸入及/或輸出),以下資源供做參考:

  • Windows NT 和 Windows 2000 DDK 範本於 \src\storage\filter\diskperf

  • Windows 2000 DDK 範本於 \src\input\kbfiltr

  • "Mark Russinovich 和 Bryce Cogswell 在 1997 年 2 月 Dr. Dobb 的期刊上聯合著作〈Examining the Windows NT File System〉,隨附檔案系統篩選器驅動程式,Filemon

下載 Ctrl2cap (48 KB)



回到頁首 回到頁首