asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
340楼#
发布于:2002-10-24 13:43
目前NT驱动程序的调试工具只有WINDBG和SOFTICE,WINDBG的使用需要双机环境,强力推荐使用SOFTICE。注意目前国内FTP服务器上的SOFTICE 3.2 FOR NT的Setup.ins文件是错误的,它将导致安装程序不认识你的NT,可以用3.0的setup.ins文件替代3.2的setup.ins,这样就可以安装成功。

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
341楼#
发布于:2002-10-24 13:43
型驱动程序实现了支持通用总线、协议或设备类所需的功能性接口。类型驱动程序的一般特性是为逻辑设备的命令设置、协议和代码重用所需的总线接口实现标准化提供必要的条件。WDM对标准类接口的支持减少了Windows 95和Windows NT所需的设备驱动程序的数量和复杂性。Windows 2000也引入了WDM驱动程序构架。虽
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
342楼#
发布于:2002-10-24 13:43
当读硬盘文件、通信端口和有WDM驱动程序的设备时才调用相应的 Win32 API,对其它设备必须使用特定的机制。全部Windows 2000的内核模式I/O操作都使用一个共同的数据结构(IRP),Windows 98不具备这一特点,应用程序请求更达不到内核模式。不过,当谈到WDM驱动程序的时候,Windows 98内部的体系结构与Windows 2000是非常相似的。系统模块(NTKERN.VxD)包括大量Windows NT内核支持函数,它完成请求包
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
343楼#
发布于:2002-10-24 13:43
模块化的WDM体系结构中灵活统一的接口,使操作系统可以动态地配置不同的驱动程序模块来支持特定的设备。一个典型的驱动程序堆栈由通用设备、协议及特定协议和特定总线的微型驱动程序联接的总线类驱动程序构成。动态构造WDM驱动程序堆栈是实现即插即用设备支持的关键。

WDM服务使实现一个用于Windows NT和Windows 95快速反应的模型成为可能。WDM提供了多个执行优先级,包
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
344楼#
发布于:2002-10-24 13:44
为核心态(第0层)的特权级线程(不会被CPU调度程序中断)执行。32个IRQ级可以被用于区分硬件中断服务的优先级。对于每个中断,DPC被排入队列等到被启用中断的IRQ服务例程完成后再执行。DPCs通过有效的减少中断被禁止的时间,使系统对中断的响应获得了很大的提高。对于使用多处理器的基于x86的PC系统,在Windows NT下对中断的支持是以Intel的多处理器规范1.4版本为基础的。

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
345楼#
发布于:2002-10-24 13:44
对于流媒体应用程序,WDM在核心态提供了快速反应的接口来处理I/O流。WDM的流接口是通过标准的WDM类接口提供出的。

(3)WDM工作原理

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
346楼#
发布于:2002-10-24 13:44
应一个真实硬件。

动程序,并通过识别IRP中的PDO来区别是发送给哪一个设备的。另外,在驱动程序的加载方面,WDM不通过
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
347楼#
发布于:2002-10-24 13:45
另外值得注意的是,一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO与FDO。在Ring-3与Ring-0通讯方面,系统为每一个用户请求打包形成一个IRP结构,将其发送至驱
(4)WDM与其它驱动程序的比较

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
348楼#
发布于:2002-10-24 13:45
写WDM和其它模式驱动程序基本上是相同的,代码中的主要区别在于如何创建设备。在WDM驱动程序中,即插即用(PnP)管理器告知何时向系统添加一个设备,或者从系统删除设备。PnP管理器使用安装的INF文件查找新设备的正确驱动程序;而其它模式驱动程序必须发现它自己的设备,使用专门的安装程序安装。

另外在
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
349楼#
发布于:2002-10-24 13:45
另外在细节上也存在很多区别,其它模式驱动程序参数一般由注册表提供,在DriverEntry里调用读注册表的函数,然后根据注册表再调用CreateDevice,但是WDM一般不是这样,这是由于Windows 2000下支持PnP,在加载的时候会发PnP消息给Driver,所以一般不需要在DriverEntry里调用CreateDevice,而是在AddDevice里创建,或者在PnP消息里创建。一般在DriverEntry里创建的是一个与设备或者对象毫无关系的虚拟设备,用于管理与Win32的通讯。如果不想对该设备做什么特别的处理,或者设备不复杂,AddDevice可以简单返回
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
350楼#
发布于:2002-10-24 13:45
WDM驱动程序设计:基础知识篇、环境构造篇、设计开发篇、编译安装篇。

