图书介绍
Windows 2000驱动程序开发大全 第1卷 设计指南PDF|Epub|txt|kindle电子书版本网盘下载
- (美)MicrosoftCorporation著;冯博琴,朱丹军,薛涛等译 著
- 出版社: 北京:机械工业出版社
- ISBN:7111089545
- 出版时间:2001
- 标注页数:1197页
- 文件大小:77MB
- 文件页数:1227页
- 主题词:Windows
PDF下载
下载说明
Windows 2000驱动程序开发大全 第1卷 设计指南PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
目录2
译者序2
DDK文档说明2
第一篇 驱动程序编写者指南2
第1章 驱动程序开发环境2
1.1 自由构建和检查构建2
1.2 调试环境3
第2章 测试驱动程序4
2.1 DriverVerifier4
2.2 Driver Verifier的能力4
2.3 Driver Verifier对图形驱动程序的能力9
2.4 激活和监视DriveeVerifier12
1.1 什么是即插即用21
第1章 即插即用和电源管理的介绍21
第一部分 即插即用和电源管理的要求21
第二篇 即插即用、电源管理和设置设计指南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.2 PnP和电源管理DriverEntry例程37
2.1 必需的PnP支持的概述37
程序支持37
第2章 PnP和电源管理必需的驱动37
2.3 PnP和电源管理AddDevice例程38
2.4 DispatchPnP例程41
2.5 DispatchPower例程41
2.6 PnP和电源管理Unload例程42
第二部分 即插即用43
第3章 理解PnP43
3.1 PnP驱动程序设计准则43
3.2 PnP和设备树44
3.3 PnP设备状态45
3.4 动态地添加一个新的PnP设备46
3.5 硬件资源53
3.6 在驱动程序里使用GUID55
3.6.1 定义和导出新的GUID55
3.6.2 在驱动程序代码里包含GUID56
第4章 处理即插即用IRP的规则58
4.1 PnP IRP需求58
4.2 沿设备堆栈向下传递PnP IRP59
4.3 延迟PnP IRP的处理直到低层60
的驱动程序完成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 理解何时停止发布IRP68
5.2.2 处理IRP_MN_QUERY_STOP_69
DEVICE请求69
DEVICE请求71
5.2.3 处理IRP_MN_STOP_DEVICE请求71
5.2.4 处理IRP_MN_CANCEL_STOP_71
5.2.5 当一个设备被暂停时,保留进72
入的IRP72
5.3 删除一个设备73
5.3.1 理解何时发布删除IRP73
5.3.2 处理一个IRP_MN QUERY_REMOVE76
_DEVICE请求76
5.3.3 处理一个IRP_MN_REMOVE_77
DEVICE请求77
5.3.4 处理一个IRP_MN_CANCEL_81
REMOVE_DEVICE请求81
5.3.5 处理一个IRP_MN_SURPRISE_82
REMOVAL请求82
6.1 PnP通知概述85
第6章 使用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_DEVICE89
_QUERY_REMOVE事件89
6.4.3 处理一个GUID_TARGET_DEVICE_89
REMOVE_COMPLETE事件89
6.4.4 处理一个GUID_TARGET_DEVICE_90
REMOVE_CANCELED事件90
6.5 使用PnP硬件配置文件改变通知90
6.5.1 注册硬件配置文件改变通知90
6.6 使用PnP定制通知91
6.5.2 处理硬件配置文件改变事件91
第7章 支持多功能设备93
7.1 支持多功能PC Card设备93
7.1.1 支持遵照多功能标准的PC Card94
7.1.2 支持有不完全配置寄存器地址94
的PC Card94
7.1.3 支持有不完全配置寄存器的PC Card96
7.2 支持多功能PCI设备99
7.3 支持其他总线上的多功能设备100
7.4 使用系统提供的mfsys100
7.5 为一个多功能设备生成资源图103
8.1 内核模式下的电源管理组件105
8.1.1 ACPI BIOS105
8.1.2 ACPI驱动程序105
第三部分 电源管理105
第8章 在驱动程序内支持电源管理105
8.1.3 电源管理器106
8.1.4 电源管理中驱动程序的作用106
8.2 驱动程序的电源管理职能107
8.2.1 报告设备的电源能力107
8.2.2 对电源管理设置设备对象标记110
8.2.3 处理电源IRP110
8.2.6 激活设备唤醒能力114
8.2.4 设备的加电114
8.2.5 设备的掉电114
8.3 处理电源IRP的规则115
8.3.1 使用PoCallDriver115
8.3.2 传递电源IRP115
8.3.3 设备休眠时排队I/O请求117
8.3.4 处理未被支持的或者无法识别117
的电源IRP117
9.1 设备电源状态118
第9章 独立设备的电源管理118
9.1.1 设备工作状态D0119
9.1.2 设备休眠状态D1、D2、和D3119
9.1.3 设备电源状态所需的支持120
9.2 管理设备电源策略121
9.3 为设备电源状态处理IRP_MN_SET122
_POWER122
9.3.1 处理设备掉电IRP122
9.3.2 处理设备加电IRP125
9.3.3 设备电源IRP的IoCompletion例程126
9.4 为设备电源状态处理IRP_MN_127
QUERY_POWER127
9.5 为设备电源状态发送IRP_MN_QUERY_129
POWER或者IRP_MN_SET_POWER129
9.6 检测空闲的设备130
9.6.1 用于空闲检测的电源管理器例程131
9.6.2 执行设备特定的空闲检测131
第10章 处理系统电源状态请求132
10.1 系统电源状态132
10.1.1 系统工作状态S0133
10.1.2 系统休眠状态S1、S2、S3和S4133
10.1.3 系统关机状态S5134
10.1.4 系统电源动作135
10.2 系统电源策略135
10.3 防止系统电源状态变化136
10.4 为系统电源状态处理IRP_MN_136
QUERY_POWER136
10.4.1 使系统查询电源IRP失效137
10.4.2 在设备电源策略所有者中处理137
系统查询电源IRP137
查询电源IRP138
10.4.3 在总线驱动程序中处理系统138
10.4.4 在过滤器驱动程序中处理系统139
查询电源IRP139
10.5 为系统电源状态处理IRP_MN_139
SET_POWER139
10.5.1 在设备电源策略所有者中140
处理系统设置电源IRP140
10.5.2 在总线驱动程序中处理系统设置141
电源IRP141
10.5.3 在过滤器驱动程序中处理系统设置141
电源IRP141
第11章 支持具有唤醒能力的设备143
11.1 等待/唤醒操作综述143
11.1.1 确定设备是否能唤醒系统144
IRP的路径145
11.1.2 理解通过设备树的等待/唤醒145
11.1.3 完成等待/唤醒IRP综述149
11.2 处理等待/唤醒IRP的步骤150
11.2.1 在功能驱动程序或者过滤器驱150
动程序中处理等待/唤醒IRP150
11.2.2 在总线驱动程序中处理等待/151
唤醒IRP151
11.3 发送等待/唤醒IRP152
11.2.3 等待/唤醒IRP的IoCompletion例程152
11.3.1 确定何时发送等待/唤醒IRP153
11.3.2 等待/唤醒IRP请求153
11.3.3 等待/唤醒的回调例程153
11.3.4 撤消等待/唤醒IRP154
11.4 等待/唤醒IRP的Cancel例程155
第四部分 设置157
第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 建立跨平台的和/或双操作系统175
的INF文件175
14.4 建立国际化的INF文件176
的安全性177
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.4 在类安装程序的INF文件中加强190
文件打开的安全性190
16.3 注册类安装程序190
第17章 编写定制设备安装应用程序191
17.1 安装与驱动程序共用的软件实用程序191
17.2 定制安装应用程序准则191
第18章 提供设备属性页193
18.1 设备属性页所需的支持193
18.2 处理DIF_ADDPROPERTYPAGE194
_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
设备204
第20章 安装一个要求重新启动机器的204
第三篇 内核模式驱动程序设计指南208
第1章 Windows 2000和WDM驱动程序208
1.1 Windows 2000组件概述208
1.2 Windows 2000中的驱动程序种类209
1.3 Windows 2000和WDM驱动程序的211
设计目标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/O216
1.3.7 支持异步I/O217
第2章 分层的I/O、IRP和I/O对象218
2.1 Windows 2000 I/O模型概述218
文件对象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
序的支持237
3.1 系统组件和分层内核模式驱动程序237
第3章 系统定义的对象和对驱动程237
3.1.1 操纵系统定义的对象的支持例程238
3.1.2 存储系统定义的对象240
3.2 设备对象和设备扩展241
3.2.1 定义设备扩展242
3.2.2 创建设备对象和设备扩展243
3.2.3 初始化驱动程序特定的设备244
对象和设备扩展244
3.2.4 设置用户缓冲区的访问245
3.3 适配器对象和DMA251
3.3.1 映射寄存器252
3.3.2 获取适配器对象254
3.3.3 拆分传输请求255
3.3.4 使用系统DMA256
3.3.5 使用总线控制器DMA263
3.3.6 执行发散/收集DMA270
3.4 控制器对象271
3.4.1 创建带有控制器扩展的控制器对象272
3.4.2 为I/O操作分配控制器对象:273
3.5 中断对象275
DIRQL和处理器掩码276
3.5.2 注册ISR276
3.5.1 获得系统指定的中断向量、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 设置设备队列对象和排队IRP285
3.8.2 设置一个互锁队列和排队IRP286
3.9 内核调度者对象288
3.9.1 定时器对象290
3.9.2 事件对象292
3.9.3 信号量对象294
3.9.4 互斥体对象296
3.9.5 线程在调度者对象上等待的299
报警和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.1 DriverEntry例程需求319
5.1.1 DriverEntry例程语法与参数319
第5章 DriverEntry和Reinitialize例程319
5.2 DriverEntry例程功能320
5.2.1 DriverEntry例程必备功能320
5.1.2 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.2 如何在一个Dispatch例程中327
完成一个IRP327
6.2.1 何时检查I/O栈位置327
6.2.3 何时在Dispatch例程中完成一个IRP328
6.2.4 如何从一个Dispatch例程传送带329
有效参数的IRP329
6.2.5 为较低层驱动程序分配IRP330
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 排队IRP344
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.4 用驱动程序创建的线程管理互锁352
7.3.3 在驱动程序管理的队列中排队IRP352
队列352
7.3.2 建立驱动程序管理的队列352
7.3.5 管理补充设备队列353
8.1 ISR需求357
8.1.1 ISR性能357
第8章 中断服务例程357
8.1.3 建立一个ISR358
8.2 ISR基本功能358
8.1.2 其他需要的驱动程序例程358
8.3 重叠I/O操作的ISR功能359
9.1 DpcForIsr和CustomDpc例程需求361
9.1.1 DpcForIsr例程与CustomDpc例程361
第9章 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和满足设备控制IRP365
9.2.2 直接I/O使用365
9.2.3 实现一个DpcForIsr或CustomDpc366
例程的注意事项366
10.1 SynchCritSection例程需求368
10.1.1 使用SynchCritSection例程368
第10章 SynchCritSection例程368
10.2 SynchCritSection例程功能369
10.1.3 SynchCritSection例程性能需求369
10.2.1 为I/O操作对设备编程369
10.1.2 运行SynchCritSection例程369
10.2.2 维护有关中断驱动I/O操作的状态370
11.1 驱动程序控制例程373
Control例程373
11.1.1 驱动程序控制例程语法和参数373
第11章 AdapterControl和Controller373
驱动程序374
11.1.3 设计有DriverControl例程的374
11.1.4 存储需求374
11.1.2 从DriverControl例程返回374
11.1.5 建立AdapterControl和Controller375
Control例程375
11.2 AdapterControl例程需求376
11.3 ControllerControl例程需求376
第12章 Cancel例程378
12.1 Cancel例程需求378
12.2 处理可撤消IRP379
12.2.2 在处理请求的驱动程序例程中380
处理可撤消IRP380
处理可撤消IRP380
12.2.1 在传递IRP的驱动程序例程中380
12.2.4 与Cancel例程一起使用驱动程序381
提供的自旋锁381
12.2.3 使用系统撤消自旋锁381
12.3 Cancel例程功能385
12.3.2 不带有StartIo例程的驱动程序中386
Cancel例程386
的Cancel例程386
12.3.1 带有StartIo例程的驱动程序中的386
12.4 处理可撤消IRP时的注意事项387
13.1 使用IoCompletion例程389
13.1.1 建立IoCompletion例程389
第13章 IoCompletion例程389
13.1.2 调用IoSetCompletion Routine390
13.1.3 为低层驱动程序分配IRP392
13.2 IoCompletion例程需要的功能393
14.1 定时器例程需求395
14.2 IoTimer例程功能395
第14章 IoTimer和CustomTimerDpc例程395
14.2.2 为IoTimer例程建立环境396
14.2.3 使用IoTimer例程396
14.2.1 建立IoTimer例程396
14.3 CustomTimerDpc例程功能397
14.3.1 设置CustomTimerDpc例程398
14.3.2 为CustomTimerDpc例程设置环境398
14.3.3 使用CustomTimerDpc例程399
15.1 Unload例程需求401
15.2 Unload例程环境401
第15章 Unload例程401
15.3.1 PnP驱动程序的Unload功能402
15.3.2 非PnP驱动程序的Unload功能402
15.3 Unload例程功能402
第16章 常见的驱动程序设计问题405
16.1 管理硬件优先级405
16.2 使用自旋锁407
16.2.1 为自旋锁和被保护数据提供408
存储空间408
16.2.2 初始化自旋锁409
16.2.3 调用使用了自旋锁的支持例程409
16.2.4 快速释放自旋锁410
16.2.5 使用自旋锁时防止错误或死锁412
的出现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.1 在DMA操作期间刷新高速422
缓存数据422
16.5 为DMA和PIO维护高速缓存的一致性422
16.5.2 在PIO操作期间刷新高速缓存数据423
16.6 错误记录和NTSTATUS值423
16.6.1 调用IoAllocateErrorLogEntry424
16.6.2 填充错误记录包424
16.6.3 设置错误记录包中的NTSTATUS值426
16.6.5 定义新的IO_ERR_XXX427
16.6.6 定义私有NTSTATUS常量427
16.6.4 调用IoWriteErrorLogEntry427
16.7 处理可删除介质428
16.7.1 响应来自文件系统的验证请求428
16.7.2 通知文件系统可能的介质改变429
16.7.4 在中间层驱动程序中建立IRP430
16.8 使设备对应用程序和驱动程序可用430
16.7.3 检查设备对象中的标志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
第一部分 图形驱动程序451
第1章 图形系统概述451
第四篇 图形驱动程序设计指南451
第2章 对图形驱动程序的GDI支持452
2.1 从驱动程序的观点看GDI452
2.1.1 作为应用程序图形语言的GDI453
2.1.2 作为绘制引擎的GDI453
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.4 浮点数支持464
2.5 数据类型464
2.3.6 GDI支持的服务及其他464
3.1 图形驱动程序函数支持466
3.1.1 必需的图形驱动程序函数466
第3章 支持DDI466
程序函数467
3.1.3 可选的图形驱动程序函数467
3.1.2 有条件地需要的图形驱动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.1 管理调色板481
3.5.2 实现画刷481
3.5 支持DDI颜色和调色板函数481
3.6 支持DDI字体和文本函数482
3.6.1 管理和优化字体482
3.6.2 绘制文本485
第4章 显示器介绍487
4.1 显示器体系结构487
第二部分 显示器和视频微端口驱动程序487
4.1.1 显示器驱动程序职责488
4.1.2 视频微端口驱动程序职责488
4.2.3 协处理器489
4.2.2 加速器489
4.2.4 VGA489
4.3 一般的设计和实现策略489
4.2.1 帧缓冲区489
4.2 图形适配器的类型489
驱动程序通信490
4.4.1 通过IOCTL和视频微端口490
4.4.2 访问帧缓冲区和硬件寄存器490
4.4 访问图形适配器490
4.5 创建图形INF文件491
4.5.1 INF GeneralConfigData节492
4.5.2 显示器INF文件节492
4.5.3 监视器INF文件节493
4.6.1 INF和安装的要求495
的兼容性测试要求495
4.6.2 视频微端口驱动程序的要求495
4.6 显示器和视频微端口驱动程序495
4.6.3 显示器驱动程序的要求496
4.6.4 控制面板的要求496
5.1 显示器驱动程序DDI函数497
5.1.1 必需的显示器驱动程序函数497
第5章 显示器驱动程序497
程序函数498
5.1.3 可选的显示器驱动程序函数498
5.1.2 有条件地需要的显示器驱动498
5.2 显示器驱动程序初始化499
5.3.2 返回显示器模式:DrvGetModes501
5.3.1 切换桌面:对DrvAssertMode的响应501
5.3.3 支持多PDEV501
5.3 桌面管理501
5.4 指针控制503
5.4.1 指针绘制504
5.5 管理显示器调色板505
5.4.3 移动指针:DrvMovePointer505
5.6 显示器驱动程序中的位图505
5.4.2 控制指针:DrvSetPointerShape505
5.7 异步绘图506
5.9 显示器驱动程序的特别效果507
5.10 显示器的颜色管理507
5.8 显示器驱动程序中的透明性507
5.11 DirectDraw和GDI509
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.1 Newdisp:动态重装显示器517
驱动程序517
5.18 显示器驱动程序测试工具517
5.18.2 允许的驱动器加速的动态改变518
代码和参考519
6.1 DirectDraw驱动程序头文件、示例519
6.2 DirectDraw体系结构概述519
第6章 DirectDraw DDI519
6.2.1 关于DirectDraw521
6.2.2 DirectDraw驱动程序521
6.2.3 硬件仿真层次522
6.3 DirectDraw驱动程序基础522
6.3.1 DirectDraw表面523
6.3 显示内存524
6.3.3 内存配置例子526
6.3.4 交换532
6.3.5 使用图阵537
6.3.6 假定状态信息的驱动程序539
6.3.7 打开显示卡并在Windows 95/Windows98上改变模式539
6.4 DirectDraw驱动程序初始化540
6.5 DirectX视频端口扩展541
6.5.1 视频端口扩展背景542
DirectDraw接口546
6.5.3 内核模式视频传输支持的546
6.6 颜色控制初始化546
6.5.2 DirectX VPE的初始化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样式的AGP550
6.8.1 VPE和内核模式视频传输的552
体系结构552
6.8 内核模式视频传输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.2 创建压缩纹理表面560
6.11.3 使用压缩纹理表面560
6.11.1 列举DXT格式560
6.12 运动补偿561
6.13 返回DirectDraw和Direct3D的值562
和参考564
7.1 Direct3D DDI头文件、示例代码564
7.2 跨平台Direct3D驱动程序开发564
第7章 Direct3D DDI564
7.3.1 所需的Direct3D驱动程序回调565
函数和函数565
7.3 Direct3D驱动程序回调函数和函数565
返回码566
7.3.3 Direct3D驱动程序回调函数的566
7.4 Direct3D驱动程序初始化566
7.3.2 操作码处理566
7.5 Direct3D环境管理567
7.5.3 在环境中维护状态568
7.5.2 删除环境568
7.5.4 Direct3D表面处理概览568
7.5.1 建立环境568
是一个指向表面的指针569
7.5.6 为什么驱动程序方的结构不能只569
7.5.7 D3dCreateSurfaceEx和后援表面569
7.5.5 进一步了解句柄以及通过D3dCreateSurfaceEx创建驱动程序方表面的结构569
7.5.8 使用D3dCreateSurfaceEx要考570
虑的其他问题570
7.6 Direct3D纹理管理571
7.6.1 多纹理572
7.6.2 调色板纹理577
7.6.3 纹理位块转移577
7.7 绘图原语和状态改变578
7.7.1 命令和顶点缓冲区578
7.6.4 驱动程序管理的纹理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 Clipping588
7.9.4 范围调整589
7.9.5 W缓冲区589
7.9.6 Bump Mapping590
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.5 绘制设备环境605
8.4.1 Hdev句柄605
8.4.2 像素格式605
8.5.1 设备环境的创建606
8.5.3 设备环境删除607
8.5.4 状态607
8.5.2 设备环境绑定607
8.5.5 视口608
8.6 内存管理608
8.7.2 查询绘制缓冲区609
8.7.1 分配绘制缓冲区609
8.7.3 交换绘制缓冲区609
8.7 帧缓冲区管理609
8.8 绘制操作610
8.8.1 绘制OpenGL的原语610
8.7.4 MCD中的窗口跟踪610
8.8.2 绘制间距612
8.8.3 清除缓冲区613
8.8.4 同步化613
8.9.1 纹理环境状态614
8.9.2 纹理状态614
8.9 纹理映像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
驱动程序620
9.3 视频微端口驱动程序接口621
9.3.1 必需的微端口驱动程序函数621
动程序函数622
9.3.3 可选的视频微端口驱动程序622
9.3.2 有条件必需的视频微端口驱622
9.4 视频微端口驱动程序的初始化623
9.4.1 启动视频微端口驱动程序623
9.4.2 声明继承资源626
视频微端口627
9.5 视频微端口设备扩展627
9.4.3 为与显示驱动程序通信而初始化627
9.6 视频微端口的注册表回调函数628
9.7 处理视频请求628
9.7.1 系统定义的IOCTL_VIDEO_XXX629
请求629
请求630
9.7.3 处理不支持的IOCTLVIDEO_XXX630
9.8 在视频微端口中支持PnP及电源管理630
_XXX请求630
9.7.2 自定义的显示微端口IOCTL_VIDEO630
9.9.2 从AGP使用中释放内存631
9.9.1 通过AGP存取系统内存631
9.10 图形适配器的子设备631
9.9 在视频微端口驱动程序中使用AGP631
9.10.2 与子设备驱动程序通信632
9.11 视频微端口中的中断632
9.10.1 侦测子设备632
9.13 在视频微端口中对适配器重置634
9.14 微端口驱动中的镜像驱动程序支持634
9.12 视频微端口的定时器634
支持635
9.15.1 查询TV连接器及硬件的拷贝保护635
9.15 视频微端口的TV连接器及拷贝保护635
9.15.2 设置TV连接器及拷贝保护硬件636
9.16.1 基于x86机器的窗口式VDM637
9.16.2 基于x86机器的全屏VDM637
9.16 VGA兼容的微端口SvgaHwIoPortXxx637
9.16.3 VGA兼容的微端口的HwFind638
Adapter638
9.16.4 在SvgaHwIoPortXxx中验证指令639
9.17 将Windows NT 4.0的微端口驱动程序640
转换到Windows 2000640
9.16.5 VGA兼容的HwVidStartIO640
第三部分 打印驱动程序和假脱机组件643
第10章 打印介绍643
第11章 打印假脱机程序的体系结构644
11.1 假脱机组件介绍644
11.2 打印提供者645
12.1 打印机驱动程序组件652
12.2 打印机图形DLL652
第12章 打印机驱动程序体系结构652
12.3 打印机接口DLL659
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.6 GPD文件实例664
13.1.7 微软小驱动程序开发工具664
13.1.5 Unidrv绘制器664
13.2 GPD文件介绍665
13.2.1 GPD文件条目665
13.2.2 基本单位676
13.2.3 在小驱动程序中使用多个GPD文件677
13.2.4 在小驱动程序中使用资源DLL677
13.3.2 属性类型678
13.3.1 打印机属性格式678
13.3.3 一般属性678
13.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.3 选项条目格式708
13.6.4 选项属性708
13.6.2 定制选项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.10 过滤光栅数据724
13.11 处理颜色格式724
13.9.2 使用定制的压缩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.1 Pscript能力743
14.2 Pscript组件743
第14章 微软PostScript打印机驱动程序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.1 绘图仪驱动程序能力748
15.2 绘图仪驱动程序组件748
第15章 微软绘图仪驱动程序748
15.3 绘图仪驱动程序文件示例749
15.4 绘图仪驱动程序的小驱动程序749
15.5 绘图仪驱动程序用户接口752
15.6 绘图仪驱动程序绘制器753
16.1 用户接口插件754
16.1.1 用户接口插件介绍754
第16章 定制微软的打印机驱动程序754
16.1.2 UI插件的例子755
16.1.3 UI插件的COM接口755
16.1.6 修改一个驱动程序提供的属性756
16.1.5 从UI插件访问驱动程序设置756
表页面756
16.1.4 提供DEVMODE结构附加项756
16.1.7 增加新的属性表页面757
16.2.1 绘制插件介绍758
16.2 绘制插件758
16.2.2 绘制插件实例758
16.1.8 定制其他的打印机接口操作758
16.2.3 绘制插件的COM接口759
16.2.4 定制的DDI函数761
16.2.5 定制的PDEV结构761
16.2.7 与Pscript有关的定制绘制762
16.2.8 与Unidrv有关的定制绘制762
16.2.6 从绘制插件访问驱动程序设置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.1 编写打印处理器772
17.1.1 对打印处理器的介绍772
第17章 定制打印假脱机组件772
17.1.2 打印处理器示例773
17.1.3 由打印处理器定义的函数774
17.1.4 处理一个打印作业774
17.1.5 安装打印处理器775
17.2.1 语言监视器776
17.2.2 端口监视器776
17.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
换打印监视器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 从应用程序打印到URL787
18.2 查看打印Web页面788
18.3.1 打印Web页面的ASP文件790
18.3.2 定制打印机细节的Web页面790
18.3 定制打印Web页面790
18.3.3 安装定制的打印Web页面793
18.4 从Web页面安装打印驱动程序794
19.1 打印机的即插即用795
19.2 打印机的INF文件795
第19章 安装及配置打印机驱动程序795
19.2.1 打印机DIRID796
19.2.2 打印机INF文件条目796
19.2.3 打印机INF文件的数据部分798
19.2.4 打印机INF文件安装部分799
19.2.5 打印机INF文件CopyFiles节799
19.3 打印机的目录服务800
19.3.1 打印假脱机程序对打印机目录服务的支持800
19.2.6 打印机INF文件实例800
19.3.2 打印机驱动程序对打印目录服务801
的支持801
19.4.2 在打印机安装过程中支持点802
19.4.1 点号及打印介绍802
号及打印802
19.4 支持点号及打印802
19.4.3 在打印机连接过程中支持点804
号及打印804
20.1 CPSUI介绍807
20.2 CPSUI应用程序实例807
第20章 CPSUI807
20.4 应用程序提供的回调函数808
20.4.1 页面创建回调函数808
20.3 CPSUI提供的函数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 在打印机驱动程序中使用CPSUI812
21.1 允许颜色管理814
21.2 控制颜色管理814
第21章 打印机颜色管理814
21.2.1 系统控制815
21.2.2 驱动程序控制及设备控制815
21.2.4 对JPEG及PNG图像的颜色管理816
21.3 定位ICC配置文件816
21.2.3 支持CMYK颜色空间816
21.4 安装ICC配置文件817
第一部分 网络驱动程序821
第1章 网络驱动程序设计指南向导821
第五篇 网络驱动程序设计指南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.1 无连接环境的网络驱动程序829
2.4.2 面向连接环境下的网络驱动程序829
2.4 网络驱动程序环境829
2.4.3 WAN网络驱动程序的环境831
3.1 可移植性833
3.2 多处理器支持833
第3章 网络驱动程序编程要点833
3.3 IRQL834
3.4 同步和通知834
3.5 包结构836
3.6 使用共享内存837
3.7 异步I/O和完成函数837
4.1 NIC微端口驱动程序类型839
第4章 NDIS NIC微端口驱动程序839
4.2 网络接口卡支持839
第二部分 微端口NIC驱动程序839
4.3.1 MiniportXxx函数841
4.3.2 与NDIS库链接841
4.3 微端口驱动程序代码的重要特征841
4.3.3 微端口适配器环境842
4.3.4 VC环境842
4.3.5 网络OID843
4.4 示例驱动程序843
5.1.1 初始化NDIS库和注册微端口844
5.1 NIC微端口操作844
驱动程序844
第5章 NIC微端口操作和函数概述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.2 微端口上边界函数850
5.2.1 无连接微端口的上边界函数850
5.1.9 终止一个微端口NIC驱动程序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.9 NDIS为面向连接微端口提供860
发送和接收函数860
的发送和接收函数860
5.3.8 NDIS为无连接微端口提供的860
5.3.10 NDIS提供的带外数据宏861
5.3.11 NDIS提供的包和缓存处理函数861
5.3.12 NDIS提供的支持函数863
5.3.13 NDIS提供的介质相关宏866
和初始化868
6.1 NDIS微端口驱动程序入口函数868
第6章 NIC微端口驱动程序入口点868
6.1.1 初始化包裹869
6.1.2 注册微端口869
6.2 NDIS微端口初始化874
6.2.1 注册NIC875
6.2.2 声明资源877
6.2.3 注册中断881
6.2.5 初始化轮询计时器882
6.2.6 初始化期间的同步882
6.2.4 注册关闭函数882
6.3 查询微端口信息883
6.4 减少微端口初始化时间883
6.2.7 在初始化时处理错误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.6.1 无连接和面向连接微端口的902
7.6 接收数据902
多包接收902
内部要求902
7.5.2 非串行化微端口的驱动程序902
7.6.2 无连接微端口的单包接收905
7.6.3 接收数据的高速缓存因素907
7.6.4 接收数据的步骤907
7.7 保持统计909
7.8 802.1p包的优先权910
7.8.1 查询802.1p优先权支持911
7.8.2 802.1p优先权的包支持911
7.8.3 为发送和接收指定包的大小912
7.8.4 缺省情况下禁止802.1p的优先913
权支持913
信息及NDIS支持914
8.1 NDIS管理信息和OID914
第8章 获取和设置WMI的微端口914
8.2 查询微端口信息915
8.2.1 无连接微端口的查询915
8.2.2 面向连接微端口的查询917
8.3.1 为无连接微端口设置信息918
8.3.2 为面向连接微端口设置信息918
8.3 设置微端口信息918
8.3.3 设置微端口信息的时机919
8.4 报告硬件状态919
8.5.1 用WMI注册与注销NDIS微端口920
8.5.2 OID和微端口状态的GUID映射920
8.5 WMI的NDIS支持920
8.5.3 支持命名VC921
8.5.4 NDIS支持的WMI操作921
8.5.5 向WMI注册标准微端口OID922
8.5.6 向WMI注册的标准微端口状态924
8.5.7 定制OID与状态指示924
第9章 微端口的电源管理927
9.1 电源管理的需求与可选的OID927
9.2 网络设备电源状态928
9.3 网络唤醒事件929
9.3.3 魔包唤醒930
9.3.2 网络唤醒帧930
9.3.4 启用唤醒事件930
9.3.1 链接改变唤醒930
9.5 处理OID_PNP_SET_POWER931
9.4 处理OID_PNP_QUERY_POWER931
9.5.1 转入睡眠状态931
9.3.5 处理唤醒事件931
9.5.2 转入工作状态932
9.6 早期微端口的电源管理932
第10章 重置、停止和关闭934
10.1 硬件重置934
10.2 停止处理程序935
10.3 关闭处理程序936
第11章 广域网微端口NIC驱动程序937
11.1 RAS体系结构937
11.2 NDISWAN概述939
11.3 网络卡、绑定和连接941
11.4.1 标准广域网微端口驱动程序与943
局域网微端口驱动程序的区别943
11.4 广域网微端口驱动程序的实现943
11.4.3 广域网微端口驱动程序提供944
的附加特性944
的服务944
11.4.2 CoNDIS广域网微端口驱动程序944
11.4.4 广域网微端口驱动程序的指示953
11.5 广域网包的组帧956
11.5.1 异步帧结构957
11.5.2 X.25帧结构957
11.6 标准NDIS之上的电话服务扩展958
11.6.1 NDISTAPI概述958
11.5.3 ISDN和Switched-56K帧结构958
11.6.2 线路设备、地址和呼叫959
11.6.3 设置和查询请求959
11.6.4 保持状态信息960
11.6.5 建立句柄960
11.6.6 TAPI注册961
11.6.7 TAPI初始化962
11.6.8 打开线路963
11.6.9 接受内入呼叫963
11.6.10 产生TAPI呼叫964
11.6.11 主动事件处理965
11.6.12 Line-Up指示966
11.6.13 关闭呼叫线路967
11.6.14 NDISTAPI接口969
11.7 使用支持电话服务的CoNDIS扩展973
11.7.1 NDPROXY概述974
11.7.2 CoNDISTAPI注册974
11.7.3 CoNDIS TAPI初始化975
11.7.4 建立外出呼叫976
11.7.5 接受内入呼叫978
11.7.6 CoNDIS TAPI关闭981
11.7.7 语音流对呼叫管理器的要求982
11.7.8 在面向连接NDIS上支持电话983
服务的非广域网专用的扩展983
第12章 任务卸载985
12.1 查询任务卸载能力985
12.1.1 报告NIC的校验和性能986
12.1.2 报告NIC的IP安全性性能987
12.1.3 报告NIC的TCP包分段性能988
12.3 停用任务卸载能力989
12.4 访问每数据包信息989
12.2 启用任务卸载能力989
12.5 卸载TCP/IP校验和任务990
12.6 卸载IP安全任务992
12.7 卸载大TCP包分段995
12.8 卸载组合997
12.9 使用注册表键值启用和禁用任务卸载998
第13章 负载平衡和故障恢复999
13.1 关于LBFO999
13.3 在微端口驱动程序上实现LBFO1000
13.3.1 初始化微端口束1000
13.2 指定对LBFO的支持1000
13.3.3 在主微端口失效后提升一个1001
辅微端口1001
13.3.2 平衡微端口驱动程序的工作量1001
14.1 关于FFP1002
14.1.1 使用一个NIC的FFP1002
第14章 快速转发路径1002
14.1.2 使用多个NIC的FFP1003
14.1.3 IP转发1004
14.1.4 FFP和包过滤1005
14.2 NIDS中的FFP支持1005
14.3 为IP转发在微端口实现FFP1006
驱动程序1007
15.1 带WDM下边界的微端口1007
第15章 带有WDM低层接口的微端口1007
15.2 注册WDM下边界的微端口函数1008
15.3 初始化带WDM下边界的微端口1008
15.4 发出命令与远程设备通信1009
15.4.1 在总线上发送包1009
15.5 WDM下边界的实现要点1010
15.6 WDM下边界的编译标志1010
15.4.2 在总线上接收包1010
第16章 IrDA微端口NIC驱动程序1012
16.1 IrDA微端口驱动程序简述1012
16.2 IrDA体系结构1013
16.3 IrDA协议驱动程序1013
16.4 IrDA介质特性1014
16.4.1 通信连接速度1014
16.4.2 通信连接回转时间1015
16.4.3 接收器同步1016
16.5 IrLAP帧格式1017
16.5.1 帧格式简述1017
16.5.3 地址成员1018
16.6 IrDA微端口驱动程序包编码方案1018
16.5.2 帧信息的使用1018
16.6.2 MIR编码1019
16.6.3 FIR编码1019
16.6.1 SIR编码1019
16.8.1 非即插即用外部串行连接的1020
16.8 即插即用1020
SIR适配器1020
16.7 发送和接收帧序列1020
适配器1021
16.8.3 即插即用外部串行连接的SIR1021
16.8.4 即插即用的内部SIR适配器1021
16.8.2 非即插即用的内部SIR适配器或者错误地暴露为串口的内部SIR适配器1021
适配器1022
16.8.6 即插即用总线连接的FIR适配器1022
16.8.5 非即插即用总线连接的FIR1022
和TDI驱动程序1025
第17章 NDIS中间层驱动程序1025
第三部分 NDIS中间层驱动程序1025
17.1 中间层驱动程序的DriverEntry函数1027
17.2 中间层驱动程序的动态绑定1033
17.2.1 打开中间层驱动程序下层的1034
适配器1034
17.2.2 微端口初始化1035
17.2.3 中间层驱动程序查询和设置操作1036
17.2.4 作为面向连接客户程序注册中1038
间层驱动程序1038
17.3 中间层驱动程序数据包管理1039
17.4 中间层驱动程序的限制1042
17.5 中间层驱动程序接收数据1042
17.5.1 下边界面向无连接的中间层1043
驱动程序接收数据1043
17.5.2 下边界面向连接的中间层1045
驱动程序接收数据1045
17.5.3 向高层驱动程序指示接收数据包1047
17.6 通过中间层驱动程序传输数据包1047
和PM事件1050
17.7.1 处理OID_PNP_XXX查询和设置1050
17.7 处理中间层驱动程序的PnP事件1050
17.7.2 中间层驱动程序ProtocolPnP1051
Event处理程序的实现1051
17.7.3 处理电源设置请求1052
17.8 中间层驱动程序复位操作1053
17.9 中间层驱动程序拆除绑定操作1054
17.10 中间层驱动程序状态指示1055
第18章 NDIS协议驱动程序1056
18.1 协议DriverEntry及其初始化1057
18.1.1 注册NDIS协议驱动程序1057
18.1.2 在协议驱动程序下打开适配器1060
18.1.3 协议驱动程序查询和设置操作1061
18.1.4 作为呼叫管理器或者面向连1063
接客户进行注册1063
18.2 协议驱动程序数据包管理1066
18.3 协议驱动程序的动态绑定1068
18.4 协议驱动程序接收数据1068
18.4.1 面向无连接的协议驱动程序接1069
收数据1069
18.4.2 面向连接协议驱动程序接收数据1072
18.5.1 通过面向无连接协议驱动程1073
序发送数据包1073
18.5 发送协议驱动程序创建的数据包1073
18.5.2 通过面向连接协议驱动程序1075
发送数据包1075
电源管理事件1077
18.7 协议驱动程序复位操作1077
18.6 在协议驱动程序中处理PnP事件和1077
18.8 协议驱动程序拆除绑定操作1078
18.9 协议驱动程序状态指示1079
第19章 TDI传输器及其客户1080
19.1 传输驱动程序接口(TDI)1080
19.2 TDI设备对象1082
19.3 TDI文件对象1083
19.3.1 代表传输地址的文件对象1084
19.3.2 代表连接端点的文件对象1085
19.3.3 代表控制信道的文件对象1085
19.4 TDI传输驱动程序例程1086
19.5 TDI内核模式客户交互1086
19.6 TDI请求及事件1087
第20章 TDI例程、宏和回调1089
20.1 TDI驱动程序初始化1089
20.1.1 注册TDI传输驱动程序1090
20.1.2 卸载和注销TDI传输驱动程序1091
20.2 TDI驱动程序调度例程1091
20.3 TDIIOCTL请求1092
20.4 TDI客户回调1093
20.5 TDI库函数和宏1094
第21章 TDI操作1097
21.1 打开传输地址1097
21.2 打开连接端点1099
21.3 打包并提交IOCTL请求1099
21.4 设置和查询信息1100
21.5 建立端端连接1101
21.6 发送和接收面向连接数据1103
21.7 发送和接收无连接数据1106
21.8 面向连接和面向无连接传输1108
21.9 请求传输相关操作1109
21.10 接收错误通知1109
21.11 断开端端连接1110
21.12 关闭连接端点1110
21.13 关闭传输地址和控制信道1111
辅助程序的DLL1112
22.1 Windows Sockets Helper DLL结构1112
第22章 Windows Sockets的传输1112
22.2 用WSH DLL通信1113
22.3 配置WSH DLL1113
22.5 用WSH DLL支持连接和断开1114
连接数据1114
22.4 WSH DLL同步1114
22.5.1 客户应用程序和连接数据1115
22.5.2 服务器应用程序和连接数据1115
22.5.3 断开连接数据1116
22.6 WSH DLL函数摘要1116
接口标准1119
第23章 面向连接的网络驱动程序1119
23.1 面向连接环境1119
第四部分 面向连接的网络驱动程序接口标准1119
23.2 使用AF、VC、SAP和会话方1120
23.2.1 地址族1121
23.2.2 虚连接1121
23.2.4 会话方1122
23.3 服务质量1122
23.2.3 SAP1122
23.4.2 对NdisXxx函数调用的不同1123
23.4.1 初始化的不同1123
23.4.3 虚连接的不同1123
23.4 MCM和呼叫管理器有何不同1123
23.6 面向连接操作1124
23.6.1 面向连接操作总结1124
23.5 面向连接的时间特性1124
23.6.2 地址族和SAP上的操作1127
23.6.3 VC上的操作1132
23.6.4 创建呼叫1138
23.6.5 改变活动VC的QoS1142
23.6.6 增加和删除会话方1146
23.6.7 发送并接收数据1150
23.6.8 断开呼叫1152
23.6.9 获取并设置信息1155
23.6.10 重置1157
第24章 安装网络组件1159
24.1 用于安装网络组件的组件和文件1159
第五部分 安装网络组件1159
24.2.1 网络INF文件名的约定1160
24.2.2 网络INF文件的Version节1160
24.2 创建网络INF文件1160
24.2.3 网络INF文件的Models节1161
24.2.4 INF文件的DDInstall节1162
24.2.6 网络INF文件的ControlFlags节1164
24.2.7 网络INF文件的add-registry-sections1164
24.2.5 网络INF文件的Remove节1164
24.2.8 DDInstall.Service节1176
24.2.9 NetworkProvider和PrintProvider节1177
24.2.10 Winsock节1179
24.2.11 网络组件安装需求总结1180
25.1 关于通知对象1188
25.1.1 通知对象图1188
第25章 网络组件的通知对象1188
25.1.2 通知类型1189
25.1.3 网络组件的安装1190
25.1.4 删除网络组件1190
25.1.5 升级网络组件1191
25.1.6 显示并改变属性1191
25.2.1 装载通知对象DLL和类对象1192
25.2 创建通知对象1192
25.2.2 定义通知对象1192
25.1.7 网络配置1192
25.2.3 创建并初始化通知对象实例1193
25.2.4 安装、升级和删除组件1194
25.2.5 为组件生成属性页1194
25.2.6 设置环境来显示属性1195
25.2.8 将组件变化加入注册表1196
25.2.9 配置组件驱动程序1196
25.2.7 评价网络配置的变化1196
2.2 终端用户I/O请求和Windows2000