3 软件设计
3. 1 WDM 模式驱动程序
在Window s XP 操作系统中,运行于用户模式的应用程序访问硬件资源是通过Win32 API 调用内核模式的驱动程序实现的。这种内核模式的驱动程序就是WDM(Window s Driver Model) 驱动程序, 它是微软在Window s XP 操作系统中提出的新的驱动程序模式, 支持即插即用、电源管理和I/ O 管理等功能。图2 是Window s XP 的系统结构。
如图2 所示设备驱动程序是操作系统的一个组成部分,它由I/ O 管理器( I/ O Manager ) 管理和调动。
I/ O管理器每收到一个来自用户应用程序的请求就创建一个I/ O 请求包( IRP) 的数据结构, 并将其作为参数传递给驱动程序。驱动程序通过识别IRP 中的物理设备对象( PDO) 来区别是发送给哪一个设备。IRP 结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。驱动程序处理完这个请求后, 在该结构中填入处理结果的有关信息,调用IoCompleteRequest 将其返回给I/ O 管理器,用户应用程序的请求随即返回。访问硬件时, 驱动程序通过调用硬件抽象层的函数实现。
3 软件设计
3. 1 WDM 模式驱动程序
在Window s XP 操作系统中,运行于用户模式的应用程序访问硬件资源是通过Win32 API 调用内核模式的驱动程序实现的。这种内核模式的驱动程序就是WDM(Window s Driver Model) 驱动程序, 它是微软在Window s XP 操作系统中提出的新的驱动程序模式, 支持即插即用、电源管理和I/ O 管理等功能。图2 是Window s XP 的系统结构。
如图2 所示设备驱动程序是操作系统的一个组成部分,它由I/ O 管理器( I/ O Manager ) 管理和调动。
I/ O管理器每收到一个来自用户应用程序的请求就创建一个I/ O 请求包( IRP) 的数据结构, 并将其作为参数传递给驱动程序。驱动程序通过识别IRP 中的物理设备对象( PDO) 来区别是发送给哪一个设备。IRP 结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。驱动程序处理完这个请求后, 在该结构中填入处理结果的有关信息,调用IoCompleteRequest 将其返回给I/ O 管理器,用户应用程序的请求随即返回。访问硬件时, 驱动程序通过调用硬件抽象层的函数实现。