logo

当前栏目:社区首页->软件开发->Windows驱动开发 转到:在该栏目发表文章社区后台管理搜索
System Management Bus 驱动开发指南
作者: chlchen2000 日期: 06-02-21, 18:19

作者:mike chen

1.本文主要描述如何开发SMBus类驱动的客户端驱动

(1)应用范围

在计算机主板上,SMBus 应用于和带宽比较低的设备进行通讯。例如电源系统,温度传感器,LID开关

(2)读者对象

本文适用于C编程者,在阅读本文前。你应该有驱动开发的基本知识

(3)系统要求

SMBus设备要求的操作系统为:Microsoft Windows Server 2003,Microsoft Windows XP, and Windows 2000 operating systems

2.SMBus 驱动客户端

本章描述了在windows 2000或以上的操作系统上,SMBus类驱动的客户端所必要的和可选的功能

(1)SMBus驱动概述

在计算机主板上,SMBus 应用于和带宽比较低的设备进行通讯。例如电源系统,温度传感器,LID开关,或者其他带宽比较低的设备。SMBus通常不是用户可以配置或者访问的。windows 2000或以后的操作系统支持SMBus设备。而windows 98/Me不支持。

一个SMB客户端驱动提供可以对一个SMBus设备进行设备相关访问的能力。一个SMB客户端程序和SMB类驱动(smbclass.sys)进行通讯。如果该设备存在,SMB客户端还和该中类型的设备的类驱动通讯。下图描述了SMB驱动控制一个SMB设备的过程。

 

SMB驱动

如上图所示,以下驱动涉及到对SMB总线上的某个设备的控制

l         SMB类驱动,它和总线,客户端驱动,SMB主控制器通讯。类驱动由微软提供,提供对所有SMB设备的通用的服务。

l         SMB主控制器驱动,它是一个必须的和微驱动,用于与SMB类驱动协同工作。SMB类驱动和SMB主控制器驱动通过总线和设备通讯。SMB主控制器驱动也由微软提供。

l         SMB 客户端驱动,它发送IRP请求到SMB类驱动进行设备操作。客户端驱动处理SMB设备的即插即用(Pnp)功能。如果该类设备的类驱动存在,客户端驱动和设备类驱动一起处理设备操作,充当功能(function)驱动。

例如,系统提供的智能电源驱动是一个SMB客户端驱动及电源微驱动。即,它既有SMB客户端驱动的功能,也有电源微驱动的功能。它和电源类驱动一起,用作SMB上的只能电源子系统的即插即用(Pnp)功能驱动。

l         设备的类驱动(可选)。如果设备类驱动不存在,上层的过滤驱动直接和SMB客户端驱动通讯。

l         上层过滤驱动(可选)。

 

(2)SMBus客户端要求的驱动例程

SMB客户端必须提供以下标准的驱动例程

l         DriverEntry,用于初始化客户端。

l         AddDevice,用于初始化设备。

l         Unload,用于卸载客户端。

l         一个或者更多的Dispatch例程用于处理以下的IRPs:

n          IRP_MJ_CREATE

n          IRP_MJ_CLOSE

n          IRP_MJ_DEVICE_CONTROL

n          IRP_MJ_PNP

n          IRP_MJ_POWER

一个SMB客户端驱动必须包括smbus.h头文件。

 

(3)SMBus客户端的DriverEngry例程

一个SMB客户端必须有DriverEngry例程,函数DriverEntry是必须的,用于操作系统在装载驱动的时候调用。DriverEngry例程函数必须和系统提供的原型一致。

SMBus客户端的DriverEngry例程

(4)SMBus客户端的AddDriver例程

 

(5)SMBus客户端的Unload例程

 

(6)SMBus客户端的Dispatch例程

 

(7)发送一个SMB请求

 

(8)请求和响应一个SMB报警通知

 

(9)安装一个SMB客户端驱动

 

 

 

 

MegaEntry 网络社区与信息交流平台!


上一篇:破解工具SoftICE与TRW2000操作入门下一篇:VC 6.0 和USB的通信

回复
标题: 

强烈建议采用IE 6.0或以上的浏览器