Architektur im Wandel  c't 6/2010 S.220 
Kernel Drivers für 32  und 64 Bit    
***************************************************************

Solution für Visual Studio 2008 32 und 64 Bit mit Beispieltreiber ctpci 
sowie dem Open Source Programme lspci von Martin Mares <mj@ucw.cz>. Letztes
wurde erweitert, so dass es ctpci32.sys oder ctpci64.sys benutzen kann  
 
ctpci ermöglicht PCI-Zugriff über die (inzwischen als veraltet erklärte) Kernel-Funktion
HalGetBusDataByOffset(). 

Zur Kompilation von ctpci benötigt man Microsoft DDK oder WDK und  
möglichst auch das aktuelle SDK. Die Pfade zum WDK/DDK und SDK sind vor dem Kompilieren in  
"Tools/Options/Projects and Solutions/VC++-Directories" einzutragen 
zum Beipiel für WDK 7600.16385.0 und SDK 7.0: 

Includes: 
C:\Program Files\Microsoft SDKs\Windows\v7.0\Include
$(VCInstallDir)include
C:\WINDDK\7600.16385.0\inc\ddk
C:\WINDDK\7600.16385.0\inc\api
...

Libs (64 Bit)
C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\x64
C:\WINDDK\7600.16385.0\lib\win7\amd64
... 

Libs (32 Bit)
C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\i386
C:\WINDDK\7600.16385.0\lib\win7\i386

Falls Sie Intrinsics in ihren Treiber verwenden wollen, etwa __rdmsr or __wrmsr, müssen Sie
intrin.h patchen, damit es mit ntddk.h zusammenspielt (siehe ctpci.cpp) 

Die Prozeduren um Treiber zu laden/entladen/starten und mit ihm zu kommunizieren sind 
in der Bibliothek pci.lib eingebunden, daher müssen lspic.c oder andere tools nicht 
geändert werden. Lspci.c wird  hier (für VS2008/Windows nur minimal geändert) compiliert 
in C++, setpci in purem C (dazu ist nur eine Typdeklaration zu ändern).
   
Um eigene, nicht zertifizierte Treiber unter 64 Bit Windows nutzen zu können, müssen Sie entweder
  
a) F8 beim Booten drücken und im Bootmenü dann nichtzertifizierte Treiber zulassen 
b) das Tool atsiv.exe verwenden, um Treiber zu laden 
c) Treiber  mit einer Testsignatur versehen und das Sysrem im Testmode booten ( 
 (geht am einfachsten mit dseo13b from NGO) 

Das Benutzen der Software geschieht auf eigenes Risiko.  
Viel Spaß 

Andreas Stiller (as@ct.de) 

