驱动程序入门.docx
- 文档编号:30280408
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:18
- 大小:86.26KB
驱动程序入门.docx
《驱动程序入门.docx》由会员分享,可在线阅读,更多相关《驱动程序入门.docx(18页珍藏版)》请在冰豆网上搜索。
驱动程序入门
什么是驱动程序?
为术语“驱动程序”给出单一的准确定义比较困难。
就最基本的意义而言,驱动程序是一个软件组件,可让操作系统和设备彼此通信。
例如,假设应用程序需要从设备中读取某些数据。
应用程序会调用由操作系统实现的函数,操作系统会调用由驱动程序实现的函数。
驱动程序(由设计和制造该设备的同一公司编写)了解如何与设备硬件通信以获取数摇。
当驱动程序从设备获取数据后,它会将数据返回到操作系统,操作系统将数据返回至应用程序。
扩大定义
到目前为止,我们的说明采用以下几种方式进行简单化:
・并非所有驱动程序都必须由设计该设备的公司编写。
在多种情形下,设备根据巳发布的硬件标准来设计。
这表示驱动程序可以由Microsoft编写,设备设计者无须提供驱动程序。
・并非所有驱动程序都直接与设备通信。
对于给定的I/O请求(如从设备读取数据〉,通常有一些驱动程序(在堆栈中进行分层)参与该请求。
可视化堆栈的传统方式是将第一个参与对象放在顶部,将最后一个参与对象放在底部,如此图所示。
堆栈中的某些驱动程序可能通过将请求从一种格式转换至另一种格式来参与。
这些驱动程序不会与设备直接通信;它们只操纵请求并将请求传递至堆栈下方的驱动程序。
堆栈中直接与设备通信的一个驱动程序称为“函数驱动程序”;执行辅助处理的驱动程序称为“筛选器驱动程序”。
•某些筛选器驱动程序遵守并记录有关I/O请求的信息,但不会主动参与这些请求。
例如,某些筛选器驱动程序充当验证程序以确保堆栈中的其他驱动程序正确处理I/O请求。
我们可以扩大“驱动程序”的定义,方法是表示驱动程序为遵守或参与操作系统与设备之间通信的任一软件组件。
软件驱动程序
我们的扩大定义相当准确,但仍不完整,原因是某些驱动程序与任何硬件设备根本不关联。
例如,假设你需要编写可以访问核心操作系统数摇结构的工具,这些结构仅可以由核模式下运行的代码进行访问。
可以通过将工具拆分成两个组件来执行该操作。
第一个组件在用户模式下运行且提供用户界面。
第二个组件在核模式下运行且可以访问核心操作系统数据。
在用户模式下运行的组件称为应用程序,在核模式下运行的组件称为“软件驱动程序”。
软件驱动程序与硬件设备不关联。
有关处理器模式的详细信息,请参阅用户模式和核模式。
此图说明了与核模式软件驱动程序通信的用户模式应用程序。
其他说明
软件驱动程序始终在核模式下运行。
编写软件驱动程序的主要原因是荻取对仅在核模式下可用的受保护数据的访问权限。
但是设备驱动程序不会始终需要访问核模式数据和资源。
因此某些设备驱动程序在用户模式下运行。
有一系列的驱动程序我们尚未提及,“总线驱动程序”。
若要了解总线驱动程序,你需要了解设备节点和设备树。
有关设备树、设备节点以及总线驱动程序的信息,请参阅设备节点和设备堆栈。
到目前为止,我们的说明过度简化了“函数驱动程序”的定义。
我们表示设备的函数驱动程序为堆栈中直接与设备通信的一个驱动程序。
对于直接连接到外围组件互连(PCI)总线的设备而言,以上为真°PCI设备的函数驱动程序获取映射到设备上端口和存资源的地址。
函数驱动程序通过写入这些地址直接与设备通信。
但是在多种情形下,设备未直接连接到PCI总线。
相反设备连接到的主机总线适配器连接到PCI总线。
例如,USBtoaster连接到主机总线适配器(称为USB主控制器),该适配器连接到PCI总线。
USBtoaster具有函数驱动程序,USB主控制器也具有函数驱动程序。
toaster的函数驱动程序与toaster间接通信,方法是将请求发送至USB主控制器的函数驱动程序。
然后,USB主控制器的函数驱动程序与USB主控制器硬件直接通信,该硬件与toaster通信。
Filterdriverfor
USBtoaster
fQjSBhostcontrolled)-f(]lSBto日ste°
是否需要编写驱动程序?
0(共1)对本文的评价是有帮助-评价此主題
MicrosoftWindows包含适用于许多设备类型的置驱动程序。
如果有适用于你的设备类型的置驱动程序,则不必自行编写驱动程序。
你的设备可以使用置的驱动程序。
适用于USB设备的置驱动程序
如果你的设备厲于由USB设备工作组(DWG)定义的设备类,则可能已经存在适用于该设备的WindowsUSB类驱动程序。
有关详细信息,请参阅支持的USB设备美的驱动程序。
适用于其他设备的置驱动程序
目前,Microsoft为以下其他类型的设备提供置驱动程序:
设备技术和驱动程序
置驱动程序
Windows支持
描述
ACPI:
ACPI驱动程序
Acpi・sys
WindowsXP及更高版本
Microsoft通过Acpi.sys驱动程序和ACPIBIOS,为基本的ACPI设备功能提供支持。
为增强ACPI设备的功能,供应商可以提供WDM功能驱动程序。
有关WindowsACPI支持的详细信息,请参阅ACPI设计指南中的支持ACPI
设备。
音频:
Microsoft音频类驱动程序
PortCls・sys
WindowsXP及更高版本
Microsoft通过自身的端口类驱动程序(PortCl)为基本的音频渲染和音频捕捉提供支持。
音频设备的硬件供应商有责任提供兼容PortCl的适配器驱动程序。
适配器驱动程序包括初始化代码、驱动程序管理代码(包括DriverEntry功能)和音频微型端口驱动程序的集合。
有关详细信息,请参阅端口类简介。
总线:
本机SD总线驱动程序、本机SD存储类驱动程序和存储微型端口驱动程序
sdbus・sys、sffdisk.sys.sffpsd・sys
WindowsVista及更高版本
Microsoft为SD读卡器提供如下支持:
操作系统为直接连接到PCI总线的SD主机控制器提供支持。
当系统枚举SD主机控制器时,会加载本机SD总线驱动程序
(sdbus.sys)。
如果用户插入SD存卡,则除总线驱动程序以外,Windows还会加载本机SD存储类驱动程序(sffdisk.sys)和存储微型端口驱动程序
(sffpsd.sys)o如果用户插入具有其他类型功能的SD卡(例如GPS或无线LAN),则
Windows会加载供应商为该设备提供的驱动程序。
HID:
HIDI2C驱动程序
HIDI2C.sys
Windows8及更高版本
Microsoft为支持简单外设总线(SPB)和通用I/O(GPIO)的SoC系统上的HIDoverI2C设备提供支持。
它通过HIDI2C.sys驱动程序实现此支持。
有关详细信息,请参阅HIDoverI2C0
HID:
传统游戏端口驱动程序
HidGame・sys、Gameenuni.sys
WindowsVista
Windows
Server2003
WindowsXP
在WindowsVista及更早版本中,Microsoft通过HidGame.sys和Gameenum.sys驱动程序为传统(非USB、非蓝牙、非120游戏端口提供支持。
有关详细信息,请参阅Windows中支持的HID传输。
HID:
传统键盘类驱动程序
Kbdclass・sys
WindowsXP及更高版本
Microsoft通过Kbdclass.sys驱动程序为传统(非USB、非蓝牙、非I2C)键盘提供支持。
有关详细信息,请参阅键盘和鼠标HID客户端驱动程序。
为增强传统键盘的功能,供应商可以提供键盘筛选器驱动程序。
有关详细信息,请参阅MSDN代码库中的Kbfiltr示
fio
HID:
传统鼠标类驱动程序
Mouclass・sys
WindowsXP及更高版本
Microsoft通过Mouclass.sys驱动程序为传统(非USB、非蓝牙、非I2C)鼠标提供支持。
键盘和鼠标HID客户端驱动程序。
为增强传统鼠标的功能,供应商可以提供鼠标筛选器驱动程序。
有关详细信息,请参阅MSDN代码库中的Moufiltr示例。
HID:
PS/2
(i8042prt)驱动程序
I8042prt.sys
WindowsXP及更高版本
Microsoft通过18042.sys驱动程序为传统PS/2键盘和鼠标提供支持。
为增强PS/2鼠标或键盘的功能,供应商可以提供键盘或鼠标筛选器驱动程序。
有关详细信息,请参阅MSDN代码库中的Kbfiltr示例和Moufiltr示例。
映像:
设备的Web服务(WSD)扫描类驱动程序
WSDScan.sys
WindowsVista及更高版本
Microsoft通过WSD扫描驱动程序(wsdscan.sys)为Web服务扫描程序(即在Web上使用的扫描程序)提供支持。
但是,支持WSD分布式扫描管理的Web服务扫描程序设备必须实现两个Web服务协议。
有关详细信息,请参阅建用设备Web服务的
WIAo
打印:
Microsoft绘图仪驱动程序
Msplot
WindowsXP及更高版本
Microsoft通过Microsoft绘图仪驱动程序(Msplot)为支持惠普图形语言的绘图仪提供支持。
为增强绘图仪的功能,你可以创建由一个或多个绘图仪特性数据(PCD)文件组成的微型驱动程序。
有关详细信息,请参阅绘图仪驱动程序微型驱动程
打印:
MicrosoftPostScript打印机驱动程序
Pscript
WindowsXP及更高版本
Microsoft通过PostScript打印机驱动程序(Pscript)为PostScript打印机提供支持。
为增强PostScript打印机的功能,你可以创建由一个或多个PostScript打印机描述(PPD)文件和字体(NTF)文件组成的微型驱动程序。
有关详细信息,请参阅Pscript微型驱动程序。
打印:
Microsoft通用打印机驱动程序
Unidrv
WindowsXP及
更离版本
Microsoft通过通用打印机驱动程序(Unidrv)为非PostScript打印机提供支持。
为增强非PostScript打印机的功能,你可以创建由一个或多个通用打印机描述(GPD)
文件组成的微型驱动程序。
有关详细信息,请参
阅Microsoft通用打印机驱动程序。
打印:
Microsoft第4版打印机驱动程序
Windows8及更高版本
从Windows8开始,Microsoft提供了支持PostScript和非PostScript打印机以及绘图仪的单个置类驱动程序。
该驱动程序可取代Microsoft绘图仪驱动程序、Microsoft通用打印机驱动程序和MicrosoftPostScript打印机驱动程序。
该打印机驱动程序可通过自身提供基本的打印支持,无需任何修改。
有关详细信息,请参阅第4版打印机驱动程序。
打印:
MicrosoftXPS打印机驱动程序
XPSDrv
WindowsVista及更高版本
Microsoft通过XPS打印机驱动程序(XPSDrv)为打印XPS文档格式提供支持。
该驱动程序扩展了Microsoft基于GDI的第3版打印机驱动程序体系结构,可支持消耗XML纸规(XPS)文档。
通过XPSDrv打印机驱动程序,XPS文档格式可用作后台打印文件格式和文档文件格式。
该XPSDrv打印机
驱动程序可通过自身提供基本的XPS打印支持,无需任何修改。
有关详细信息,请参阅XPSDrv打印机驱动程序。
传感器:
传感器HID类驱动程序
SensorsHIDClassDriver・dll
Windows8及更高版本
Microsoft通过HID类驱动程序为笔和触摸设备提供支持。
由于
Windows8包括此HID类驱动程序和相应的HIDI2C及HIDUSB微型端口驱动程序,因此你不需要实现自己的驱动程序。
你只需在指针设备的固件中报告此白皮书中描述的使用方法。
Windows将使用你的固件及其HID驱动程序启用设备的触摸和指针功能,并为Windows触摸和指针API提供访问该设备的权限。
触摸:
Windows指针设备驱动程序
Windows8及更高版本
Microsoft通过HID类驱动程序为笔和触摸设备提供支持。
由于
Windows8包括此HID类驱动程序和相应的HIDI2C及HIDUSB微型端口驱动程序,因此你不需要实现自己的驱动程序。
你只需在指针设备的固件中报告此白皮书中描述的使用方法。
Windows将使用你的固件及其HID驱动程序启用设备的触摸和指针功能,并为Windows触摸和指针API提供访问该设备的权限。
WPD:
媒体传输协议类驱动程序
WpdMtpDr.dll、WpdMtp.dll、
WpdMtpUs.dll、WpdConns.dll和WpdUsb.sys
WindowsVista
及更高版本
Microsoft通过媒体传输协议类驱动程序为需要连接Windows的便携设备(例如,音乐播放器、数字相机、手机和健康监控设备)提供支持。
使用该类驱动程序的供应商必须在设备上实现MTP类协议。
(对于静物数字相机,MTP实现必须与PTP后向兼容。
)有关详细信息,请参阅硬件供应商指南。
选择驱动程序模型
4(共6)对本文的评价是有帮助-评价此主题
MicrosoftWindows提供了多种驱动程序模型,你可以使用这些模型编写驱动程序。
最佳驱动程序模型的选择策略取决于你计划编写的驱动程序类型。
下文介绍了这些选项:
•设备函数驱动程序
•设备筛选器驱动程序
•软件驱动程序
•文件系统筛选器驱动程序
•文件系统驱动程序
有关各种类型驱动程序之间差异的介绍,请参阅什么是驱动程序?
和设备节点和设备堆栈。
以下部分说明了如何为每种类型的驱动程序选择模型。
为设备函数驱动程序选择驱动程序模型
当你设计一个硬件设备时,首先要考虑的事项之一就是你是否需要编写函数驱动程序。
提出下列问題:
是否可以完全避免编写驱动程序?
如果必须编写函数驱动程序,则最好使用哪个驱动程序模型?
若要回答这些问题,请确定设备的何处可以容纳设备和駆动程序技术中介绍的技术列表。
参阅该特定技术的文档,以确定是否需要编写函数驱动程序以及了解哪些驱动程序模型可供设备使用。
某些个别技术具有微型驱动程序模型。
在微型驱动程序模型中,设备驱动程序由两个部分组成:
一个部分处理常规任务,另一部分处理设备特定的任务。
通常‘Microsoft编写通用部分,设备制造商编写设备特定的部分。
设备特定的部分具有多种名称,其部分名称都共享前缀“微型”。
以下是微型驱动程序模型中使用的一些名称:
•显示器微型端口驱动程序
•音頻微型端口驱动程序
・电池微型类驱动程序
・蓝牙协议驱动程序
•HID微型驱动程序
•WIA微型驱动程序
•NDIS微型端口驱动程序
•存储器微型端口驱动程序
・流微型驱动程序
有关微型驱动程序模型的槪述,请参阅微型驱动程序和驱动程序对。
并非设备和驱动程序技术中列出的每项技术都有专用的微型驱动程序模型。
特定技术的文档可能会建议你使用核模式驱动程序框架(KHDF);其他技术的文档可能会建议你使用用户模式驱动程序框架(LNDF)。
关键点是你应从研究特定设备技术的文档开始。
如果你的设备技术具有微型驱动程序模型,则必须使用徽型驱动程序模型。
否则就遵循技术特定的文档中有关是使用UMDF、KMDF还是Windows驱动程序模型(WDM)的建议。
为设备筛选器驱动程序选择驱动程序模型
一些驱动程序頻繁参与单个I/O请求(如从设备读取数据)。
驱动程序在堆栈中进行分层,并且可视化堆栈的常规方法是将第一个驱动程序放在顶部,将最后一个驱动程序放在底部。
堆栈具有一个函数驱动程序并且还可以具有筛选器驱动程序。
有关函数驱动程序和筛选器驱动程序的介绍,请参阅什么是驱动程序?
和设备节点和设备堆栈。
如果你准备为设备编写筛选器驱动程序,则确定设备的何处可以容纳设备和驱动程序技术中介绍的技术列表。
查看特定设备技术的文档是否有关于选择筛选器驱动程序模型的任何指南。
如果设备技术的文档未提供此指南,则首先考虑使用LMDF作为驱动程序模型。
如果筛选器驱动程序需要访问的数据结构无法通过UMDF获取,则考虑使用KMDF作为驱动程序模型。
在极端少见的情形中,驱动程序需要访问的数据结构无法通过KMDF获取,则使用WDM作为驱动程序模型。
为软件驱动程序选择驱动程序模型
未与设备关联的驱动程序称为“软件驱动程序”。
有关软件驱动程序的介绍,请参阅什么是驱动程序?
主题。
软件驱动程序很有用,原因是这些驱动程序可以在核模式下运行,这样为其提供了受保护操作系统数据的访问权限。
有关处理器模式的信息,请参阅用户模式和核模式。
有关软件驱动程序,你的两个选项为KMDF和旧的WindowsNT驱动程序模型。
使用KMDI'和旧的WindowsNT模型,你可以在编写驱动程序时无须考虑即插即用(PnP)和电源管理。
你可以改为专心于驱动程序的首要任务上。
使用KMDF,你不必考虑PnP和电源,因为框架会为你处理PnP和电源。
使用旧的WindowsNT模型,你不必考虑PnP和电源,原因是旧的驱动程序在与PnP和电源管理完全无关的环境中运行。
我们的建议是使用KMDF,尤其是当你已熟悉KMDF时。
如果你希望驱动程序与PnP和电源管理完全无关,则使用旧的WindowsNT模型。
如果你需要编写注意到电源转换或PnP事件的软件,则不能使用旧的WindowsNT模型;必须使用KMDFo
注意在极少情形中,你需要编写注意到PnP或电源事件的软件驱动程序,并且驱动程序需要访问无法通过KMDE获取的数据,则必须使用WDMo
为文件系统筛选器驱动程序选择驱动程序模型
有关为文件系统筛选器驱动程序选择模型的帮助,请参阅“文件系统微过滤驱动程序”和文件系统筛选器驱动程序。
为文件系统驱动程序选择驱动程序模型
有关为文件系统驱动程序选择模型的帮助,请参阅文件系统微过滤驱动程序。
相关主题
核模式驱动程序框架
用户模式驱动程序框架
Windows兼容硬件开发板
此主題尚未评级-评价此主题
Windows兼容硬件开发板(比如IntelSharksCove)使你能够为硬件组件开发软件和驱动程序,这些组件通常将合并到手机、平板电脑和其他高度集成或嵌入的系统中。
开发板
Summer2014:
新的Microsoft计划将使硬件工程师使用专为特定SoC环境设计的经济高效的开发板更轻松地开发和验证Windows驱动程序。
硬件工程师过去在为SoC平台创建Windows驱动程序方面一直面临许多挑战。
与具有PCI插槽和USB端口的电脑不同,类似平板电脑和贝壳机的SoC系统使用低功率部总线,缺少标准连接器、即插即用支持和发现机制。
通常,这些设备受安全启动的保护,而且无法用于开发或测试第三方驱动程序。
这将很快得到改变。
硬件工程师将能够购买现成的开发板,专门用于特定的SoC环境。
IntelSharksCove板
将在2014年下半年上市的一种板是IntelSharksCove硬件开发板。
IntelSharksCove板将支持设备的驱动程用开发,这些设备使用各种接口,包括:
•GPIO
•I2C
•I2S
•UART
•SDIO
•USB
即将提供:
关于IntelSharksCove板的其他信息。
获取硬件开发板
即将提供:
关于如何获取Windows兼容硬件开发板的信息。
如果你有兴趣了解更多信息,并希望获得有关硬件开发板可用性的通知,请向Fkn、dwareDevBoai、dmicrosoft・发送电子。
获取工具包和工具
若要使用Windows兼容硬件开发板,你需要以下工具包和工具:
•MicrosoftVisualStudio
•Windows驱动程厚工具包(WDK)
•WDKTestPack
•Windows调试工具
首先下载VisualStudio,然后下载WDK,再下载WDKTestPacko你不需要单独为Windows下载调试工具,因为它巳经包含在WDK中。
有关如何下载VisualStudio.WDK和WDKTestPack的信息,请参阅Windows驱动程序工具包(WDK)。
设备上的Windows在uBuild2014”大会上,Microsoft宣布了一项部项目来探索如何将Windows用于小型的趺网设备。
如果你有兴趣了解更多信息,请向WinDovicePwviewmicrosoft・发送电子。
只要我们有了可以共享的版本,就会立即联系你。
我们很高兴帮助你建立下一个大事件!
与其他开发人员联系
要与使用Windows兼容硬件开发板的其他开发人员联系,请访问Windows硬件和驱动程序开发人员社区。
编写第一个驱动程序
3(共6)对本文的评价是有帮助-评价此主題
本部分提供了三个练习,指导你完成编写和构建小型驱动程序的整个过程。
第一个练习基于用户模式驱动程序框架(UMDF),其他两个练习基于核模式驱动程序框架(KMDF).
尽管因为稳定性和可靠性的缘故UMDF为首选模型,但KMDF提供了一个有吸引力的机会,可以编写非常小的HelloWorld驱动程序。
使用KMDF,你可以编写非常简短的驱动程序,仅实现两个函数。
这些练习之间彼此独立,因此你可以采用任何顺序选择仅做其中一个练习或所有练习。
要点是获取一些有关驱动程序代码编写和构建的早期实例体验。
•基于模扳编写UMDF驱动程序
•编写非常小的KMDF驱动程序
•基于模板编写KMDE驱动程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 驱动程序 入门