KmdTut - 汇编语言写驱动

KmdTut是非常好的入门精进教程,目前第7部分之后只有俄文版,特意给Four-f发邮件要了目前最新的KmdTut,打算后面抽空先将俄文翻译为英文(驱动这种相对小众的领域很多术语没规范,翻译为中文难度比较大)。

Windows驱动,用C和用MASM汇编难度差别不大,不像用户层程序编译后会链接一坨crt、纷繁复杂华丽胡俏的C++特性,Windows驱动编译后非常干净,每一个有代码洁癖的代码勇士都应该尝试写个驱动 :-)

0. About
1. The Basics
  1.1 Architecture Overview
    1.1.1 Main system components
    1.1.2 Kernel Mode vs. User Mode
  1.2 Windows NT Device Drivers
    1.2.1 Types of Device Drivers
    1.2.2 Layered and Monolithic (single-layered) Device Drivers
  1.3 Thread context
  1.4 Interrupt request levels
  1.5 System Crashes
  1.6 Driver Development Kit
  1.7 Kernel-Mode Driver Kit for MASM programmers
  1.8 Driver Debugging
  1.9 Read also

2. Services
  2.1 Services
  2.2 The Service Control Manager
  2.3 The Service Control Program
    2.3.1 Establishing a connection to the SCM
    2.3.2 Installing new driver
    2.3.3 Starting the driver
    2.3.4 Uninstalling the driver
  2.4 String macros
  
3. The Simplest Device Drivers
  3.1 How to compile and link the kernel-mode device driver
  3.2 The simplest possible kernel-mode device driver
    3.2.1 Simplest driver source code
    3.2.2 DriverEntry Routine
  3.3 Beeper device driver
    3.3.1 Beeper driver source code
    3.3.2 Controlling the system timer
    3.3.3 Starting the driver automatically
  3.4 Service Control Program for giveio driver
    3.4.1 Giveio driver's SCP source code
    3.4.2 Using the registry for passing some info to the driver
    3.4.3 Accessing the CMOS
  3.5 Giveio device driver
    3.5.1 Giveio driver source code
    3.5.2 I/O permission bit map
    3.5.3 Reading info from the registry
    3.5.4 Give user-mode process access to the I/O ports
  3.6 A couple of words about driver debugging

4. The I/O Subsystem
  4.1 I/O Manager
  4.2 The control program for the VirtToPhys driver
    4.2.1 Control program source code
    4.2.2 Device object
    4.2.3 Driver object
    4.2.4 Symbolic link object
    4.2.5 File object
    4.2.6 Communicating with the device
    4.2.7 I/O Control Codes
    4.2.8 Data exchange
    4.2.9 Cleanup
    
5. The full-function driver
  5.1 The driver's source code
  5.2 Driver name and symbolic link name
  5.3 Writing DriverEntry Routine
    5.3.1 Creating Virtual Device
    5.3.2 Creating Symbolic Link
    5.3.3 Announcing the Dispatch Routines
    5.3.4 Cleanup
    5.3.5 New objects are here
  5.4 I/O Dispatch Routines
  5.5 Dispatch Routine for IRP_MJ_CREATE and IRP_MJ_CLOSE
  5.6 Calling conventions
  5.7 Memory buffer management
    5.7.1 Buffered I/O
    5.7.2 Direct I/O
    5.7.3 Neither I/O
  5.8 Dispatch Routine for IRP_MJ_DEVICE_CONTROL
  5.9 Memory Address Translation
  5.10 DriverUnload Routine
  5.11 How to compile
  5.12 Adding resources
  5.13 A little more words about debugging
  
6. System Memory Heaps
  6.1 System Memory Heaps
  6.2 Allocation from the system pool
  
7. Lookaside Lists
  7.1 Lookaside Lists
  7.2 LookasideList driver source code
  7.3 Working with Lookaside List
  7.4 AddEntry routine
  7.5 RemoveEntry routine
  
8. Working with memory
9. Working with memory
10. Registry
11. Directories and file
12. Synchronization: Timer and System Stream
13. Synchronization: Mutually exclusive access
14. Synchronization: Using the object
15. IRP life cycle
16. Filter driver (not PnP)
邮箱: (用于接收回复)
留言内容: