Ctrl2Cap v2.0

Av Mark Russinovich

Publicerad: 1 november 2006

DownloadLadda ned Ctrl2Cap(48 KB)

Introduktion

Ctrl2cap är en enhetsdrivrutin i kernelläge som filtrerar systemets tangentbordsklassdrivrutin för att konvertera caps-lock-tecken till kontrolltecken. Personer som jag som migrerade till NT från UNIX är vana vid att ha kontrollnyckeln placerad där caps-lock-tangenten finns på standard-PC-tangentbordet, så ett verktyg som detta är viktigt för vårt redigerings välbefinnande.

Installation och användning

Installera Ctrl2cap som kör kommandot "ctrl2cap /install" från katalogen där du har packat upp Ctrl2cap-filerna. Om du vill avinstallera skriver du "ctrl2cap /uninstall".

Så här fungerar Ctrl2cap

På NT 4 Ctrlcap är faktiskt ganska trivialt. Det ansluter sig helt enkelt till tangentbordsklassdrivrutinen så att den fångar tangentbordsläsningsförfrågningar. För varje begäran skickas ett I/O-slutförandeåteranrop, då det tar en titt på den skanningskod som returneras. Om det råkar vara ett caps-lock ändrar ctrl2cap det till en vänsterkontroll.

På Win2K Ctrl2cap är en WDM-filterdrivrutin som lagrar i tangentbordsklassenhetens stack ovanför tangentbordsklassenheten. Detta står i kontrast till Win2K DDK:s kbfiltr-exempel som lagrar sig själv mellan i8042-portenheten och tangentbordsklassenheten. Jag valde att lägga ovanpå tangentbordsklassenheten av flera skäl:

  • Det innebär att Ctrl2cap-IRP_MJ_READ avlyssnings- och manipulationskoden delas mellan versionerna NT 4 och Win2K.
  • Jag behöver inte ange en INF-fil och låta användaren gå igenom Enhetshanteraren för att installera Ctrl2cap – jag ändrar helt enkelt lämpligt registervärde (tangentbordsklassenheternas HKLM\System\CurrentControlSet\Control\Class UpperFilters-värde).

Nackdelen med mitt tillvägagångssätt är (och detta en fördel eller nackdel beroende på din synvinkel):

  • Eftersom jag inte installerar med en INF-fil via Enhetshanteraren varnas inte användaren för att Ctrl2cap-drivrutinsfilen inte är digitalt signerad av Microsoft.

I det här fallet ansåg jag att fördelarna uppväger nackdelarna. Men innan du modellerar ett Win2K-tangentbordsfilter på Ctrl2cap föreslår jag starkt att du studerar kbfiltr-exemplet från Win2K DDK. Kbfiltrs avlyssningspunkt i nyckelinmatningssekvensen gör det mycket enkelt för kbfiltr att mata in tangenttryckningar i indataströmmen.

Mer information

Mer information om hur du skriver filterdrivrutiner (drivrutiner som kopplar sig till andra drivrutiner så att de kan se sina indata och/eller utdata) finns här källor att kolla in:

  • Windows NT- och Windows 2000 DDK-exempel \src\storage\filter\diskperf
  • Windows 2000 DDK-exempel \src\input\kbfiltr
  • "Undersöka Windows NT-filsystemet", Av Mark Russinovich, Dr. Dobb's Journal, februari 1997
  • Den medföljande filsystemfilterdrivrutinen Filemon

DownloadLadda ned Ctrl2Cap(48 KB)

Körs på:

  • Klient: Windows Vista och senare.
  • Server: Windows Server 2008 och senare.