Windows2000驱动程序开发大全(第1卷)(Microsoft Corporation,中国标准出版社)的详细介绍,评论,读后感及网上价格比较。

好图书-图书价格比较与图书搜索
首页 | 排行榜 | 新书上架 | 优惠情报 | 图书分类 | 全国书店 | 请注册 或 登陆
搜索 1,679,020 种书的介绍和售价       高级搜索  使用帮助

好图书搜索 25 家网上书店, 1,679,020 种图书,售价及其他信息。 更多介绍

Windows2000驱动程序开发大全(第1卷)

Windows2000驱动程序开发大全(第1卷)

7111089545

中国标准出版社 / 2001-08-01

平装(无盘) / 238×184×45毫米 / 1228页 / 0字

¥155.00

 (1家书店)

"Windows2000驱动程序开发大全(第1卷)"的详细介绍……

本书为“Windows 2000驱动程序开发大全”的第1卷——设计指南。全书分五篇全面详尽地介绍了编写Windows 2000/98驱动程序所需的技术内容。包括利用Windows Driver Verifier构建、测试和调试Windows 2000驱动程序;怎样生成Windows Driver Model(WDM)驱动程序;描述了如何支持即插即用、电源管理特性及设备的设置和安装;详细介绍了编写内核模式、图形和网络驱动程序的细节。

由于篇幅所限,DDK(Driver Development Kit)文档中有少部分内容包含在本套书中,但随套书附赠的光盘(见套书第2卷)中包含了DDK文档的完整信息。

哪里可以买到"Windows2000驱动程序开发大全(第1卷)"?

从 1 家优秀的网上书店中选购"Windows2000驱动程序开发大全(第1卷)"

书店名称 价格 购买 去看看
去人大出版社购买'Windows2000驱动程序开发大全(第1卷)' ¥124.00
当当网  
卓越网  

 

※ 如果您是第一次来到好图书选购图书,请点此查看“购书指南”

※ 发现价格错误了?书店有售而好图书却没有显示?立刻点此给好图书改错

※ 图书价格仅供参考,实际售价及是否有库存以各网站实际标示为准。

※ 若售价差别过大,可能因不同规格或者版本引起,请自行甄别。

 

对"Windows2000驱动程序开发大全(第1卷)"的评论……

暂无评论

我来评论一下"Windows2000驱动程序开发大全(第1卷)"……

登录之后才能发表评论,请  登录  或  注册

"Windows2000驱动程序开发大全(第1卷)"的图书目录……