WDM驱动程序设计之环境构造篇

要想开发WDM驱动程序,我们必须首先安装DDK(设备驱动程序开发包),WDM开发环境的设置相对比较麻烦
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
351楼#
发布于:2002-10-24 13:45
这一部分描述安装Windows 98 DDK的方法。约定%98DDK%为安装的Windows 98 DDK的根目录;%MSTOOLS%为微软SDK平台的根目录;%VCPPDEV%为安装的VC++的根目录开发环境。

使用DDK的软件平台通常为Windows 98操作系统和VC++ 4.2 or 5.0版本,若要编译视频捕获则需要VC++ 5.0版本。在
ljhjiahao
驱动牛犊
驱动牛犊
  • 注册日期2002-10-10
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
352楼#
发布于:2002-10-24 13:45
给我放吧~~~


 :cool: :cool:
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
353楼#
发布于:2002-10-24 13:45
bat批处理文件将不能建立正确的环境。安装DDK 资料需要IE 4.01或以上版本,如果是从光盘或测试驱动程序则需要光驱,16MB内存是不可少的,完整安装需要82MB硬盘容量。

包括Windo
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
354楼#
发布于:2002-10-24 13:46
Setenv. ws 98 DDK在内的所有例子驱动程序都不需要在安装的SDK平台下构造。不过,如果你开始开发自己的驱动程序,可能需要的不是Windows 98 DDK中的头文件,而是SDK平台中的头文件,因此可以考虑两种方法:拷贝所需的头文件或SDK平台的文件到在%98DDK%和%VCPPDEV%下适当的Include 目录中;也可以直接安
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
355楼#
发布于:2002-10-24 13:46
3)修改CONFIG.SYS增大环境变量空间。在CONFIG.SYS文件最后加入一行:

SHELL=C:\\WINDOWS\\COMMAND.COM /E:4096 /P

在安装Windows 98 DDK之前,必a须先安装VC++编译器/开发环境,否则运行时,Windows 98 DDK的Setenv.bat批处理文件将不能建立正确的环境。

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
356楼#
发布于:2002-10-24 13:46
安装Windows 95 DDK一般需要先安装Win32 SDK,因为Windows 95 DDK需要Win32 SDK的16位资源编译器。但是Win32 SDK很大(一整张光盘的容量),而且国内难以买到,下面笔者介绍一种安装Windows 95 DDK的简单方法:

(1)修改注册表,仿真Win32 SDK已经安装的情况。建立一个名为WIN32SDK.REG的注册表文件,内容为:

REGEDIT4
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
357楼#
发布于:2002-10-24 13:46
资源管理器中双击此文件,将此文件中的内容添加到注册表。就可以安装Windows 95 DDK了。

(2)运行Windows 95 DDK中的SETUP.EXE文件,安装Windows 95 DDK到C:\\DDK。

(3)安装MASM 6.11到C:\\MASM611。安装完成后再将未安装的Windows 95 DDK中的MASM611C目录下[HKEY_USERS\\.Default\\Software\\Microsoft\\Win32SDK]

[HKEY_US
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
358楼#
发布于:2002-10-24 13:47
\"Install Dir\"=\"C:\\\\MSTOOLS\"

在的文件覆盖到C:\\MASM611\\BIN。

(4)安装VC++ 5.0到C:\\Program Files\\DevStudio\\VC。

(5)建立C:\\MSTOOLS\\BINW16目录,拷贝资源编译器。

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
359楼#
发布于:2002-10-24 13:47
Windows 95 DDK需要一个能将Win32资源的源文件编译成16位资源的资源编译器。如果有Win32 SDK,可以将BINW16目录下的文件直接拷贝到C:\\MSTOOLS\\BINW16;如果没有Win32 SDK,则可以使用第三方的资源编译器,这里以使用Borland的资源编译器为例:

首先准备一套Turbo MASM 5.0,用UNPAK工具解压缩CMDLINE.PAK文件,找到下面三个文件:
游客

返回顶部