译者序
DDK文档说明
第一篇 驱动程序编写者指南
第1章 驱动程序开发环境 2
1.1 自由构建和检查构建 2
1.2 调试环境 3
第2章 测试驱动程序 4
2.1 Driver Verifier 4
2.2 Driver Verifier的能力 4
2.3 Driver Verifier对图形驱动程序的能力 9
2.4 激活和监视Driver Verifier 12
第二篇 即插即用、电源管理和设置设计指南
第一部分 即插即用和电源管理的要求
第1章 即插即用和电源管理的介绍 21
1.1 什么是即插即用 21
1.1.1 PnP组件 22
1.1.2 PnP的支持级别 23
1.2 什么是电源管理 23
1.2.1 电源管理的最初含义 24
1.2.2 电源管理的支持级别 24
1.2.3 全系统范围电源管理的概述 24
1.2.4 电源状态 25
1.3 设备树 26
1.4 驱动程序层次和设备对象 27
1.4.1 驱动程序种类 27
1.4.2 例子:驱动程序层次 30
1.4.3 设备对象种类 32
1.4.4 例子:设备对象 34
第2章 PnP和电源管理必需的驱动
程序支持 37
2.1 必需的PnP支持的概述 37
2.2 PnP和电源管理DriverEntry例程 37
2.3 PnP和电源管理AddDevice例程 38
2.4 DispatchPnP例程 41
2.5 DispatchPower例程 41
2.6 PnP和电源管理Unload例程 42
第二部分 即插即用
第3章 理解PnP 43
3.1 PnP驱动程序设计准则 43
3.2 PnP和设备树 44
3.3 PnP设备状态 45
3.4 动态地添加一个新的PnP设备 46
3.5 硬件资源 53
3.6 在驱动程序里使用GUID 55
3.6.1 定义和导出新的GUID 55
3.6.2 在驱动程序代码里包含GUID 56
第4章 处理即插即用IRP的规则 58
4.1 PnP IRP需求 58
4.2 沿设备堆栈向下传递PnP IRP 59
4.3 延迟PnP IRP的处理直到低层
的驱动程序完成 60
第5章 启动、停止和删除设备 65
5.1 启动一设备 65
5.1.1 启动功能驱动程序里的一个设备 65
5.1.2 启动过滤器驱动程序里的一个设备 67
5.1.3 启动总线驱动程序里的一个设备 67
5.1.4 启动设备设计注意事项 67
5.2 为了资源重新平衡而停止一个设备 68
5.2.1 理解何时停止发布IRP 68
5.2.2 处理IRP_MN_QUERY_STOP_
DEVICE请求 69
5.2.3 处理IRP_MN_STOP_DEVICE请求 71
5.2.4 处理IRP_MN_CANCEL_STOP_
DEVICE请求 71
5.2.5 当一个设备被暂停时,保留进
入的IRP 72
5.3 删除一个设备 73
5.3.1 理解何时发布删除IRP 73
5.3.2 处理一个IRP_MN_QUERY_REMOVE
_DEVICE请求 76
5.3.3 处理一个IRP_MN_REMOVE_
DEVICE请求 77
5.3.4 处理一个IRP_MN_CANCEL_
REMOVE_DEVICE请求 81
5.3.5 处理一个IRP_MN_SURPRISE_
REMOVAL请求 82
第6章 使用PnP通知 85
6.1 PnP通知概述 85
6.2 编写PnP通知回调例程的准则 86
6.3 使用PnP设备接口改变通知 87
6.3.1 为设备接口改变通知注册 87
6.3.2 处理设备接口改变事件 88
6.4 使用PnP目标设备改变通知 88
6.4.1 注册目标设备改变通知 88
6.4.2 处理一个GUID_TARGET_DEVICE
_QUERY_REMOVE事件 89
6.4.3 处理一个GUID_TARGET_DEVICE_
REMOVE_COMPLETE事件 89
6.4.4 处理一个GUID_TARGET_DEVICE_
REMOVE_CANCELLED事件 90
6.5 使用PnP硬件配置文件改变通知 90
6.5.1 注册硬件配置文件改变通知 90
6.5.2 处理硬件配置文件改变事件 91
6.6 使用PnP定制通知 91
第7章 支持多功能设备 93
7.1 支持多功能PC Card设备 93
7.1.1 支持遵照多功能标准的PC Card 94
7.1.2 支持有不完全配置寄存器地址
的PC Card 94
7.1.3 支持有不完全配置寄存器的PC Card 96
7.2 支持多功能PCI设备 99
7.3 支持其他总线上的多功能设备 100
7.4 使用系统提供的mf.sys 100
7.5 为一个多功能设备生成资源图 103
第三部分 电源管理
第8章 在驱动程序内支持电源管理 105
8.1 内核模式下的电源管理组件 105
8.1.1 ACPI BIOS 105
8.1.2 ACPI 驱动程序 105
8.1.3 电源管理器 106
8.1.4 电源管理中驱动程序的作用 106
8.2 驱动程序的电源管理职能 107
8.2.1 报告设备的电源能力 107
8.2.2 对电源管理设置设备对象标记 110
8.2.3 处理电源IRP 110
8.2.4 设备的加电 114
8.2.5 设备的掉电 114
8.2.6 激活设备唤醒能力 114
8.3 处理电源IRP的规则 115
8.3.1 使用PoCallDriver 115
8.3.2 传递电源IRP 115
8.3.3 设备休眠时排队I/O请求 117
8.3.4 处理未被支持的或者无法识别
的电源IRP 117
第9章 独立设备的电源管理 118
9.1 设备电源状态 118
9.1.1 设备工作状态D0 119
9.1.2 设备休眠状态D1、D2、和D3 119
9.1.3 设备电源状态所需的支持 120
9.2 管理设备电源策略 121
9.3 为设备电源状态处理IRP_MN_SET
_POWER 122
9.3.1 处理设备掉电IRP 122
9.3.2 处理设备加电IRP 125
9.3.3 设备电源IRP的IoCompletion例程 126
9.4 为设备电源状态处理IRP_MN_
QUERY_POWER 127
9.5 为设备电源状态发送IRP_MN_QUERY_
POWER或者IRP_MN_SET_POWER 129
9.6 检测空闲的设备 130
9.6.1 用于空闲检测的电源管理器例程 131
9.6.2 执行设备特定的空闲检测 131
第10章 处理系统电源状态请求 132
10.1 系统电源状态 132
10.1.1 系统工作状态S0 133
10.1.2 系统休眠状态S1、S2、S3和S4 133
10.1.3 系统关机状态S5 134
10.1.4 系统电源动作 135
10.2 系统电源策略 135
10.3 防止系统电源状态变化 136
10.4 为系统电源状态处理IRP_MN_
QUERY_POWER 136
10.4.1 使系统查询电源IRP失效 137
10.4.2 在设备电源策略所有者中处理
系统查询电源IRP 137
10.4.3 在总线驱动程序中处理系统
查询电源IRP 138
10.4.4 在过滤器驱动程序中处理系统
查询电源IRP 139
10.5 为系统电源状态处理IRP_MN_
SET_POWER 139
10.5.1 在设备电源策略所有者中
处理系统设置电源IRP 140
10.5.2 在总线驱动程序中处理系统设置
电源IRP 141
10.5.3 在过滤器驱动程序中处理系统设置
电源IRP 141
第11章 支持具有唤醒能力的设备 143
11.1 等待/唤醒操作综述 143
11.1.1 确定设备是否能唤醒系统 144
11.1.2 理解通过设备树的等待/唤醒
IRP的路径 145
11.1.3 完成等待/唤醒IRP综述 149
11.2 处理等待/唤醒IRP的步骤 150
11.2.1 在功能驱动程序或者过滤器驱
动程序中处理等待/唤醒IRP 150
11.2.2 在总线驱动程序中处理等待/
唤醒IRP 151
11.2.3 等待/唤醒IRP的IoCompletion例程 152
11.3 发送等待/唤醒IRP 152
11.3.1 确定何时发送等待/唤醒IRP 153
11.3.2 等待/唤醒IRP请求 153
11.3.3 等待/唤醒的回调例程 153
11.3.4 撤消等待/唤醒IRP 154
11.4 等待/唤醒IRP的Cancel例程 155
第四部分 设 置
第12章 设备安装概述 157
12.1 设备安装组件 157
12.2 PnP设备安装示例 159
12.3 Setup如何为设备选择驱动程序 161
12.4 系统设置阶段 164
第13章 为设备提供驱动程序 166
13.1 驱动程序文件 166
13.2 注册表中的驱动程序信息 167
13.3 指定驱动程序装载顺序 168
13.4 安装过滤器驱动程序 170
13.5 为设备安装Null驱动程序 171
第14章 建立INF文件 173
14.1 INF文件的一般准则 173
14.2 为设备文件说明源和目标位置 174
14.3 建立跨平台的和/或双操作系统
的INF文件 175
14.4 建立国际化的INF文件 176
14.5 在设备的INF文件中加强打开文件
的安全性 177
14.6 从应用程序访问INF 文件 178
14.6.1 打开和关闭INF文件 178
14.6.2 从INF文件提取信息 178
第15章 编写协作安装程序 179
15.1 协作安装程序概述 179
15.2 协作安装程序界面 181
15.3 协作安装程序操作 182
15.4 注册协作安装程序 185
15.4.1 注册设备专用的协作安装程序 185
15.4.2 注册类协作安装程序 186
第16章 编写类安装程序 188
16.1 类安装程序界面 188
16.2 设备安装函数小结 189
16.3 注册类安装程序 190
16.4 在类安装程序的INF文件中加强
文件打开的安全性 190
第17章 编写定制设备安装应用程序 191
17.1 安装与驱动程序共用的软件实用程序 191
17.2 定制安装应用程序准则 191
第18章 提供设备属性页 193
18.1 设备属性页所需的支持 193
18.2 处理DIF_ADDPROPERTYPAGE
_ADVANCED请求 194
18.3 属性页回调函数 195
18.4 处理属性页的Windows消息 195
第19章 设备安装疑难解答 198
19.1 使用SetupAPI记录日志 199
19.1.1 设置SetupAPI记录日志级别 199
19.1.2 解释SetupAPI日志文件示例 201
19.2 显示设备管理器中的隐藏设备 203
第20章 安装一个要求重新启动机器的
设备 204
第三篇 内核模式驱动程序设计指南
第1章 Windows 2000和WDM驱动程序 208
1.1 Windows 2000组件概述 208
1.2 Windows 2000中的驱动程序种类 209
1.3 Windows 2000和WDM驱动程序的
设计目标 211
1.3.1 可移植性 212
1.3.2 可配置性 212
1.3.3 永远抢占优先和永远中断 213
1.3.4 多处理器安全 214
1.3.5 基于对象 216
1.3.6 带有可重用IRP的包驱动I/O 216
1.3.7 支持异步I/O 217
第2章 分层的I/O、IRP和I/O对象 218
2.1 Windows 2000 I/O模型概述 218
2.2 终端用户I/O请求和Windows 2000
文件对象 219
2.3 IRP和驱动程序特定的I/O栈位置 222
2.4 驱动程序对象和标准驱动程序例程 227
2.4.1 对象的不透明性 229
2.4.2 标准驱动程序对象入口点 229
2.4.3 其他标准驱动程序例程 230
2.4.4 标准驱动程序例程的注意事项 232
2.5 设备配置和分层驱动程序 232
2.5.1 样例设备和驱动程序配置 233
2.5.2 添加驱动程序的注意事项 234
2.6 设备对象和分层驱动程序 234
2.6.1 针对样本配置的设备对象 235
2.6.2 设备对象的注意事项 236
第3章 系统定义的对象和对驱动程
序的支持 237
3.1 系统组件和分层内核模式驱动程序 237
3.1.1 操纵系统定义的对象的支持例程 238
3.1.2 存储系统定义的对象 240
3.2 设备对象和设备扩展 241
3.2.1 定义设备扩展 242
3.2.2 创建设备对象和设备扩展 243
3.2.3 初始化驱动程序特定的设备
对象和设备扩展 244
3.2.4 设置用户缓冲区的访问 245
3.3 适配器对象和DMA 251
3.3.1 映射寄存器 252
3.3.2 获取适配器对象 254
3.3.3 拆分传输请求 255
3.3.4 使用系统DMA 256
3.3.5 使用总线控制器DMA 263
3.3.6 执行发散/收集DMA 270
3.4 控制器对象 271
3.4.1 创建带有控制器扩展的控制器对象 272
3.4.2 为I/O操作分配控制器对象 273
3.5 中断对象 275
3.5.1 获得系统指定的中断向量、
DIRQL和处理器掩码 276
3.5.2 注册ISR 276
3.6 DPC对象 278
3.6.1 注册和排队DpcForIsr例程 278
3.6.2 注册和排队CustomDpc例程 279
3.7 带有相关的DPC的定时器对象 281
3.7.1 注册和启用IoTimer例程 281
3.7.2 注册和排队CustomTimerDpc例程 282
3.8 设备队列对象和互锁队列 284
3.8.1 设置设备队列对象和排队IRP 285
3.8.2 设置一个互锁队列和排队IRP 286
3.9 内核调度者对象 288
3.9.1 定时器对象 290
3.9.2 事件对象 292
3.9.3 信号量对象 294
3.9.4 互斥体对象 296
3.9.5 线程在调度者对象上等待的
报警和APC的处理 299
3.10 回调对象 300
3.10.1 定义回调对象 300
3.10.2 使用驱动程序定义的回调对象 301
3.10.3 使用系统定义的回调对象 302
第4章 驱动程序基本结构 304
4.1 标准驱动程序例程 304
4.2 最低层设备驱动程序的分段IRP处理 306
4.3 中间层驱动程序的分段IRP处理 311
4.4 设计和开发一个驱动程序 313
4.4.1 设备对象命名和设备接口注册 313
4.4.2 为驱动程序例程选择名字 314
4.4.3 开始设计 314
4.4.4 开始开发 316
第5章 DriverEntry 和 Reinitialize 例程 319
5.1 DriverEntry例程需求 319
5.1.1 DriverEntry例程语法与参数 319
5.1.2 DriverEntry返回值 320
5.2 DriverEntry例程功能 320
5.2.1 DriverEntry例程必备功能 320
5.2.2 DriverEntry可选功能 321
5.3 Reinitialize例程需求与功能 322
第6章 Dispatch例程 324
6.1 Dispatch例程需求 324
6.1.1 Dispatch例程一般实现 325
6.1.2 Dispatch例程条件实现 325
6.2 Dispatch例程基本功能 326
6.2.1 何时检查I/O栈位置 327
6.2.2 如何在一个Dispatch例程中
完成一个IRP 327
6.2.3 何时在Dispatch例程中完成一个IRP 328
6.2.4 如何从一个Dispatch例程传送带
有效参数的IRP 329
6.2.5 为较低层驱动程序分配IRP 330
6.2.6 处理异步传输请求 331
6.3 Dispatch例程设计 331
6.3.1 DispatchCreate和DispatchClose功能 332
6.3.2 DispatchCleanup功能 334
6.3.3 DispatchRead或DispatchWrite功能 335
6.3.4 Dispatch(Internal)DeviceControl功能 339
第7章 StartIo和队列管理例程 344
7.1 排队IRP 344
7.2 StartIo例程需求 345
7.2.1 设备驱动程序中的StartIo例程 345
7.2.2 StartIo例程功能 347
7.2.3 I/O操作设备编程 349
7.2.4 较高层驱动程序中的StartIo例程 349
7.2.5 实现StartIo的注意事项 350
7.3 使用互锁队列或设备队列的需求 351
7.3.1 驱动程序管理的队列的存储需求 351
7.3.2 建立驱动程序管理的队列 352
7.3.3 在驱动程序管理的队列中排队IRP 352
7.3.4 用驱动程序创建的线程管理互锁
队列 352
7.3.5 管理补充设备队列 353
第8章 中断服务例程 357
8.1 ISR需求 357
8.1.1 ISR性能 357
8.1.2 其他需要的驱动程序例程 358
8.1.3 建立一个ISR 358
8.2 ISR基本功能 358
8.3 重叠I/O操作的ISR功能 359
第9章 DpcForIsr例程和CustomDpc例程 361
9.1 DpcForIsr和CustomDpc例程需求 361
9.1.1 DpcForIsr例程与CustomDpc例程 361
9.1.2 DpcForIsr例程基本需求 362
9.1.3 CustomDpc例程基本需求 362
9.1.4 其他需要的驱动程序例程 363
9.1.5 建立DpcForIsr和CustomDpc例程 363
9.2 DpcForIsr和CustomDpc功能 364
9.2.1 使用缓冲I/O和满足设备控制IRP 365
9.2.2 直接I/O使用 365
9.2.3 实现一个DpcForIsr或CustomDpc
例程的注意事项 366
第10章 SynchCritSection例程 368
10.1 SynchCritSection例程需求 368
10.1.1 使用SynchCritSection例程 368
10.1.2 运行SynchCritSection例程 369
10.1.3 SynchCritSection例程性能需求 369
10.2 SynchCritSection例程功能 369
10.2.1 为I/O操作对设备编程 369
10.2.2 维护有关中断驱动I/O操作的状态 370
第11章 AdapterControl和Controller
Control例程 373
11.1 驱动程序控制例程 373
11.1.1 驱动程序控制例程语法和参数 373
11.1.2 从DriverControl例程返回 374
11.1.3 设计有DriverControl例程的
驱动程序 374
11.1.4 存储需求 374
11.1.5 建立AdapterControl和Controller
Control例程 375
11.2 AdapterControl例程需求 376
11.3 ControllerControl例程需求 376
第12章 Cancel例程 378
12.1 Cancel例程需求 378
12.2 处理可撤消IRP 379
12.2.1 在传递IRP的驱动程序例程中
处理可撤消IRP 380
12.2.2 在处理请求的驱动程序例程中
处理可撤消IRP 380
12.2.3 使用系统撤消自旋锁 381
12.2.4 与Cancel例程一起使用驱动程序
提供的自旋锁 381
12.3 Cancel例程功能 385
12.3.1 带有StartIo例程的驱动程序中的
Cancel例程 386
12.3.2 不带有StartIo例程的驱动程序中
的Cancel例程 386
12.4 处理可撤消IRP时的注意事项 387
第13章 IoCompletion例程 389
13.1 使用IoCompletion例程 389
13.1.1 建立IoCompletion例程 389
13.1.2 调用IoSetCompletion Routine 390
13.1.3 为低层驱动程序分配IRP 392
13.2 IoCompletion例程需要的功能 393
第14章 IoTimer和CustomTimerDpc例程 395
14.1 定时器例程需求 395
14.2 IoTimer例程功能 395
14.2.1 建立IoTimer例程 396
14.2.2 为IoTimer例程建立环境 396
14.2.3 使用IoTimer例程 396
14.3 CustomTimerDpc例程功能 397
14.3.1 设置CustomTimerDpc例程 398
14.3.2 为CustomTimerDpc例程设置环境 398
14.3.3 使用CustomTimerDpc例程 399
第15章 Unload例程 401
15.1 Unload例程需求 401
15.2 Unload例程环境 401
15.3 Unload例程功能 402
15.3.1 PnP驱动程序的Unload功能 402
15.3.2 非PnP驱动程序的Unload功能 402
第16章 常见的驱动程序设计问题 405
16.1 管理硬件优先级 405
16.2 使用自旋锁 407
16.2.1 为自旋锁和被保护数据提供
存储空间 408
16.2.2 初始化自旋锁 409
16.2.3 调用使用了自旋锁的支持例程 409
16.2.4 快速释放自旋锁 410
16.2.5 使用自旋锁时防止错误或死锁
的出现 412
16.3 轮询设备 413
16.4 管理内存的使用 414
16.4.1 使用系统内存 415
16.4.2 使用内核栈 419
16.4.3 使用后备列表 420
16.4.4 只读内存保护 421
16.5 为DMA和PIO维护高速缓存的一致性 422
16.5.1 在DMA操作期间刷新高速
缓存数据 422
16.5.2 在PIO操作期间刷新高速缓存数据 423
16.6 错误记录和NTSTATUS值 423
16.6.1 调用IoAllocateErrorLogEntry 424
16.6.2 填充错误记录包 424
16.6.3 设置错误记录包中的NTSTATUS值 426
16.6.4 调用IoWriteErrorLogEntry 427
16.6.5 定义新的IO_ERR_XXX 427
16.6.6 定义私有NTSTATUS常量 427
16.7 处理可删除介质 428
16.7.1 响应来自文件系统的验证请求 428
16.7.2 通知文件系统可能的介质改变 429
16.7.3 检查设备对象中的标志 430
16.7.4 在中间层驱动程序中建立IRP 430
16.8 使设备对应用程序和驱动程序可用 430
16.8.1 注册设备接口 431
16.8.2 激活和禁止设备接口 432
16.8.3 使用设备接口 432
16.9 可分页代码和数据 433
16.9.1 使驱动程序代码可分页 433
16.9.2 锁住可分页代码或数据 435
16.9.3 对整个驱动程序分页 437
16.10 常见的驱动程序可靠性问题 438
16.10.1 缓冲I/O中的错误 439
16.10.2 引用用户空间地址时的错误 442
16.10.3 直接I/O中的错误 443
16.10.4 调用者输入和设备状态中的错误 444
16.10.5 Dispatch例程中的错误 446
16.10.6 多处理器环境中的错误 447
16.10.7 处理IRP时的错误 448
第四篇 图形驱动程序设计指南
第一部分 图形驱动程序
第1章 图形系统概述 451
第2章 对图形驱动程序的GDI支持 452
2.1 从驱动程序的观点看GDI 452
2.1.1 作为应用程序图形语言的GDI 453
2.1.2 作为绘制引擎的GDI 453
2.2 GDI/驱动程序的分工 454
2.2.1 GDI和驱动程序的通信 454
2.2.2 PDEV协商 455
2.2.3 表面协商 456
2.3 GDI支持的服务 460
2.3.1 GDI对表面的支持 460
2.3.2 GDI对调色板的支持 461
2.3.3 路径的GDI服务 462
2.3.4 GDI绘图服务及其他 462
2.3.5 GDI字体和文本服务 463
2.3.6 GDI支持的服务及其他 464
2.4 浮点数支持 464
2.5 数据类型 464
第3章 支持DDI 466
3.1 图形驱动程序函数支持 466
3.1.1 必需的图形驱动程序函数 466
3.1.2 有条件地需要的图形驱动
程序函数 467
3.1.3 可选的图形驱动程序函数 467
3.2 支持初始化和终止函数 469
3.2.1 驱动程序初始化和清除 469
3.2.2 PDEV初始化和清除 470
3.2.3 启用和禁用表面 471
3.3 创建设备相关位图 471
3.4 支持图形输出 472
3.4.1 绘制直线和曲线 472
3.4.2 绘制和填充路径 476
3.4.3 拷贝位图 478
3.4.4 过渡调色技术 480
3.4.5 图像颜色管理 480
3.5 支持DDI颜色和调色板函数 481
3.5.1 管理调色板 481
3.5.2 实现画刷 481
3.6 支持DDI字体和文本函数 482
3.6.1 管理和优化字体 482
3.6.2 绘制文本 485
第二部分 显示器和视频微端口驱动程序
第4章 显示器介绍 487
4.1 显示器体系结构 487
4.1.1 显示器驱动程序职责 488
4.1.2 视频微端口驱动程序职责 488
4.2 图形适配器的类型 489
4.2.1 帧缓冲区 489
4.2.2 加速器 489
4.2.3 协处理器 489
4.2.4 VGA 489
4.3 一般的设计和实现策略 489
4.4 访问图形适配器 490
4.4.1 通过IOCTL和视频微端口
驱动程序通信 490
4.4.2 访问帧缓冲区和硬件寄存器 490
4.5 创建图形INF文件 491
4.5.1 INF GeneralConfigData节 492
4.5.2 显示器INF文件节 492
4.5.3 监视器INF文件节 493
4.6 显示器和视频微端口驱动程序
的兼容性测试要求 495
4.6.1 INF和安装的要求 495
4.6.2 视频微端口驱动程序的要求 495
4.6.3 显示器驱动程序的要求 496
4.6.4 控制面板的要求 496
第5章 显示器驱动程序 497
5.1 显示器驱动程序DDI 函数 497
5.1.1 必需的显示器驱动程序函数 497
5.1.2 有条件地需要的显示器驱动
程序函数 498
5.1.3 可选的显示器驱动程序函数 498
5.2 显示器驱动程序初始化 499
5.3 桌面管理 501
5.3.1 切换桌面:对DrvAssertMode的响应 501
5.3.2 返回显示器模式:DrvGetModes 501
5.3.3 支持多PDEV 501
5.4 指针控制 503
5.4.1 指针绘制 504
5.4.2 控制指针:DrvSetPointerShape 505
5.4.3 移动指针:DrvMovePointer 505
5.5 管理显示器调色板 505
5.6 显示器驱动程序中的位图 505
5.7 异步绘图 506
5.8 显示器驱动程序中的透明性 507
5.9 显示器驱动程序的特别效果 507
5.10 显示器的颜色管理 507
5.11 DirectDraw和GDI 509
5.12 跟踪窗口变化 509
5.13 支持DitherOnRealize标志 511
5.14 支持分组的帧缓冲区 511
5.15 卸载视频硬件 514
5.16 显示器驱动程序中的多监视器支持 514
5.17 镜像驱动程序 515
5.17.1 镜像驱动程序INF文件 516
5.17.2 镜像驱动程序安装 516
5.18 显示器驱动程序测试工具 517
5.18.1 Newdisp:动态重装显示器
驱动程序 517
5.18.2 允许的驱动器加速的动态改变 518
第6章 DirectDraw DDI 519
6.1 DirectDraw驱动程序头文件、示例
代码和参考 519
6.2 DirectDraw体系结构概述 519
6.2.1 关于DirectDraw 521
6.2.2 DirectDraw驱动程序 521
6.2.3 硬件仿真层次 522
6.3 DirectDraw驱动程序基础 522
6.3.1 DirectDraw表面 523
6.3.2 显示内存 524
6.3.3 内存配置例子 526
6.3.4 交换 532
6.3.5 使用图阵 537
6.3.6 假定状态信息的驱动程序 539
6.3.7 打开显示卡并在Windows 95/ Windows
98上改变模式 539
6.4 DirectDraw驱动程序初始化 540
6.5 DirectX视频端口扩展 541
6.5.1 视频端口扩展背景 542
6.5.2 DirectX VPE的初始化 546
6.5.3 内核模式视频传输支持的
DirectDraw接口 546
6.6 颜色控制初始化 546
6.7 AGP支持 547
6.7.1 标志为支持非本地显示内存 547
6.7.2 指定非本地显示内存堆 548
6.7.3 实际堆基地址的通知 548
6.7.4 非本地显示内存表面的回调处理 549
6.7.5 在非本地显示内存中重新排序纹理 550
6.7.6 处理DMA样式的AGP 550
6.8 内核模式视频传输 552
6.8.1 VPE和内核模式视频传输的
体系结构 552
6.8.2 使用内核模式视频传输 553
6.8.3 Windows 2000的DxApi微端口功能 554
6.9 扩展表面定位 555
6.9.1 旧式定位方法的回顾 556
6.9.2 使用扩展的表面定位 556
6.10 扩展的表面能力 557
6.10.1 新的表面能力 557
6.10.2 暴露扩展表面能力 558
6.10.3 扩展的堆限制 558
6.10.4 扩展的表面描述结构 559
6.11 压缩纹理表面 559
6.11.1 列举DXT格式 560
6.11.2 创建压缩纹理表面 560
6.11.3 使用压缩纹理表面 560
6.12 运动补偿 561
6.13 返回DirectDraw和Direct3D的值 562
第7章 Direct3D DDI 564
7.1 Direct3D DDI 头文件、示例代码
和参考 564
7.2 跨平台Direct3D驱动程序开发 564
7.3 Direct3D驱动程序回调函数和函数 565
7.3.1 所需的Direct3D驱动程序回调
函数和函数 565
7.3.2 操作码处理 566
7.3.3 Direct3D驱动程序回调函数的
返回码 566
7.4 Direct3D驱动程序初始化 566
7.5 Direct3D环境管理 567
7.5.1 建立环境 568
7.5.2 删除环境 568
7.5.3 在环境中维护状态 568
7.5.4 Direct3D表面处理概览 568
7.5.5 进一步了解句柄以及通过D3dCreateSurface
Ex创建驱动程序方表面的结构 569
7.5.6 为什么驱动程序方的结构不能只
是一个指向表面的指针 569
7.5.7 D3dCreateSurfaceEx和后援表面 569
7.5.8 使用D3dCreateSurfaceEx要考
虑的其他问题 570
7.6 Direct3D纹理管理 571
7.6.1 多纹理 572
7.6.2 调色板纹理 577
7.6.3 纹理位块转移 577
7.6.4 驱动程序管理的纹理 578
7.7 绘图原语和状态改变 578
7.7.1 命令和顶点缓冲区 578
7.7.2 Direct3D命令缓冲区 580
7.7.3 Direct3D顶点缓冲区 582
7.7.4 加速状态管理 582
7.8 柔性顶点格式 583
7.9 Direct3D驱动程序的高级主题 586
7.9.1 优化的纹理 586
7.9.2 模板位面 587
7.9.3 Guard Band Clipping 588
7.9.4 范围调整 589
7.9.5 W缓冲区 589
7.9.6 Bump Mapping 590
7.9.7 硬件变换和照明 591
7.10 Direct7.0发行事项 599
7.10.1 FVF 更新 600
7.10.2 光栅更新 600
第8章 小型客户驱动程序 601
8.1 MCD头文件、示例代码和参考 601
8.2 MCD体系结构 601
8.3 MCD接口 603
8.3.1 必需的MCD函数 603
8.3.2 特定条件下必需的MCD函数 603
8.3.3 可选的MCD函数 603
8.4 MCD初始化 604
8.4.1 Hdev句柄 605
8.4.2 像素格式 605
8.5 绘制设备环境 605
8.5.1 设备环境的创建 606
8.5.2 设备环境绑定 607
8.5.3 设备环境删除 607
8.5.4 状态 607
8.5.5 视口 608
8.6 内存管理 608
8.7 帧缓冲区管理 609
8.7.1 分配绘制缓冲区 609
8.7.2 查询绘制缓冲区 609
8.7.3 交换绘制缓冲区 609
8.7.4 MCD中的窗口跟踪 610
8.8 绘制操作 610
8.8.1 绘制OpenGL的原语 610
8.8.2 绘制间距 612
8.8.3 清除缓冲区 613
8.8.4 同步化 613
8.9 纹理映像 614
8.9.1 纹理环境状态 614
8.9.2 纹理状态 614
8.10 像素操作 616
8.11 分层平面 617
8.11.1 描述分层平面 617
8.11.2 交换分层平面 618
8.11.3 管理分层调色板 618
第9章 视频微端口驱动程序 619
9.1 视频微端口头文件、示例代码和参考 619
9.2 在图形体系结构中的视频微端口
驱动程序 620
9.3 视频微端口驱动程序接口 621
9.3.1 必需的微端口驱动程序函数 621
9.3.2 有条件必需的视频微端口驱
动程序函数 622
9.3.3 可选的视频微端口驱动程序 622
9.4 视频微端口驱动程序的初始化 623
9.4.1 启动视频微端口驱动程序 623
9.4.2 声明继承资源 626
9.4.3 为与显示驱动程序通信而初始化
视频微端口 627
9.5 视频微端口设备扩展 627
9.6 视频微端口的注册表回调函数 628
9.7 处理视频请求 628
9.7.1 系统定义的IOCTL_VIDEO_XXX
请求 629
9.7.2 自定义的显示微端口IOCTL_VIDEO
_XXX请求 630
9.7.3 处理不支持的IOCTL_VIDEO_XXX
请求 630
9.8 在视频微端口中支持PnP及电源管理 630
9.9 在视频微端口驱动程序中使用AGP 631
9.9.1 通过AGP存取系统内存 631
9.9.2 从AGP使用中释放内存 631
9.10 图形适配器的子设备 631
9.10.1 侦测子设备 632
9.10.2 与子设备驱动程序通信 632
9.11 视频微端口中的中断 632
9.12 视频微端口的定时器 634
9.13 在视频微端口中对适配器重置 634
9.14 微端口驱动中的镜像驱动程序支持 634
9.15 视频微端口的TV连接器及拷贝保护
支持 635
9.15.1 查询TV连接器及硬件的拷贝保护 635
9.15.2 设置TV连接器及拷贝保护硬件 636
9.16 VGA兼容的微端口SvgaHwIoPortXxx 637
9.16.1 基于x86机器的窗口式VDM 637
9.16.2 基于x86机器的全屏VDM 637
9.16.3 VGA兼容的微端口的HwFind
Adapter 638
9.16.4 在SvgaHwIoPortXxx中验证指令 639
9.16.5 VGA兼容的HwVidStartIO 640
9.17 将Windows NT 4.0的微端口驱动程序
转换到Windows 2000 640
第三部分 打印驱动程序和假脱机组件
第10章 打印介绍 643
第11章 打印假脱机程序的体系结构 644
11.1 假脱机组件介绍 644
11.2 打印提供者 645
第12章 打印机驱动程序体系结构 652
12.1 打印机驱动程序组件 652
12.2 打印机图形DLL 652
12.3 打印机接口DLL 659
12.4 打印机数据文件 660
第13章 微软通用打印机驱动程序 661
13.1 通用打印机驱动程序介绍 661
13.1.1 Unidrv能力 662
13.1.2 Unidrv组件 662
13.1.3 Unidrv小驱动程序 663
13.1.4 Unidrv用户接口 663
13.1.5 Unidrv绘制器 664
13.1.6 GPD文件实例 664
13.1.7 微软小驱动程序开发工具 664
13.2 GPD文件介绍 665
13.2.1 GPD文件条目 665
13.2.2 基本单位 676
13.2.3 在小驱动程序中使用多个GPD文件 677
13.2.4 在小驱动程序中使用资源DLL 677
13.3 打印机属性 678
13.3.1 打印机属性格式 678
13.3.2 属性类型 678
13.3.3 一般属性 678
13.4 打印机命令 687
13.4.1 命令条目格式 687
13.4.2 命令名称 688
13.4.3 命令属性 694
13.4.4 命令字符串格式 695
13.4.5 命令执行顺序 697
13.5 打印机特性 699
13.5.1 标准特性 699
13.5.2 定制特性 700
13.5.3 特性条目格式 701
13.5.4 特性属性 702
13.5.5 特性冲突优先级 703
13.6 打印机选项 704
13.6.1 标准选项 704
13.6.2 定制选项 708
13.6.3 选项条目格式 708
13.6.4 选项属性 708
13.6.5 选项限制 715
13.7 打印机字体描述 717
13.7.1 硬件驻留字体 718
13.7.2 Cartridge字体 718
13.7.3 字体替换 719
13.8 条件语句 720
13.9 压缩光栅数据 723
13.9.1 使用Unidrv支持的压缩 723
13.9.2 使用定制的压缩 724
13.10 过滤光栅数据 724
13.11 处理颜色格式 724
13.12 用Unidrv过渡调色 725
13.12.1 GDI提供的过渡调色 725
13.12.2 驱动程序提供的过渡调色 726
13.12.3 设备提供的过渡调色 728
13.13 控制图像质量 728
13.14 处理可安装的特性及选项 731
13.15 指定特性和选项显示的顺序 732
13.16 描述打印机内存配置 733
13.17 指定纸张尺寸 734
13.17.1 支持标准纸张尺寸 735
13.17.2 支持厂商定义的纸张尺寸 735
13.17.3 支持用户定义的纸张尺寸 736
13.18 引用场所 740
13.19 安装一个Unidrv小驱动程序 741
第14章 微软PostScript打印机驱动程序 743
14.1 Pscript能力 743
14.2 Pscript组件 743
14.3 Pscript小驱动程序 744
14.3.1 转换AFM文件到NTF文件 745
14.3.2 安装Pscript小驱动程序 746
14.4 Pscript用户接口 746
14.5 Pscript绘制器 747
第15章 微软绘图仪驱动程序 748
15.1 绘图仪驱动程序能力 748
15.2 绘图仪驱动程序组件 748
15.3 绘图仪驱动程序文件示例 749
15.4 绘图仪驱动程序的小驱动程序 749
15.5 绘图仪驱动程序用户接口 752
15.6 绘图仪驱动程序绘制器 753
第16章 定制微软的打印机驱动程序 754
16.1 用户接口插件 754
16.1.1 用户接口插件介绍 754
16.1.2 UI插件的例子 755
16.1.3 UI插件的COM接口 755
16.1.4 提供DEVMODE结构附加项 756
16.1.5 从UI插件访问驱动程序设置 756
16.1.6 修改一个驱动程序提供的属性
表页面 756
16.1.7 增加新的属性表页面 757
16.1.8 定制其他的打印机接口操作 758
16.2 绘制插件 758
16.2.1 绘制插件介绍 758
16.2.2 绘制插件实例 758
16.2.3 绘制插件的COM接口 759
16.2.4 定制的DDI函数 761
16.2.5 定制的PDEV结构 761
16.2.6 从绘制插件访问驱动程序设置 762
16.2.7 与Pscript有关的定制绘制 762
16.2.8 与Unidrv有关的定制绘制 762
16.3 实现打印机驱动程序的COM接口 767
16.3.1 打印机驱动程序的接口标识符 768
16.3.2 创建插件 768
16.3.3 从打印机驱动程序访问插件接口 769
16.3.4 从插件访问打印机驱动程序接口 769
16.4 安装定制的驱动程序组件 770
第17章 定制打印假脱机组件 772
17.1 编写打印处理器 772
17.1.1 对打印处理器的介绍 772
17.1.2 打印处理器示例 773
17.1.3 由打印处理器定义的函数 774
17.1.4 处理一个打印作业 774
17.1.5 安装打印处理器 775
17.2 编写打印监视器 776
17.2.1 语言监视器 776
17.2.2 端口监视器 776
17.2.3 语言和端口监视器交互 777
17.2.4 由打印监视器定义的函数 778
17.2.5 初始化打印监视器 779
17.2.6 打开及关闭一个端口 780
17.2.7 打印一个打印作业 780
17.2.8 管理端口 781
17.2.9 为在群集打印服务器中使用而转
换打印监视器 782
17.2.10 安装打印监视器 783
17.3 编写网络打印提供者 784
17.3.1 部分打印提供者概述 784
17.3.2 支持打印机变化的通知 785
17.3.3 安装一个网络打印提供者 786
第18章 Internet打印 787
18.1 从应用程序打印到URL 787
18.2 查看打印Web页面 788
18.3 定制打印Web页面 790
18.3.1 打印Web页面的ASP文件 790
18.3.2 定制打印机细节的Web页面 790
18.3.3 安装定制的打印Web页面 793
18.4 从Web页面安装打印驱动程序 794
第19章 安装及配置打印机驱动程序 795
19.1 打印机的即插即用 795
19.2 打印机的INF文件 795
19.2.1 打印机DIRID 796
19.2.2 打印机INF文件条目 796
19.2.3 打印机INF文件的数据部分 798
19.2.4 打印机INF文件安装部分 799
19.2.5 打印机INF文件CopyFiles节 799
19.2.6 打印机INF文件实例 800
19.3 打印机的目录服务 800
19.3.1 打印假脱机程序对打印机目录服务
的支持 800
19.3.2 打印机驱动程序对打印目录服务
的支持 801
19.4 支持点号及打印 802
19.4.1 点号及打印介绍 802
19.4.2 在打印机安装过程中支持点
号及打印 802
19.4.3 在打印机连接过程中支持点
号及打印 804
第20章 CPSUI 807
20.1 CPSUI 介绍 807
20.2 CPSUI应用程序实例 807
20.3 CPSUI提供的函数 808
20.4 应用程序提供的回调函数 808
20.4.1 页面创建回调函数 808
20.4.2 页面事件回调函数 809
20.5 创建属性表页面 809
20.5.1 属性表选项 810
20.5.2 CPSUI支持的窗口控件 810
20.5.3 CPSUI提供的页面和模板 811
20.5.4 指定页面的方法 811
20.5.5 在打印机驱动程序中使用CPSUI 812
第21章 打印机颜色管理 814
21.1 允许颜色管理 814
21.2 控制颜色管理 814
21.2.1 系统控制 815
21.2.2 驱动程序控制及设备控制 815
21.2.3 支持CMYK颜色空间 816
21.2.4 对JPEG及PNG图像的颜色管理 816
21.3 定位ICC配置文件 816
21.4 安装ICC配置文件 817
第五篇 网络驱动程序设计指南
第一部分 网络驱动程序
第1章 网络驱动程序设计指南向导 821
第2章 内核模式驱动程序的网络结构 823
2.1 Windows 2000 网络结构和OSI模型 823
2.2 NDIS驱动程序 824
2.2.1 NDIS微端口驱动程序 825
2.2.2 NDIS中间层驱动程序 826
2.2.3 NDIS协议驱动程序 828
2.3 TDI驱动程序 828
2.4 网络驱动程序环境 829
2.4.1 无连接环境的网络驱动程序 829
2.4.2 面向连接环境下的网络驱动程序 829
2.4.3 WAN网络驱动程序的环境 831
第3章 网络驱动程序编程要点 833
3.1 可移植性 833
3.2 多处理器支持 833
3.3 IRQL 834
3.4 同步和通知 834
3.5 包结构 836
3.6 使用共享内存 837
3.7 异步I/O和完成函数 837
第二部分 微端口NIC驱动程序
第4章 NDIS NIC微端口驱动程序 839
4.1 NIC微端口驱动程序类型 839
4.2 网络接口卡支持 839
4.3 微端口驱动程序代码的重要特征 841
4.3.1 MiniportXxx函数 841
4.3.2 与NDIS库链接 841
4.3.3 微端口适配器环境 842
4.3.4 VC环境 842
4.3.5 网络OID 843
4.4 示例驱动程序 843
第5章 NIC微端口操作和函数概述 844
5.1 NIC微端口操作 844
5.1.1 初始化NDIS库和注册微端口
驱动程序 844
5.1.2 注册网络接口卡 845
5.1.3 对查询和设置微端口信息做出响应 845
5.1.4 创建、激活、去活和删除虚连接 846
5.1.5 发送数据 846
5.1.6 指示和传递接收到的数据 848
5.1.7 指示状态 849
5.1.8 复位网络接口卡 849
5.1.9 终止一个微端口NIC驱动程序 850
5.2 微端口上边界函数 850
5.2.1 无连接微端口的上边界函数 850
5.2.2 面向连接微端口的上层函数 852
5.3 由微端口调用的NDIS函数 853
5.3.1 NDIS提供的初始化和注册函数 854
5.3.2 NDIS提供的硬件设置函数 855
5.3.3 NDIS提供的I/O端口函数 855
5.3.4 NDIS数据的与DMA相关的函数 856
5.3.5 NDIS提供的中断处理函数 857
5.3.6 NDIS提供的同步函数 858
5.3.7 NDIS提供的状态函数 859
5.3.8 NDIS为无连接微端口提供的
发送和接收函数 860
5.3.9 NDIS为面向连接微端口提供
的发送和接收函数 860
5.3.10 NDIS提供的带外数据宏 861
5.3.11 NDIS提供的包和缓存处理函数 861
5.3.12 NDIS提供的支持函数 863
5.3.13 NDIS提供的介质相关宏 866
第6章 NIC微端口驱动程序入口点
和初始化 868
6.1 NDIS微端口驱动程序入口函数 868
6.1.1 初始化包裹 869
6.1.2 注册微端口 869
6.2 NDIS微端口初始化 874
6.2.1 注册NIC 875
6.2.2 声明资源 877
6.2.3 注册中断 881
6.2.4 注册关闭函数 882
6.2.5 初始化轮询计时器 882
6.2.6 初始化期间的同步 882
6.2.7 在初始化时处理错误 883
6.3 查询微端口信息 883
6.4 减少微端口初始化时间 883
第7章 数据传输 886
7.1 中断处理 886
7.2 DPC处理程序 888
7.3 带外数据包 889
7.3.1 等待发送的OOB数据 890
7.3.2 接收的OOB数据 891
7.4 发送包 892
7.4.1 无连接微端口的多包传送 892
7.4.2 无连接微端口的单包发送 894
7.4.3 面向连接微端口的多包发送 896
7.4.4 发送数据前的内存同步 897
7.4.5 发送步骤 897
7.5 非串行化微端口 901
7.5.1 非串行化微端口的NDIS要求 901
7.5.2 非串行化微端口的驱动程序
内部要求 902
7.6 接收数据 902
7.6.1 无连接和面向连接微端口的
多包接收 902
7.6.2 无连接微端口的单包接收 905
7.6.3 接收数据的高速缓存因素 907

"Windows2000驱动程序开发大全(第1卷)"的书摘……

为精确模拟一个内存条件,这些分配故障直到系统启动7min后才被注入,因此,任何在该过程中暴露的驱动程序错误将被当做合法的运行时间问题,而非不切实际的现象。

本站所列的图书资料、图书封面图片归各自的版权所有人所有

本站所收录之图书评论、图书社区话题、及本站所做之广告均属其各自行为,与本站立场无关,不代表本站赞同其观点