10.3.2.xxx试图连接本机的2869端口,2869端口运行的是什么服务?

celerylhl 2006-08-02 02:25:58
[14:18:39] 10.3.2.117试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

[14:18:42] 10.3.2.117试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

[14:18:46] 10.3.5.61试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

[14:18:48] 10.3.2.117试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

[14:18:49] 10.3.5.61试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

[14:18:55] 10.3.5.61试图连接本机的2869端口,
TCP标志:S,
该操作被拒绝。

2869端口运行的是什么服务?为何别的好多机器都试图往这儿连??
...全文
1128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
upperdeck 2006-08-02
  • 打赏
  • 举报
回复
svchost进程 是通过后面跟的参数来确定调用什么东西的!
celerylhl 2006-08-02
  • 打赏
  • 举报
回复
一开Bitcomet CPU就100%(svchost进程)是怎么回事?
ljc007 2006-08-02
  • 打赏
  • 举报
回复
SSDP Discovery Service(SSDP 发现服务)
SSDP Discovery Service 将简单服务发现协议 (SSDP) 作为 Windows 服务实现。 SSDP Discovery Service 对设备存在公告的回执进行管理,更新它的缓存并将这些通知一起传递给搜索请求尚未完成的客户端。SSDP Discovery Service 还接受来自客户端的事件回调的注册,将它们转换成订阅请求,并监视事件通知,然后传递给已注册的回调。此系统服务还向托管设备定期提供公告。

目前,SSDP event notification 服务使用 TCP 端口 5000。在 Windows XP Service Pack 2 中,它依赖于 TCP 端口 2869。
scz123 2006-08-02
  • 打赏
  • 举报
回复
MS Universal Plug and Play (UPnP) TCP:1900, 5000, 2869, UDP: 1900, 5000, 2869

Port 1900 is IANA registered by Microsoft for SSDP (Simple Service Discovery Protocol). Port 5000 is also registered, but not by Microsoft, and not for this service I don't think. Microsoft Security Bulletins: MS01-054, MS01-059. NIPC Advisory 01-030.2, SecurityFocus. Also see the Remote Access Trojan FAQ about port 5000. About 2869 (which is IANA registered as MS ICSLAP), Microsoft says starting with Windows XP SP2, SSDP event notification service will rely on TCP port 2869. Currently this is only a speculative risk.
第1 章Linux操作系统概述................... .......................................................................... 2 1.1 Linux发展历史........................................................ 2 1.1.1 Linux的诞生和发展.............................................. 2 1.1.2 Linux名称的由来........................................ ........ 3 1.2 Linux的发展要素...................................................... 3 1.2.1 U N I X操作系统.................................................. 4 1.2.2 Minix操作系统.................................................. 4 1.2.3 POSIX 标准.....................................................4 1.3 Linux 与 U N I X 的异同.................................................. 5 1 . 4 操作系统类型选择和内核版本的选择..................................... 5 1.4.1常见的不同公司发行的Linux异同................................. 6 1.4.2 内核版木的选择..................................................6 1.5 Linux的系统架构...................................................... 7 1.5.1 Linux内核的主要模块............................................ 7 1.5.2 Linux的文件结构................................................ 9 1.6 G N U 通用公共许可证..................................................10 1.6.1 G P L许可证的历史.............................................. 10 1.6.2 G P L 的白由理念................................................ 10 1.6.3 G P L 的基本条款................................................ 11 1.6.4关于G P L 许町证的争议......................................... 12 1.7 Linux软件开发的可借鉴之处........................:.................. 12 1-8 .................................................................13 第2 章Linux编程环境....................................................................................................14 2.1 Linux环境下的编辑器................................................. 14 2.1.1 v i m使用简介...................................................14 2 . 1 . 2使用v i m建立文件.............................................. 15 2 . 1 . 3使用v i m编辑文本.............................................. 16 2.1.4 v i m的格式设置.................................................18 目录 2.1.5 vim 配置文件....................................................................................................... .. 2 . 1 . 6 使用其他编辑器................................................................................................... 2.2 Linux下的G C C 编译器工具集.......................................... 19 2.2.1 G C C 简介......................................................19 2 . 2 . 2 编译程序的基本知识......................................................................................... 21 2.2.3 .单个文件编译成执行文件........................................ 22 2 . 2 . 4编译生成目标文件.............................................. 22 2 . 2 . 5多文件编译............ ........................................ 23 2.2.6 预处理........................................................ 24 2 . 2 . 7编译成汇编语言.................................................24 2 . 2 . 8生成和使用静态链接库.......................................... 25 2 . 2 . 9生成动态链接库.................................................26 2.2.10动态加载库................................................... 29 2.2.11 G C C 常用选项................................................ 31 2 . 2 . 1 2编译环境的搭建................................................33 2.3 Makefile 文件简介.....................................................34 2.3.1 一个多文件的工程例子............................. ............. 34 2 . 3 . 2多文件工程的编译.............................................. 36 2.3.3 Makefile 的规则.................................................37 2.3.4 Makefile 中使用变量............................................ 39 2 . 3 . 5搜索路径...................................................... 43 2 . 3 . 6自动推导规则.................................................. 44 2.3.7 递归 make......................................................44 2.3.8 Makefile 中的函数.............................................. 46 2 . 4 用G D B 调试程序..................................................... 47 2 . 4 . 1编译可调试程序.................................................48 2.4.2 使用G D B 调试程序............................................. 49 2.4.3 G D B 常用命令..................................................52 2.4.4 其他的 G D B ....................................................59 2.5 顿.................................................................60 第3 章文件系统简介........................................................ 61 3.1 Linux下的文件系统.................................................. 61 3.1.1 Linux下文件的内涵............................................. 61 3.1.2 文件系统的创建................................................. 62 3 . 1 . 3挂接文件系统.................................................. 64 3.1.4 索弓丨节点 inode.......... •'...................................... 65 3.1.5 普通文件...................................................... 66 3 . 1 . 6设备文件...................................................... 66 3 . 1 . 7虚拟文件系统V F S .............................................. 68 目录 3.2 文件的通用操作方法................................................. 72 3 . 2 . 1文件描述符.................................................... 72 3 . 2 . 2打开创建文件open()、create()函数................................ 72 3 . 2 . 3关闭文件closeO函数............................................ 76 3 . 2 . 4读取文件read()函数............................................. 77 3.2.5 写文件write()函数.............................................. 79 3 . 2 . 6文件偏移lseekO函数............................................ 80 3 . 2 . 7获得文件状态fstat()函数.....................•'................... 83 3 . 2 . 8文件空间映射m m a p ()函数....................................... 85 3 . 2 . 9文件属性fcntl()函数............................................. 88 3. 2 . 1 0文件输入输出控制ioctl()函数....................................92 3.3 socket文件类型....................................................... 93 3.4 /J、@ .................................................................93 第4 章程序、进程和线程.................................................... 94 4 . 1 程序、进程和线程的概念.............................................. 94 4 . 1 . 1程序和进程的差别............................................ ’."94 4.1.2 Linux环境下的进程............................................. 95 4 . 1 . 3进程和线程.................................................... 96 4 . 2 进程产生的方式...................................................... 96 4.2.1 进程号........................................................ 96 4.2.2 进蟬复制 fork()................................................. 97 4.2.3 system()方式....................................................98 4.2.4 进程执行exec()函数系列......................................... 99 4 . 2 . 5所有用户态进程的产生进程init................................. 100 4 . 3 进程间通信和同步................................................... 101 4.3.1 半双工管道................................................... 101 4.3.2 命名管道..................................................... 107 4.3.3 消息队列..................................................... 108 4 . 3 . 4消息队列的一个例子........................................... 114 4.3.5 信号量......................... .............................. 116 4 . 3 . 6共享内存..................................................... 121 4.3.7 信号.......................................................... 124 4.4 Linux下的线程...................................................... 127 4 . 4 . 1多线程编程实例................................................127 4.4.2 Linux 下线程创建函数 pthread_create()............................ 129 4.4.3 线程的结束函数 pthread_join()和 pthread_exit().....................129 4.4.4 线程的属性................................................... 130 4 . 4 . 5线程间的互斥................................................. 132 4 . 4 . 6线程中使用信号量..............................................133 • VII • n 录 4-5 純............................................................... 136 第2 篇Linux用户层网络编程 第5 章T C P / I P协议族简介.................................................. 138 5.1 O S I网络分层介绍....................................................138 5.1.1 O S I网络分层结构............................................. 138 5.1.2 O S I的7 层网络结构........................................... 139 5.1.3 O S I参考模塑中的数据传输..................................... 140 5.2 TCP/IP 协议找....................................................... 141 5.2.1 TCP/IP协议栈参考模型......................................... 141 5 . 2 . 2主机到网络层协议............................................. 143 5.2.3 IP 协议....................................................... 144 5.2.4 网际控制报文协议(ICMP) .................................... 146 5.2.5 传输控制协议(TCP) ......................................... 150 5 . 2 . 6用户数据报文协议(U D P ) ..................................... 154 5 . 2 . 7地址解析协议(A R P) ......................................... 156 5.3 IP地址分类与T C P / U D P端U .......................................... 158 5 . 3 . 1因特网中IP地址的分类........................................ 159 5.3.2 子网掩码(subnet mask address) ................................ 161 5.3.3 IP地址的配置................................................. 162 5.3.4 端口......................................................... 163 5 . 4 主机字节序和网络字节序............................................. 163 5 . 4 . 1字节序的含义................................................. 164 5 . 4 . 2网络字节序的转换............................................. 164 5.5 /J、@ ........................................................... .....166 第6 章应用层网络服务程序简介...................... ;..................... 167 6.1 H T T P协议和服务....................................................167 6.1.1 H T T P 协议概述.................................................167 6.1.2 H T T P协议的基本过程.......................................... 168 6.2 F T P协议和服务......................................................170 6.2.1 F T P协议概述..................................................170 6.2.2 F T P协议的工作模式........................................... 172 6.2.3 F T P协议的传输方式........................................... 172 6.2.4 —个简单的F T P过程........................................... 173 6.2.5 常用的F T P工具............................................... 173 6.3 T E L N E T协议和服务................................................. 174 6 . 3 . 1远程登录的基本概念........................................... 174 • VIII • 目录 6 . 3 . 2使用T E L N E T协议进行远程登录的工作过程...................... 174 6.3.3 T E L N E T 协议................................................. 174 6.4 N F S 协议和服务......................................................176 6.4.1 安装N F S服务器和客户端...................................... 176 6 . 4 . 2服务器端的设定................................................176 6 . 4 . 3客户端的操作................................................. 177 6.4.4 showmount 命令................................................177 6 . 5 自定义网络服务..................................................... 177 6.5.1 xinetd/inetd....................................................178 6.5.2 xinetd月艮务配置................................................178 6 . 5 . 3自定义网络服务............................................... 179 6.6 小结................................................................180 第7 章T C P 网络编程基础...............................................181 7.1 套接字编程基础知识................................................. 181 7.1.1 套接字地址结构................................................181 7 . 1 . 2用户层和内核层交互过程....................................... 183 7.2 T C P 网络编程流程................................................... 184 7.2.1 T C P网络编程架构............................................. 184 7 . 2 . 2创建网络插口函数socket()...................................... 186 7.2.3 绑定一个地址端口对bind()......................................189 7.2.4 监听本地端口 listen............................................ 192 7.2.5 接受一个网络请求acceptO...................................... 194 7 . 2 . 6连接H 标网络服务器connect()................................... 199 7.2.7 写入数据函数writeO........................................... 200 7 . 2 . 8读取数据函数readO............................................ 201 7 . 2 . 9关闭套接字函数close()......................................... 201 7 . 3 服务器/客户端的简单例子............................................ 202 7.3.1 例子功能描述........................................... ......202 7 . 3 . 2服务器网络程序................................................203 7 . 3 . 3服务器读取和显示字符串....................................... 205 7 . 3 . 4客户端的网络程序............................................. 205 7 . 3 . 5客户端读取和显示字符串....................................... 206 7 . 3 . 6编译运行程序................................................. 206 7 . 4 截取信号的例子..................................................... 207 7.4.1 信号处理..................................................... 207 7.4.2 信号 SIGPIPE..................................................208 7.4.3 信号 SI G INT.................................... •.............. 208 7.5 /J、g ................................................................208 • IX • 第8 章服务器和客户端信息的获取...........................................210 8 . 1 字节序............................................................................................................................210 8 . 1 . 1 大端字节序和小端字节序...............................................................................210 8 . 1 . 2 字节序转换函数................................................................................................212 8.1.3 一个字节序转换的例子......................................... 214 8 . 2 字符串I P地址和二进制IP地址的转换................................. 217 8.2.1 inet_xxx()函数................................................. 217 8.2.2 inet_pton()和 inet_ntop()函数.....................................219 8 . 2 . 3使用8.2.1节地址转换函数的例子............................ .•••••••220 8.2.4 使用函数 inet_pton()和函数 inet—ntop()的例子......................223 8 . 3 套接字描述符判定函数issockettype()................................... 223 8 . 3 . 1进行文件描述符判定的函数issockettypeO.........................224 8.3.2 main()g| 数.................................................... 224 8.4 IP地址与域名之间的相互转换................................................................................. 225 8.4.1 D N S 原理.....................................................225 8 . 4 . 2获取主机信息的函数........................................... 226 8 . 4 . 3使用主机名获取主机信息的例子................................. 228 8 . 4 . 4函数gethostbyname()不可重入的例子............................. 230 8 . 5 协议名称处理函数................................................... 232 8.5.1 xxxprotoxxx()函数............................................. 232 8 . 5 . 2使用协议族函数的例子......................................... 233 8.6 小结................................................................236 第9 章数据的I O和复用....................................................237 9.1 IO 函数.......................................................................................................................... 237 9 . 1 . 1使用recv()函数接收数据........................................237 9 . 1 . 2 使用sendO函数发送数据................................................................................239 9 . 1 . 3 使用readvO函数接收数据..............................................................................240 9 . 1 . 4 使用writev()闲数发送数据.............................................................................240 9 . 1 . 5使用recvmsgO函数接收数据.................................... 242 9 . 1 . 6 使用sendmsgO函数发送数据.........................................................................244 9.1.7 I O函数的比较.................................................246 9.2 使用I O函数的例子.................................................. 246 9 . 2 . 1客户端处理框架的例子......................................... 246 9 . 2 . 2服务器端程序框架............................................. 248 9.2.3 使用 recv()和 send()函数........................................ 249 9.2.4 使用 readv()和 write()函数.......................................251 9.2.5 使用 recvmsgO和 sendmsg()函数..................................253 9.3 10 模型............................................................. 256 9 . 3 . 1阻塞I O模型.................................................. 256 • X • 目录 9 . 3 . 2非阻塞1 0模型................................................ 257 9.3.3 10 复用....................................................... 257 9 . 3 . 4信号驱动I O模型.............................................. 258 9 . 3 . 5异步I O模型.................................................. 258 9.4 select()函数和 pselect()函数............................................ 259 9.4.1 select()闲数.................................................... 259 9.4.2 pselect()函数...................................................261 9.5 poll()函数和 ppoll()函数............................................... 262 9.5.1 poll()函数..................................................... 263 9.5.2 p p o l l O ® ^ .................................................... 264 9 . 6 非阻塞编程.......:.................................................. 264 9 . 6 . 1非阻塞方式程序设计介绍....................................... 264 9 . 6 . 2非阻塞程序设计的例子......................................... 264 9.7 小结................................................................266 第1 0章基于U D P 协议的接收和发送...................................... ,...267 10.1 U D P 编程框架......................................................267 10.1.1 U D P 编程框图................................................ 267 10.1.2 U D P 服务器编程框架.......................................... 269 10.1.3 U D P 客户端编程框架.......................................... 269 10.2 U D P 协议程序设计的常用函数....... :................................270 10.2.1建立套接字socket()和绑定套接字bind()......................... 270 10.2.2 接收数据 recvfrom()/recv()......................................270 10.2.3 发送数据 sendtoO/sendO...............................................................................275 10.3 U D P 接收和发送数据的例子.......................................... 279 10.3.1 U D P 服务器端................................................ 279 10.3.2 U D P 服务器端数据处理........................................280 10.3.3 U D P 客户端..................................................281 10.3.4 U D P 客户端数据处理.......................................... 281 10.3.5 测试 U D P 程序............................................... 282 10.4 U D P 协议程序设计中的几个问题......................................282 10.4.1 U D P 报文丢失数据............................................ 282 10.4.2 U D P 数据发送中的乱序........................................284 10.4.3 U D P 协议中的 connect()函数....................................287 10.4.4 U D P 缺乏流量控制............................................ 287 10.4.5 U D P 协议中的外出网络接口....................................289 10.4.6 U D P 协议中的数据报文截断....................................290 10.5 小结.............................................................. 291 第1 1章高级套接字........................................................ 292 11.1 U N I X 域函数.......................................................292 • XI • 目录 11.1.1 UNIX域函数的地址结构..............................................................................292 1 1 .1 .2套接字函数.................................................................................................... 293 11 . 1 . 3 使用UNIX域函数进行套接字编程............................................................ 293 11.1.4传递文件描述符.............................................. 296 11.1.5 socketpair()闲数............................................................................................. 296 11.1.6传递文件描述符的例子.................................................................................297 11.2 广播............................................................................................................................. 302 11.2.1 广播的IP地址............................................................................................... 302 11.2.2广播与单播的比较......................................................................................... 303 11.2.3 广播的示例.....................................................................................................304 1 1 . 3多播................................................ 11.3.1多播的概念....................... 1 1 .3 .2广域网的多播................... 11.3.3多播的编程....................... 11.3.4 内核中的多播................... 11.3.5 一个多播例子的服务器端 11.3.6 —个多播例子的客户端•••• 1 1 . 4数据链路层访问........................... 11.4.1 SOCK_PACKET 类型…… 11.4.2设置套接U 以捕获链路帧的编程方法............................ 320 11.4.3从套接口读取链路帧的编程方法................................ 321 11.4.4定位IP包头的编程方法....................................... 322 11.4.5定位T C P报头的编程方法..................................... 323 11.4.6定位U D P 报头的编程方法..................................... 325 11.4.7定位应用层报文数据的编程方法................................ 326 11.4.8使用S O C K _ P A C K E T编写A R P 请求程序的例子................. 326 11.5 329 第1 2章套接字选项........................................................330 12.1 获取和设置套接字选项 getsocketopt()/setsocketopt()......................330 12.1.1 getsockopt()函数和 setsocketopt()函数的介绍......................330 12.1.2套接字选项................................ ..................331 12.1.3套接字选项简单示例.......................................... 332 12.2 S O L ^ S O C K E T 协议族选项........................................... 336 12.2.1 S O—B R O A D C A S T 广播选项....................................336 12.2.2 S O—D E B U G 调试选项......................................... 337 12.2.3 S O _ D O N T R O U T E 不经过路由选项............................. 337 12.2.4 S O—E R R O R 错误选项......................................... 338 12.2.5 S O _ K E E P A L I V E 保持连接选项................................. 338 12.2.6 S O L I N G E R缓冲区处理方式选项...............................339 • XII • U录 12.2.7 S O _ O O B I N L I N E带外数据处理方式选项.........................342 12.2.8 S O _ R C V B U F 和 S O一S N D B U F 缓冲区大小选项................... 342 12.2.9 S O _ R C V L O W A T 和 S O _ S N D L O W A T 缓冲区下限选项............ 343 12.2.10 S O _ R C V T I M E O 和 S O _ S N D T I M E O 收发超时选项............... 343 12.2.11 S O _ R E U S E R A D D R 地址重用选项............................. 344 12.2.12 S O—E X C L U S I V E A D D R U S E 端 U 独占选项...................... 344 12.2.13 S 0 _ T Y P E套接字类型选项.................................... 345 12.2.14 SO_BSDCOMPAT 与 BSD 銮接字兼容选项............................................345 12.2.15 S O _ B I N D T O D E V I C E套接字网络接口绑定选项................. 345 12.2.16 S O _ P R I O R I T Y套接字优先级选项............................. 346 12.3 I P P R O T O J P 选项...................................................347 12.3.1 IP-HD RT NCL 选项............................................ 347 12.3.2 IP O P T N I O S 选项............................................ 347 12.3.3 IP_TOS 选项................................................. 347 12.3.4 IP_TTL 选项..................................................347 12.4 IPP RO TO_TCP 选项................................................. 348 12.4.1 T C P _ K E E P A L I V E 选项................... ..................... 348 12.4.2 T C P _ M A X R T 选项............................................ 348 12.4.3 T C P—M A X S E G 选项.......................................... 349 12.4.4 T C P _ N O D E L A Y 和 T C P _ C O R K 选项............................ 349 1 2 . 5使用套接字选项.................................................... 351 12.5.1设置和获取缓冲区大小........................................ 351 12.5.2获取套接字类型的例子........................................ 355 12.5.3使用套接字选项的综合例子.................................... 356 12.6 ioctl()函数.......................................................... 361 12.6.1 ioctl()函数的命令选项......................................... 361 12.6.2 ioctl()函数的 IO 请求.......................................... 363 12.6.3 ioctl()函数的文件请求......................................... 365 12.6.4 ioctl()函数的网络接U 请求:.....................................365 12.6.5使用ioctl()函数对A R P 高速缓存操作........................... 372 12.6.6使用ioct〖()函数发送路由表请求.................................374 12.7 fcntl()函数......................................................... 374 12.7.1 fcntl()函数的选项............................................. 375 12.7.2使用fcntl()函数修改套接字非阻塞属性.......................... 375 12.7.3使用fcntlO函数设置信号属主...................................376 12.8 小结...............................................................376 第13章原始套接字......................................................................................................377 13.1 概述...............................................................377 1 3 . 2原始套接字的创建.................................................. 379 • XIII • 目录 13.2.1 S O C K J I A W 选项............................................. 379 13.2.2 IPJHDR 1NCL 套接字选项......................................379 13.2.3 不需要bindO函数............................................. 380 1 3 . 3原始套接字发送报文................................................ 380 13.4 原始套接字接收报文................................................ 380 1 3 . 5原始套接字报文处理时的结构........................................ 381 13.5.1 1 P头部的结构........................................... ..... 381 13.5.2 I C M P 头部结构............................................... 382 13.5.3 U D P 头部结构................................................ 384 13.5.4 T C P 头部结构................................................ 386 13.6 ping 的例子........................................................ 387 13.6.1 协议格式............................................. •••..... 388 13.6.2 校验和函数.................................................. 389 13.6.3 设置I C M P发送报文的头部.................................... 390 13.6.4剥离I C M P接受报文的头部.................................... 391 13.6.5 计算时间差.................................................. 392 13.6.6发送报文.................................................... 393 13.6.7接收报文.................................................... 394 13.6.8主函数过程.................................................. 395 13.6.9 主函数 main()................................................ 397 13.6.10 编译测试................... ................................ 400 1 3 . 7洪水攻击.......................................................... 400 13.8 I C M P洪水攻击..................................................... 401 13.8.1 I C M P洪水攻击的原理.........................................401 13.8.2 I C M P洪水攻击的例子.........................................401 13.9 U D P 洪水攻市......................................................405 13.10 S Y N 洪水攻击.....................................................409 13.10.1 S Y N 洪水攻击的原理.........................................409 13.10.2 S Y N 洪水攻击的例子.........................................409 13.11 小结............................................................. 413 第1 4章服务器模型选择....................................................414 1 4 . 1循环服务器:........................................................ 414 14.1.1 U D P 循环服务器.............................................. 414 14.1.2 T C P循环服务器.............................................. 417 1 4 . 2简单并发服务器.................................................... 420 14.2.1并发服务器的模型............................................ 420 14.2.2 U D P 并发服务器.............................................. 420 14.2.3 T C P并发服务器.............................................. 423 14.3 T C P的高级并发服务器模型.......................................... 426 . XIV • 目录 14.3.1 单客户端单进程,统一 accept()................................. 426 14.3.2 单客户端单线程,统一accept()................................. 429 1 4.3.3单客户端单线程,各线程独自acceptO,使用互斥锁.............. 431 14.4 I O复用循环服务器..................................................435 14.4.1 I O复用循环服务器模型介绍....................................435 14.4.2 I O复用循环服务器模型的例子..................................436 14.5 440 第1 5章IPv6简介.......................... ...............................441 15.1 IPv4 的缺陷........................................................ 441 15.2 IPv6 的特点........................................................ 442 15.3 IPv6 的地址......................:.................................. 443 15.3.1 IPv6的单播地址.............................................. 443 15.3.2可聚集全球单播地址.......................................... 443 15.3.3 本地使用单播地址............................................ 444 15.3.4 兼容性地址.................................................. 445 15.3.5 IPv6 多播地址................................................ 446 15.3.6 IPv6 任播地址................................................ 446 15.3.7主机的多个IPv6地址......................................... 447 15.4 IPv6 的头部........................................................ 447 15.4.1 IPv6 头部格式........................................ ........ 447 15.4.2 与IPv4头部的对比........................................... 448 15.4.3 IPv6 的 T C P 头部............................................. 449 15.4.4 IPv6 的 U D P 头部............................................. 449 15.4.5 IPv6 的 I C M P 头部............................................ 449 15.5 IPv6运行环境...................................................... 451 15.5.1 加载 IPv6 模块............................................... 451 15.5.2查看是否支持IPv6............................................ 452 15.6 IPv6的结构定义.................................................... 453 15.6.1 IPv6的地址族和协议族........................................453 15.6.2套接字地址结构...............................................453 15.6.3 地址兼容考虑................................................ 455 15.6.4 IPv6 通用地址................................................ 455 15.7 IPv6的套接字函数.................................................. 456 15.7.1 socketO 函数.................................................. 456 15.7.2没有发生改变的函数.......................................... 456 15.7.3 发生改变的函数...............................................457 15.8 IPv6的套接字选项.................................................. 457 15.8.1 IPv6的套接字选项............................................ 457 15.8.2 单播跳限 I P V 6 _ U N I C A S T _ H O P S............................... 459 • XV • 目录 15.8.3发送和接收多播包............................................ 459 15.8.4 IPv6中获得时间戳的ioctl命令................................. 460 15.9 IPv6的库函数...................................................... 460 15.9.1地址转换函数的差异.......................................... 460 15.9.2域名解析函数的差异.......................................... 461 15.9.3 测试宏...................................................... 463 15.10 IPv6的编程的一个简单例子......................................... 463 15.10.1 服务器程序................................................. 464 15.10.2 客户端程序................................................. 465 15.10.3 编译调试................................................... 467 15.11 小结............................................................. 467 第3 篇Linux内核网络编程 第16章Linux内核中网络部分结构以及分布...............................................................470 16.1 概述...............................................................470 16.1.1代码目录分布................................................ 470 16.1.2内核中网络部分流程简介...................................... 472 16.1.3系统提供修改网络流程点...................................... 474 16.1.4 sk_buff 结构..................................................475 16.1.5 网络协议数据结构inet_protosw................................. 478 1 6 . 2软中断C P U 报文队列及其处理....................................... 479 16.2.1 Linux内核网络协议层的层间传递手段— 软中断................ 479 1 6 . 2 . 2网络收发处理软中断的实现机制................................ 481 16.3 socket数据如何在内核中接收和发送...................................482 16.3.1 socket()的初始化.............................................. 482 16.3.2 接收网络数据recv()........................................... 482 16.3.3发送网络数据sendO........................................... 483 16.4 小结...............................................................484 第17章neffilter框架内报文处理.................................................................................485 17.1 netfilter............................................................ 485 17.1.1 netfilter 简介..................................................485 17.1.2 netfilter 框架..................................................486 17.1.3 netfilter 检査时的表格.........;................................487 17.1.4 netfilter 的规则................................................487 17.2 iptables 和 netfilter...................................................488 17.2.1 iptables 简介..................................................488 17.2.2 iptables 的表和链............................................. 488 • XVI • 目录 17.2.3 使用iptables设置过滤规则.....................................489 1 7 . 3内核模块编程...................................................... 492 17.3.1 内核 “Hello, World! ”程序................................... 492 17 . 3 . 2内核模块的基本架构.......................................... 494 1 7 . 3 . 3内核模块加载和卸载过程...................................... 496 1 7 . 3 . 4内核模块初始化和清理函数.................................... 497 1 7 . 3 . 5内核模块初始化和淸理过程的容错处理.......................... 497 1 7 . 3 . 6内核模块编译所需的Makefile.................................. 498 17.4 5 个钩子点......................................................... 499 17.4.1 netfilter 的 5 个钩子,点......................................... 499 17.4.2 N F H O O K 'k .................................................500 17.4.3钩了.的处理规则.............................................. 501 1 7 . 5注册/注销钩子...................................................... 502 17.5.1 结构 nf_hook_ops............................................. 502 17.5.2注册钩子.................................................... 503 17.5.3 注销钩子.................................................... 504 17.5.4注册注销函数................................................ 504 1 7 . 6钩子的简单处理例子................................................ 505 17.6.1 功能描述.................................................... 505 17.6.2 需求分析.................................................... 506 17.6.3 ping回显屏蔽实现............................................ 506 17.6.4禁止向目的IP地址发送数据的实现............................. 506 17.6.5 端口关闭实现................................................ 506 17.6.6动态配置实现................................................ 508 17.6.7可加载内核实现代码.......................................... 509 17.6.8应用层测试代码实现.......................................... 516 17.6.9 编泽运行.................................................... 516 17.7 •点多个钩子的优先级...............................................517 1 7 . 8校验和问题........................................................ 518 17.9 小结.... ...........................................................518 第4篇综合案例 第1 8章一个简单W e b 服务器的例子S H T T P D ............................... 522 18.1 S H T T P D的需求分析................................................ 522 18.1.1 S H T T P D启动参数可动态配置的需求............................ 523 18.1.2 S H T T P D的多客户端支持的需求................................ 524 18.1.3 S H T T P D支持方法的需求...................................... 525 18.1.4 S H T T P D支持的H T T P协议版本的需求.......................... 526 • XVII • 0 录 18.1.5 S H T T P D支持头部的需求...................................... 527 18.1.6 S H T T P D 定位 URI 的需求......................................527 18.1.7 S H T T P D 支持 CGI 的需求......................................528 18.1.8 S H T T P D错误代码的需求............... ....................... 529 18.2 S H T T P D的模块分析和设计.......................................... 530 18.2.1 S H T T P D 的主函数............................................ 530 18.2.2 S H T T P D命令行解析的分析设计................................ 531 18.2.3 S H T T P D配置文件解析的分析设计.............................. 532 18.2.4 S H T T P D的多客户端支持的分析设计............................ 534 18.2.5 S H T T P D头部解析的分析设计.................................. 536 18.2.6 S H T T P D 对 URI 的分析设计....................................537 18.2.7 S H T T P D支持方法的分析设计.................................. 537 18.2.8 S H T T P D支持C G I的分析设计................................. 538 18.2.9 S H T T P D错误处理的分析设计................................. <540 18.3 S H T T P D各模块的实现.................................... :......... 542 18.3.1 S H T T P D命令行解析的实现.................................... 543 18.3.2 S H T T P D文件配置解析的实现.................................. 545 18.3.3 S H T T P D的多客户端支持的实现................................ 547 18.3.4 S H T T P D所请求U R I解析的实现............................... 551 18.3.5 S H T T P D方法解析的实现...................................... 552 18.3.6 S H T T P D响应方法的实现...................................... 552 18.3.7 S H T T P D 支持 CGI 的实现......................................556 18.3.8 S H T T P D支持H T T P协议版本的实现............................ 559 18.3.9 S H T T P D内容类型的实现...................................... 559 18.3.10 S H T T P D错误处理的实现..................................... 561 18.3.11 S H T T P D生成目录下文件列表文件的实现.......................563 18.3.12 S H T T P D主函数的实现....................................... 565 18.4 S H T T P D的编译、调试和测试........................................ 566 18.4.1 建立源文件...................................................566 18.4.2 制作 Makefile.................................................566 18.4.3 制作执行文件........................................:....... 567 18.4.4使用不同的浏览器测试服务器程序.............................. 567 18.5 小结...............................................................568 第1 9章一个简单网络协议栈的例子S I P ......................................569 19.1 S I P网络协议找的功能描述........................................... 569 19.1.1 SIP网络协议栈的基本功能描述................................ 570 19.1.2 S I P网络协议栈的分层功能描述................................ 570 19.1.3 S I P网络协议栈的用户接U 功能描述............................ 571 19.2 S I P网络协议找的架构............................................... 571 • XVIII • S 录 19.3 S I P网络协议找的存储区缓存......................................... 572 19.3.1 SIP存储缓冲的结构定义....................................... 573 19.3.2 SIP存储缓冲的处理函数....................................... 577 19.4 S I P网络协议找的网络接U 层......................................... 579 19.4.1 SI P网络接U 层的架构......................................... 579 19.4.2 S I P网络接U 层的数据结构...................................•.••■580 19.4.3 S I P网络接口层的初始化函数...................................581 19.4.4 S I P网络接口层的输入函数.....................................583 19.4.5 S I P网络接口层的输出函数.....................................586 19.5 S I P网络协议栈的A R P 层............................................ 588 19.5.1 SIP地址解析层的架构......................................... 588 19.5.2 SIP地址解析层的数据结构.....................................588 19.5.3 SIP地址解析层的映射表.......................................590 19.5.4 SIP地址解析层的A R P 映射表维护函数......................... 591 19.5.5 SIP地址解析层的A R P 网络报文构建函数.... :..................593 19.5.6 S1P地址解析层的A R P 网络报文收发处理函数................... 595 19.6 S I P网络协议栈的IP层.............................................. 598 19.6.1 S I P网际协议层的架构......................................... 598 19.6.2 S I P网际协议层的数据结构.....................................599 19.6.3 S I P网际协议层的输入函数.....................................601 19.6.4 S I P网际协议层的输出函数.....................................605 19.6.5 S I P网际协议层的分片函数.....................................606 19.6.6 S I P网际协议层的分片组装函数................................ 607 19.7 S I P网络协议栈的I C M P层........................................... 611 19.7.1 SIP控制报文协议的数据结构.................................. 611 19.7.2 SIP控制报文协议的协议支持...................................612 19.7.3 SIP控制报文协议的输入函数.................................. 613 19.7.4 SIP控制报文协议的回显应答函数.............................. 614 19.8 S I P网络协议栈的U D P 层............................................ 615 19.8.1 SIP数据报文层的数据结构.....................................615 19.8.2 SIP数据报文层的控制单元.....................................615 19.8.3 SIP数据报文层的输入函数.....................................617 19.8.4 SIP数据报文层的输出函数.....................................618 19.8.5 SIP数据报文层的建立函数.....................................618 19.8.6 SIP数据报文层的释放函数.....................................619 19.8.7 SIP数据报文层的绑定函数.....................................620 19.8.8 SIP数据报文层的发送数据闲数.................................621 19.8.9 SIP数据报文层的校验和计算...................................622 19.9 S I P网络协议栈的协议无关层......................................... 623 19.9.1 SIP协议无关层的系统架构.....................................623 • XIX • 目录 19.9.2 SIP协议无关层的函数形式.....................................624 19.9.3 S1P协议无关层的接收数据函数................................ 624 19.10 S I P网络协议栈的B S D 接U 层....................................... 625 19.10.1 S IP用户接口层的架构........................................ 625 19.10.2 SIP用户接n 层的套接字建立函数............................. 626 19.10.3 SIP用户接M 层的套接字关闭函数............................. 627 19.10.4 SIP用户接U 层的套接字绑定函数............................. 627 19.10.5 SIP用户接丨」层的套接字连接函数............................. 628 19.10.6 SIP用户接U 层的套接字接收数据函数......................... 628 19.10.7 SIP用户接口层的发送数据函数................................629 19.11 S I P网络协议找的编译.............................................. 630 19.11.1 SI P的文件结构.............................................. 630 19.11.2 SIP 的 Makefile.............................................. 631 19.11.3 SIP的编译运行.............................................. 631 19.12 小结..............................................................631 第2 0章一个简单防火墙的例子S I P F W .......................................633 20.1 S I P F W防火墙的功能描述............................................ 633 20.1.1 S I P F W防火墙对主机进行网络数据过滤的功能描述............... 633 20.1.2 S I P F W防火墙用户设置防火墙规则的功能描述................... 634 20.1.3 S I P F W防火墙配K 文件等附加功能的功能描述................... 634 20.2 SIPFW 需求分析.................................................... 634 20.2.1 S I P F W防火墙条件和动作......................................635 20.2.2 S I P F W防火墙支持过滤的类型和内容........................... 635 20.2.3 S I P F W防火墙过滤的方式和动作............................... 638 20.2.4 S I P F W防火墙的配置文件...................................... 640 20.2.5 S I P F W防火墙命令行配置格式..................................640 20.2.6 S I P F W防火墙的规则文件格式..................................642 20.2.7 S I P F W防火墙的日志文件数据格式............................. 643 20.2.8 S I P F W防火墙构建所采用的技术方案........................... 644 2 0 . 3使用netlink进行用户空间和内核空间数据交S ......................... 645 20.3.1 netlink的用户空间程序设计.................................... 645 20.3.2 netlink 的内核空间 A P I........................................ 648 2 0 . 4使用proc进行内存数据用户空间映射..................................650 20.4.1 proc虚拟文件系统的结构...................................... 650 20.4.2 创建proc虚拟文件........................................... 651 2 0 . 4 . 3删除proc虚拟文件........................................... 652 20.4.4 proc文件的写函数............................................ 652 20.4.5 proc文件的读函数............................................ 653 2 0 . 5内核空间的文件操作函数............................................ 654 • XX • 20.5.1 内核空间的文件结构.......................................... 654 20.5.2 内核空间的文件建立操作...................................... 655 20.5.3 内核空间的文件读写操作...................................... 656 20.5.4 内核空间的文件关闭操作...................................... 657 20.6 S I P F W防火墙的模块分析和设计......................................657 20.6.1 S I P F W防火墙的总体架构...................................... 657 20.6.2 S I P F W防火墙的用户命令解析................................. 660 20.6.3 S I P F W用户空间与内核空间的交互............................. 663 20.6.4 S I P F W防火墙内核链h 的规则处理............................. 666 20.6.5 S I P F W防火墙的P R O C 虑拟文件系统........................... 668 20.6.6 S I P F W防火墙的配置文件和口志文件处理....................... 669 20.6.7 S I P F W防火墙的过滤模块设计................................. 671 20.7 S I P F W防火墙各功能模块的实现......................................673 20.7.〗 S I P F W防火墙的命令解析代码................................. 674 20.7.2 S I P F W防火墙的过滤规则解析模块代码......................... 678 20.7.3 S I P F W防火墙的网络数据拦截模块代码......................... 680 20.7.4 S I P F W防火墙的P R O C 虚拟文件系统........................... 681 20.7.5 S I P F W防火墙对配置文件的解析............................... 683 20.7.6 S I P F W防火墙内核模块初始化和退出........................... 684 2 0 . 7 . 7用户空间处理主函数.......................................... 685 20.8 编译、调试和测试.......................... ....................... 686 2 0 . 8 . 1用户程序和内核程序的Makefile................................ 686 20.8.2 编译及运行.................................................. 687 2 0 . 8 . 3下发过滤规则,测试过滤结果.................................. 688 20.9 小结.............................................................. 690
STM32F10xxx rev7v3参考手册. 南京万利提供的原始翻译文档. 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本. 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 目录 1 文中的缩写 16 1.1 寄存器描述表中使用的缩写列表 16 1.2 术语表 16 1.3 可用的外设 16 2 存储器和总线构架 17 2.1 系统构架 17 2.2 存储器组织 18 2.3 存储器映像 19 2.3.1 嵌入式SRAM 20 2.3.2 位段 20 2.3.3 嵌入式闪存 21 2.4 启动配置 23 3 CRC计算单元(CRC) 25 3.1 CRC简介 25 3.2 CRC主要特性 25 3.3 CRC功能描述 25 3.4 CRC寄存器 26 3.4.1 数据寄存器(CRC_DR) 26 3.4.2 独立数据寄存器(CRC_IDR) 26 3.4.3 控制寄存器(CRC_CR) 27 3.4.4 CRC寄存器映像 27 4 电源控制(PWR) 28 4.1 电源 28 4.1.1 独立的A/D转换器供电和参考电压 28 4.1.2 电池备份区域 29 4.1.3 电压调节器 29 4.2 电源管理器 29 4.2.1 上电复位(POR)和掉电复位(PDR) 29 4.2.2 可编程电压监测器(PVD) 30 4.3 低功耗模式 30 4.3.1 降低系统时钟 31 4.3.2 外部时钟的控制 31 4.3.3 睡眠模式 31 4.3.4 停止模式 32 4.3.5 待机模式 33 4.3.6 低功耗模式下的自动唤醒(AWU) 34 4.4 电源控制寄存器 35 4.4.1 电源控制寄存器(PWR_CR) 35 4.4.2 电源控制/状态寄存器 36 4.4.3 PWR寄存器地址映像 37 5 备份寄存器(BKP) 38 5.1 BKP简介 38 5.2 BKP特性 38 目录 STM32F10xxx参考手册 3/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 5.3 BKP功能描述 38 5.3.1 侵入检测 38 5.3.2 RTC校准 39 5.4 BKP寄存器描述 39 5.4.1 备份数据寄存器x(BKP_DRx) (x = 1 … 10) 39 5.4.2 RTC时钟校准寄存器(BKP_RTCCR) 39 5.4.3 备份控制寄存器(BKP_CR) 40 5.4.4 备份控制/状态寄存器(BKP_CSR) 40 5.4.5 BKP寄存器映像 42 6 复位和时钟控制(RCC) 45 6.1 复位 45 6.1.1 系统复位 45 6.1.2 电源复位 45 6.1.3 备份域复位 46 6.2 时钟 46 6.2.1 HSE时钟 48 6.2.2 HSI时钟 48 6.2.3 PLL 49 6.2.4 LSE时钟 49 6.2.5 LSI时钟 49 6.2.6 系统时钟(SYSCLK)选择 50 6.2.7 时钟安全系统(CSS) 50 6.2.8 RTC时钟 50 6.2.9 看门狗时钟 50 6.2.10 时钟输出 50 6.3 RCC寄存器描述 51 6.3.1 时钟控制寄存器(RCC_CR) 51 6.3.2 时钟配置寄存器(RCC_CFGR) 52 6.3.3 时钟中断寄存器 (RCC_CIR) 54 6.3.4 APB2外设复位寄存器 (RCC_APB2RSTR) 56 6.3.5 APB1外设复位寄存器 (RCC_APB1RSTR) 58 6.3.6 AHB外设时钟使能寄存器 (RCC_AHBENR) 60 6.3.7 APB2外设时钟使能寄存器(RCC_APB2ENR) 61 6.3.8 APB1外设时钟使能寄存器(RCC_APB1ENR) 62 6.3.9 备份域控制寄存器 (RCC_BDCR) 65 6.3.10 控制/状态寄存器 (RCC_CSR) 66 6.3.11 RCC寄存器地址映像 68 7 通用和复用功能I/O(GPIO和AFIO) 69 7.1 GPIO功能描述 69 7.1.1 通用I/O(GPIO) 70 7.1.2 单独的位设置或位清除 71 7.1.3 外部中断/唤醒线 71 7.1.4 复用功能(AF) 71 7.1.5 软件重新映射I/O复用功能 71 7.1.6 GPIO锁定机制 71 7.1.7 输入配置 71 7.1.8 输出配置 72 7.1.9 复用功能配置 73 7.1.10 模拟输入配置 73 目录 STM32F10xxx参考手册 4/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 7.2 GPIO寄存器描述 75 7.2.1 端口配置低寄存器(GPIOx_CRL) (x=A..E) 75 7.2.2 端口配置高寄存器(GPIOx_CRH) (x=A..E) 75 7.2.3 端口输入数据寄存器(GPIOx_IDR) (x=A..E) 76 7.2.4 端口输出数据寄存器(GPIOx_ODR) (x=A..E) 76 7.2.5 端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 77 7.2.6 端口位清除寄存器(GPIOx_BRR) (x=A..E) 77 7.2.7 端口配置锁定寄存器(GPIOx_LCKR) (x=A..E) 77 7.3 复用功能I/O和调试配置(AFIO) 78 7.3.1 把OSC32_IN/OSC32_OUT作为GPIO 端口PC14/PC15 78 7.3.2 把OSC_IN/OSC_OUT引脚作为GPIO端口PD0/PD1 78 7.3.3 CAN复用功能重映射 79 7.3.4 JTAG/SWD复用功能重映射 79 7.3.5 ADC复用功能重映射 80 7.3.6 定时器复用功能重映射 80 7.3.7 USART复用功能重映射 81 7.3.8 I2C 1 复用功能重映射 82 7.3.9 SPI 1复用功能重映射 82 7.4 AFIO寄存器描述 83 7.4.1 事件控制寄存器(AFIO_EVCR) 83 7.4.2 复用重映射和调试I/O配置寄存器(AFIO_MAPR) 83 7.4.3 外部中断配置寄存器1(AFIO_EXTICR1) 86 7.4.4 外部中断配置寄存器2(AFIO_EXTICR2) 86 7.4.5 外部中断配置寄存器3(AFIO_EXTICR3) 87 7.4.6 外部中断配置寄存器4(AFIO_EXTICR4) 87 7.5 GPIO 和AFIO寄存器地址映象 88 8 中断和事件 89 8.1 嵌套向量中断控制器 89 8.1.1 系统嘀嗒(SysTick)校准值寄存器 89 8.1.2 中断和异常向量 89 8.2 外部中断/事件控制器(EXTI) 91 8.2.1 主要特性 91 8.2.2 框图 92 8.2.3 唤醒事件管理 92 8.2.4 功能说明 92 8.2.5 外部中断/事件线路映像 94 8.3 EXTI 寄存器描述 95 8.3.1 中断屏蔽寄存器(EXTI_IMR) 95 8.3.2 事件屏蔽寄存器(EXTI_EMR) 95 8.3.3 上升沿触发选择寄存器(EXTI_RTSR) 96 8.3.4 下降沿触发选择寄存器(EXTI_FTSR) 96 8.3.5 软件中断事件寄存器(EXTI_SWIER) 97 8.3.6 挂起寄存器(EXTI_PR) 97 8.3.7 外部中断/事件寄存器映像 98 9 DMA 控制器(DMA) 99 9.1 DMA简介 99 9.2 DMA主要特性 99 9.3 功能描述 100 目录 STM32F10xxx参考手册 5/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 9.3.1 DMA处理 100 9.3.2 仲裁器 100 9.3.3 DMA 通道 101 9.3.4 可编程的数据传输宽度,对齐方式和数据大小端 102 9.3.5 错误管理 103 9.3.6 中断 103 9.3.7 DMA请求映像 104 9.4 DMA寄存器 107 9.4.1 DMA中断状态寄存器(DMA_ISR) 107 9.4.2 DMA中断标志清除寄存器(DMA_IFCR) 108 9.4.3 DMA通道x配置寄存器(DMA_CCRx)(x = 1…7) 108 9.4.4 DMA通道x传输数量寄存器(DMA_CNDTRx)(x = 1…7) 110 9.4.5 DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7) 110 9.4.6 DMA通道x存储器地址寄存器(DMA_CPARx)(x = 1…7) 110 9.4.7 DMA寄存器映像 111 10 模拟/数字转换(ADC) 113 10.1 ADC介绍 113 10.2 ADC主要特征 113 10.3 ADC功能描述 114 10.3.1 ADC开关控制 115 10.3.2 ADC时钟 115 10.3.3 通道选择 115 10.3.4 单次转换模式 115 10.3.5 连续转换模式 116 10.3.6 时序图 116 10.3.7 模拟看门狗 116 10.3.8 扫描模式 117 10.3.9 注入通道管理 117 10.3.10 间断模式 118 10.4 校准 119 10.5 数据对齐 119 10.6 可编程的通道采样时间 120 10.7 外部触发转换 120 10.8 DMA请求 121 10.9 双ADC模式 121 10.9.1 同步注入模式 122 10.9.2 同步规则模式 123 10.9.3 快速交替模式 123 10.9.4 慢速交替模式 124 10.9.5 交替触发模式 124 10.9.6 独立模式 125 10.9.7 混合的规则/注入同步模式 125 10.9.8 混合的同步规则+交替触发模式 125 10.9.9 混合同步注入+交替模式 126 10.10 温度传感器 126 10.11 ADC中断 127 10.12 ADC寄存器描述 128 10.12.1 ADC状态寄存器(ADC_SR) 128 目录 STM32F10xxx参考手册 6/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 10.12.2 ADC控制寄存器1(ADC_CR1) 129 10.12.3 ADC控制寄存器2(ADC_CR2) 131 10.12.4 ADC采样时间寄存器1(ADC_SMPR1) 133 10.12.5 ADC采样时间寄存器2(ADC_SMPR2) 133 10.12.6 ADC注入通道数据偏移寄存器x (ADC_JOFRx)(x=1..4) 134 10.12.7 ADC看门狗高阀值寄存器(ADC_HTR) 134 10.12.8 ADC看门狗低阀值寄存器(ADC_LRT) 134 10.12.9 ADC规则序列寄存器1(ADC_SQR1) 135 10.12.10 ADC规则序列寄存器2(ADC_SQR2) 135 10.12.11 ADC规则序列寄存器3(ADC_SQR3) 136 10.12.12 ADC注入序列寄存器(ADC_JSQR) 136 10.12.13 ADC 注入数据寄存器x (ADC_JDRx) (x= 1..4) 137 10.12.14 ADC规则数据寄存器(ADC_DR) 137 10.12.15 ADC寄存器地址映像 138 11 数字/模拟转换(DAC) 140 11.1 DAC简介 140 11.2 DAC主要特征 140 11.3 DAC功能描述 141 11.3.1 使能DAC通道 141 11.3.2 使能DAC输出缓存 141 11.3.3 DAC数据格式 142 11.3.4 DAC转换 142 11.3.5 DAC输出电压 143 11.3.6 选择DAC触发 143 11.3.7 DMA请求 144 11.3.8 噪声生成 144 11.3.9 三角波生成 145 11.4 双DAC通道转换 145 11.4.1 无波形生成的独立触发 145 11.4.2 带相同LFSR生成的独立触发 146 11.4.3 带不同LFSR生成的独立触发 146 11.4.4 带相同三角波生成的独立触发 146 11.4.5 带不同三角波生成的独立触发 146 11.4.6 同时软件启动 147 11.4.7 不带波形生成的同时触发 147 11.4.8 带相同LFSR生成的同时触发 147 11.4.9 带不同LFSR生成的同时触发 147 11.4.10 带相同三角波生成的同时触发 147 11.4.11 带不同三角波生成的同时触发 148 11.5 DAC寄存器 149 11.5.1 DAC控制寄存器(DAC_CR) 149 11.5.2 DAC软件触发寄存器(DAC_SWTRIGR) 151 11.5.3 DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1) 152 11.5.4 DAC通道1的12位左对齐数据保持寄存器(DAC_DHR12L1) 152 11.5.5 DAC通道1的8位右对齐数据保持寄存器(DAC_DHR8R1) 152 11.5.6 DAC通道2的12位右对齐数据保持寄存器(DAC_DHR12R2) 153 11.5.7 DAC通道2的12位左对齐数据保持寄存器(DAC_DHR12L2) 153 11.5.8 DAC通道2的8位右对齐数据保持寄存器(DAC_DHR8R2) 153 11.5.9 双DAC的12位右对齐数据保持寄存器(DAC_DHR12RD) 154 11.5.10 双DAC的12位左对齐数据保持寄存器(DAC_DHR12LD) 154 目录 STM32F10xxx参考手册 7/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 11.5.11 双DAC的8位右对齐数据保持寄存器(DAC_DHR8RD) 154 11.5.12 DAC通道1数据输出寄存器(DAC_DOR1) 155 11.5.13 DAC通道2数据输出寄存器(DAC_DOR2) 155 11.5.14 DAC寄存器映像 156 12 高级控制定时器(TIM1和TIM8) 157 12.1 TIM1和TIM8简介 157 12.2 TIM1和TIM8主要特性 157 12.3 TIM1和TIM8功能描述 158 12.3.1 时基单元 158 12.3.2 计数器模式 160 12.3.3 重复计数器 167 12.3.4 时钟选择 168 12.3.5 捕获/比较通道 171 12.3.6 输入捕获模式 173 12.3.7 PWM输入模式 174 12.3.8 强置输出模式 174 12.3.9 输出比较模式 175 12.3.10 PWM模式 176 12.3.11 互补输出和死区插入 178 12.3.12 使用刹车功能 179 12.3.13 在外部事件时清除OCxREF信号 180 12.3.14 产生六步PWM输出 181 12.3.15 单脉冲模式 182 12.3.16 编码器接口模式 183 12.3.17 定时器输入异或功能 185 12.3.18 与霍尔传感器的接口 185 12.3.19 TIMx定时器和外部触发的同步 187 12.3.20 定时器同步 190 12.3.21 调试模式 190 12.4 TIM1和TIM8寄存器描述 191 12.4.1 控制寄存器1(TIMx_CR1) 191 12.4.2 控制寄存器2(TIMx_CR2) 192 12.4.3 从模式控制寄存器(TIMx_SMCR) 193 12.4.4 DMA/中断使能寄存器(TIMx_DIER) 195 12.4.5 状态寄存器(TIMx_SR) 196 12.4.6 事件产生寄存器(TIMx_EGR) 197 12.4.7 捕获/比较模式寄存器1(TIMx_CCMR1) 198 12.4.8 捕获/比较模式寄存器2(TIMx_CCMR2) 200 12.4.9 捕获/比较使能寄存器(TIMx_CCER) 202 12.4.10 计数器(TIMx_CNT) 203 12.4.11 预分频器(TIMx_PSC) 204 12.4.12 自动重装载寄存器(TIMx_ARR) 204 12.4.13 重复计数寄存器(TIMx_RCR) 204 12.4.14 捕获/比较寄存器1(TIMx_CCR1) 205 12.4.15 捕获/比较寄存器2(TIMx_CCR2) 205 12.4.16 捕获/比较寄存器3(TIMx_CCR3) 205 12.4.17 捕获/比较寄存器(TIMx_CCR4) 206 12.4.18 刹车和死区寄存器(TIMx_BDTR) 206 12.4.19 DMA控制寄存器(TIMx_DCR) 208 12.4.20 连续模式的DMA地址(TIMx_DMAR) 208 目录 STM32F10xxx参考手册 8/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 12.4.21 TIM1和TIM8寄存器图 209 13 通用定时器(TIMx) 211 13.1 TIMx简介 211 13.2 TIMx主要功能 211 13.3 TIMx功能描述 212 13.3.1 时基单元 212 13.3.2 计数器模式 213 13.3.3 时钟选择 221 13.3.4 捕获/比较通道 223 13.3.5 输入捕获模式 225 13.3.6 PWM输入模式 225 13.3.7 强置输出模式 226 13.3.8 输出比较模式 226 13.3.9 PWM 模式 227 13.3.10 单脉冲模式 229 13.3.11 在外部事件时清除OCxREF信号 231 13.3.12 编码器接口模式 231 13.3.13 定时器输入异或功能 233 13.3.14 定时器和外部触发的同步 233 13.3.15 定时器同步 235 13.3.16 调试模式 239 13.4 TIMx寄存器描述 240 13.4.1 控制寄存器1(TIMx_CR1) 240 13.4.2 控制寄存器2(TIMx_CR2) 241 13.4.3 从模式控制寄存器(TIMx_SMCR) 242 13.4.4 DMA/中断使能寄存器(TIMx_DIER) 243 13.4.5 状态寄存器(TIMx_SR) 244 13.4.6 事件产生寄存器(TIMx_EGR) 245 13.4.7 捕获/比较模式寄存器1(TIMx_CCMR1) 246 13.4.8 捕获/比较模式寄存器2(TIMx_CCMR2) 249 13.4.9 捕获/比较使能寄存器(TIMx_CCER) 251 13.4.10 计数器(TIMx_CNT) 252 13.4.11 预分频器(TIMx_PSC) 252 13.4.12 自动重装载寄存器(TIMx_ARR) 252 13.4.13 捕获/比较寄存器1(TIMx_CCR1) 252 13.4.14 捕获/比较寄存器2(TIMx_CCR2) 253 13.4.15 捕获/比较寄存器3(TIMx_CCR3) 253 13.4.16 捕获/比较寄存器4(TIMx_CCR4) 253 13.4.17 DMA控制寄存器(TIMx_DCR) 254 13.4.18 连续模式的DMA地址(TIMx_DMAR) 254 13.4.19 TIMx寄存器图 255 14 基本定时器(TIM6和TIM7) 257 14.1 TIM6和TIM7简介 257 14.2 TIM6和TIM7的主要特性 257 14.3 TIM6和TIM7的功能 258 14.3.1 时基单元 258 14.3.2 计数模式 259 14.3.3 时钟源 261 14.3.4 调试模式 262 目录 STM32F10xxx参考手册 9/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 14.4 TIM6和TIM7寄存器 262 14.4.1 控制寄存器1(TIMx_CR1) 262 14.4.2 控制寄存器2(TIMx_CR2) 263 14.4.3 DMA/中断使能寄存器(TIMx_DIER) 263 14.4.4 状态寄存器(TIMx_SR) 264 14.4.5 事件产生寄存器(TIMx_EGR) 264 14.4.6 计数器(TIMx_CNT) 264 14.4.7 预分频器(TIMx_PSC) 265 14.4.8 自动重装载寄存器(TIMx_ARR) 265 14.4.9 TIM6和TIM7寄存器图 266 15 实时时钟(RTC) 267 15.1 RTC简介 267 15.2 主要特性 267 15.3 功能描述 267 15.3.1 概述 267 15.3.2 复位过程 268 15.3.3 读RTC寄存器 268 15.3.4 配置RTC寄存器 269 15.3.5 RTC标志的设置 269 15.4 RTC寄存器描述 270 15.4.1 RTC控制寄存器高位(RTC_CRH) 270 15.4.2 RTC控制寄存器低位(RTC_CRL) 270 15.4.3 RTC预分频装载寄存器(RTC_PRLH/RTC_PRLL) 271 15.4.4 RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL) 272 15.4.5 RTC计数器寄存器 (RTC_CNTH / RTC_CNTL) 272 15.4.6 RTC闹钟寄存器(RTC_ALRH/RTC_ALRL) 273 15.4.7 RTC寄存器映像 275 16 独立看门狗(IWDG) 276 16.1 简介 276 16.2 IWDG主要性能 276 16.3 IWDG功能描述 276 16.3.1 硬件看门狗 276 16.3.2 寄存器访问保护 276 16.3.3 调试模式 276 16.4 IWDG寄存器描述 277 16.4.1 键寄存器(IWDG_KR) 277 16.4.2 预分频寄存器(IWDG_PR) 278 16.4.3 重装载寄存器(IWDG_RLR) 278 16.4.4 状态寄存器(IWDG_SR) 279 16.4.5 IWDG寄存器映像 279 17 窗口看门狗(WWDG) 280 17.1 WWDG简介 280 17.2 WWDG主要特性 280 17.3 WWDG功能描述 280 17.4 如何编写看门狗超时程序 281 17.5 调试模式 282 17.6 寄存器描述 282 目录 STM32F10xxx参考手册 10/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 17.6.1 控制寄存器(WWDG_CR) 282 17.6.2 配置寄存器(WWDG_CFR) 283 17.6.3 状态寄存器(WWDG_SR) 283 17.6.4 WWDG寄存器映像 284 18 灵活的静态存储器控制器(FSMC) 285 18.1 FSMC功能描述 285 18.2 框图 285 18.3 AHB接口 286 18.3.1 支持的存储器和操作 286 18.4 外部设备地址映像 287 18.4.1 NOR和PSRAM地址映像 288 18.4.2 NAND和PC卡地址映像 288 18.5 NOR闪存和PSRAM控制器 289 18.5.1 外部存储器接口信号 290 18.5.2 支持的存储器及其操作 291 18.5.3 时序规则 291 18.5.4 NOR闪存和PSRAM时序图 291 18.5.5 同步的成组读 304 18.5.6 NOR闪存和PSRAM控制器寄存器 308 18.6 NAND闪存和PC卡控制器 313 18.6.1 外部存储器接口信号 313 18.6.2 NAND闪存/PC卡支持的存储器及其操作 314 18.6.3 NAND闪存、ATA和PC卡时序图 314 18.6.4 NAND闪存操作 315 18.6.5 NAND闪存预等待功能 316 18.6.6 NAND闪存的纠错码ECC计算(NAND闪存) 317 18.6.7 NAND闪存和PC卡控制器寄存器 317 18.7 FSMC寄存器地址映象 324 19 SDIO接口(SDIO) 325 19.1 SDIO主要功能 325 19.2 SDIO总线拓扑 325 19.3 SDIO功能描述 328 19.3.1 SDIO适配器 329 19.3.2 SDIO AHB接口 336 19.4 卡功能描述 336 19.4.1 卡识别模式 336 19.4.2 卡复位 336 19.4.3 操作电压范围确认 337 19.4.4 卡识别过程 337 19.4.5 写数据块 338 19.4.6 读数据块 338 19.4.7 数据流操作,数据流写入和数据流读出(只适用于多媒体卡) 338 19.4.8 擦除:成组擦除和扇区擦除 339 19.4.9 宽总线选择和解除选择 340 19.4.10 保护管理 340 19.4.11 卡状态寄存器 342 19.4.12 SD状态寄存器 344 19.4.13 SD I/O模式 347 目录 STM32F10xxx参考手册 11/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 19.4.14 命令与响应 348 19.5 响应格式 350 19.5.1 R1(普通响应命令) 351 19.5.2 R1b 351 19.5.3 R2(CID、CSD寄存器) 351 19.5.4 R3(OCR寄存器) 351 19.5.5 R4(快速I/O) 352 19.5.6 R4b 352 19.5.7 R5(中断请求) 352 19.5.8 R6(中断请求) 353 19.6 SDIO I/O卡特定的操作 353 19.6.1 使用SDIO_D2信号线的SDIO I/O读等待操作 353 19.6.2 使用停止SDIO_CK的SDIO读等待操作 353 19.6.3 SDIO暂停/恢复操作 354 19.6.4 SDIO中断 354 19.7 CE-ATA特定操作 354 19.7.1 命令完成指示关闭 354 19.7.2 命令完成指示使能 354 19.7.3 CE-ATA中断 354 19.7.4 中止CMD61 354 19.8 硬件流控制 354 19.9 SDIO寄存器 355 19.9.1 SDIO电源控制寄存器(SDIO_POWER) 355 19.9.2 SDIO时钟控制寄存器(SDIO_CLKCR) 355 19.9.3 SDIO参数寄存器(SDIO_ARG) 356 19.9.4 SDIO命令寄存器(SDIO_CMD) 356 19.9.5 SDIO命令响应寄存器(SDIO_RESPCMD) 357 19.9.6 SDIO响应1..4寄存器(SDIO_RESPx) 357 19.9.7 SDIO数据定时器寄存器(SDIO_DTIMER) 358 19.9.8 SDIO数据长度寄存器(SDIO_DLEN) 358 19.9.9 SDIO数据控制寄存器(SDIO_DCTRL) 358 19.9.10 SDIO数据计数器寄存器(SDIO_DCOUNT) 360 19.9.11 SDIO状态寄存器(SDIO_STA) 360 19.9.12 SDIO清除中断寄存器(SDIO_ICR) 361 19.9.13 SDIO中断屏蔽寄存器(SDIO_MASK) 362 19.9.14 SDIO FIFO计数器寄存器(SDIO_FIFOCNT) 364 19.9.15 SDIO数据FIFO寄存器(SDIO_FIFO) 364 19.9.16 SDIO寄存器映像 365 20 USB全速设备接口(USB) 366 20.1 USB简介 366 20.2 USB主要特征 366 20.3 USB功能描述 367 20.3.1 USB功能模块描述 368 20.4 编程中需要考虑的问题 369 20.4.1 通用USB设备编程 369 20.4.2 系统复位和上电复位 369 20.4.3 双缓冲端点 372 20.4.4 同步传输 373 20.4.5 挂起/恢复事件 374 目录 STM32F10xxx参考手册 12/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 20.5 USB寄存器描述 375 20.5.1 通用寄存器 375 20.5.2 端点寄存器 380 20.5.3 缓冲区描述表 382 20.5.4 USB寄存器映像 385 21 控制器局域网(bxCAN) 387 21.1 bxCAN简介 387 21.2 bxCAN主要特点 387 21.2.1 总体描述 388 21.3 bxCAN工作模式 389 21.3.1 初始化模式 390 21.3.2 正常模式 390 21.3.3 睡眠模式(低功耗) 390 21.3.4 测试模式 390 21.3.5 静默模式 390 21.3.6 环回模式 391 21.3.7 环回静默模式 391 21.4 bxCAN功能描述 392 21.4.1 发送处理 392 21.4.2 时间触发通信模式 393 21.4.3 接收管理 393 21.4.4 标识符过滤 395 21.4.5 报文存储 398 21.4.6 出错管理 399 21.4.7 位时间特性 400 21.5 bxCAN中断 402 21.6 CAN 寄存器描述 403 21.6.1 寄存器访问保护 403 21.6.2 控制和状态寄存器 403 21.6.3 邮箱寄存器 411 21.6.4 CAN过滤器寄存器 415 21.6.5 bxCAN寄存器列表 419 22 串行外设接口(SPI) 422 22.1 SPI简介 422 22.2 SPI和I2S主要特征 422 22.2.1 SPI特征 422 22.2.2 I2S功能 423 22.3 SPI功能描述 424 22.3.1 概述 424 22.3.2 SPI从模式 426 22.3.3 SPI主模式 427 22.3.4 单工通信 428 22.3.5 状态标志 428 22.3.6 CRC计算 429 22.3.7 利用DMA的SPI通信 429 22.3.8 错误标志 430 22.3.9 关闭SPI 430 22.3.10 SPI中断 430 目录 STM32F10xxx参考手册 13/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 22.4 I2S功能描述 431 22.4.1 I2S功能描述 431 22.4.2 支持的音频协议 432 22.4.3 时钟发生器 437 22.4.4 I2S主模式 438 22.4.5 I2S从模式 439 22.4.6 状态标志位 440 22.4.7 错误标志位 441 22.4.8 I2S中断 441 22.4.9 DMA功能 441 22.5 SPI和I2S寄存器描述 442 22.5.1 SPI控制寄存器1(SPI_CR1)(I2S模式下不使用) 442 22.5.2 SPI控制寄存器2(SPI_CR2) 443 22.5.3 SPI 状态寄存器(SPI_SR) 444 22.5.4 SPI 数据寄存器(SPI_DR) 445 22.5.5 SPI CRC多项式寄存器(SPI_CRCPR) 446 22.5.6 SPI Rx CRC寄存器(SPI_RXCRCR) 446 22.5.7 SPI Tx CRC寄存器(SPI_TXCRCR) 446 22.5.8 SPI_I2S配置寄存器(SPI_I2S_CFGR) 447 22.5.9 SPI_I2S预分频寄存器(SPI_I2SPR) 448 22.5.10 SPI 寄存器地址映象 449 23 I2C接口 450 23.1 I2C简介 450 23.2 I2C主要特点 450 23.3 I2C功能描述 451 23.3.1 模式选择 451 23.3.2 I2C从模式 452 23.3.3 I2C主模式 454 23.3.4 错误条件 456 23.3.5 SDA/SCL线控制 457 23.3.6 SMBus 457 23.3.7 DMA请求 459 23.3.8 包错误校验(PEC) 460 23.4 I2C中断请求 461 23.5 I2C调试模式 462 23.6 I2C寄存器描述 462 23.6.1 控制寄存器1(I2C_CR1) 462 23.6.2 控制寄存器2(I2C_CR2) 464 23.6.3 自身地址寄存器1(I2C_OAR1) 465 23.6.4 自身地址寄存器2(I2C_OAR2) 465 23.6.5 数据寄存器(I2C_DR) 465 23.6.6 状态寄存器1(I2C_SR1) 466 23.6.7 状态寄存器2 (I2C_SR2) 468 23.6.8 时钟控制寄存器(I2C_CCR) 469 23.6.9 TRISE寄存器(I2C_TRISE) 470 23.6.10 I2C寄存器地址映象 471 24 通用同步异步收发器(USART) 472 24.1 USART介绍 472 24.2 USART主要特性 472 目录 STM32F10xxx参考手册 14/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 24.3 USART功能概述 473 24.3.1 USART 特性描述 474 24.3.2 发送器 475 24.3.3 接收器 477 24.3.4 分数波特率的产生 480 24.3.5 多处理器通信 481 24.3.6 校验控制 482 24.3.7 LIN(局域互联网)模式 483 24.3.8 USART 同步模式 485 24.3.9 单线半双工通信 487 24.3.10 智能卡 487 24.3.11 IrDA SIR ENDEC 功能块 488 24.3.12 利用DMA连续通信 490 24.3.13 硬件流控制 491 24.4 USART中断请求 492 24.5 USART模式配置 493 24.6 USART寄存器描述 494 24.6.1 状态寄存器(USART_SR) 494 24.6.2 数据寄存器(USART_DR) 495 24.6.3 波特比率寄存器(USART_BRR) 496 24.6.4 控制寄存器1(USART_CR1) 496 24.6.5 控制寄存器2(USART_CR2) 498 24.6.6 控制寄存器3(USART_CR3) 499 24.6.7 保护时间和预分频寄存器(USART_GTPR) 501 24.6.8 USART寄存器地址映象 502 25 器件电子签名 503 25.1 存储器容量寄存器 503 25.1.1 闪存容量寄存器 503 25.2 产品唯一身份标识寄存器(96位) 503 26 调试支持(DBG) 505 26.1 概况 505 26.2 ARM参考文献 506 26.3 SWJ调试端口(serial wire and JTAG) 506 26.3.1 JTAG-DP和SW-DP切换的机制 507 26.4 引脚分布和调试端口脚 507 26.4.1 SWJ调试端口脚 507 26.4.2 灵活的SWJ-DP脚分配 507 26.4.3 JTAG脚上的内部上拉和下拉 508 26.4.4 利用串行接口并释放不用的调试脚作为普通I/O口 508 26.5 STM32F10xxx JTAG TAP 连接 509 26.6 ID 代码和锁定机制 509 26.6.1 微控制器设备ID编码 509 26.6.2 边界扫描TAP 510 26.6.3 Cortex-M3 TAP 510 26.6.4 Cortex-M3 JEDEC-106 ID代码 511 26.7 JTAG调试端口 511 26.8 SW调试端口 512 目录 STM32F10xxx参考手册 15/524 参照2008年12月 RM0008 Reference Manual 英文第7版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 26.8.1 SW协议介绍 512 26.8.2 SW协议序列 512 26.8.3 SW-DP状态机(Reset, idle states, ID code) 513 26.8.4 DP和AP读/写访问 513 26.8.5 SW-DP寄存器 513 26.8.6 SW-AP寄存器 514 26.9 对于JTAG-DP或SWDP都有效的AHB-AP (AHB 访问端口) 514 26.10 内核调试 515 26.11 调试器主机在系统复位下的连接能力 515 26.12 FPB (Flash patch breakpoint) 515 26.13 DWT(data watchpoint trigger) 516 26.14 ITM (instrumentation trace macrocell) 516 26.14.1 概述 516 26.14.2 时间戳包,同步和溢出包 516 26.15 MCU调试模块(MCUDBG) 517 26.15.1 低功耗模式的调试支持 517 26.15.2 支持定时器、看门狗、bxCAN和I2C的调试 518 26.15.3 调试MCU配置寄存器 518 26.16 TPIU
目录 网络驱动程序设计指南 1 第一部分 网络驱动程序 2 第一章 网络驱动程序设计指南的向导 3 第二章 内核模式驱动程序的网络结构 6 2.1 Windows 2000 网络结构和OSI模型 6 2.2 NDIS驱动程序 7 2.2.1 NDIS微端口驱动程序 7 2.2.2 NDIS中间层驱动程序 8 2.2.3 NDIS协议驱动程序 9 2.3 TDI驱动程序 9 2.4 网络驱动程序环境 9 2.4.1 无连接环境的网络驱动程序 10 2.4.2 面向连接环境下的网络驱动程序 10 2.4.3 WAN网络驱动程序的环境 11 第三章 网络驱动程序编程要点 13 3.1 可移植性 13 3.2 多处理器支持 13 3.3 IRQL 14 3.4 同步和指示 14 3.5 包结构 16 3.6 使用共享内存 17 3.7 异步I/O和完成函数 17 第二部分 微端口NIC驱动程序 19 第一章 NDIS NIC微端口驱动程序 20 1.1 NIC微端口驱动程序类型 20 1.2 网络接口卡支持 20 1.3 微端口驱动程序代码的重要特征 22 1.3.1 MiniportXxx函数 22 1.3.2 与NDIS库链接 22 1.3.3 微端口适配器环境 22 1.3.4 VC环境 23 1.3.5 网络OID 23 1.4 驱动程序例子 24 第二章 NIC微端口操作和函数概要 25 2.1 NIC微端口操作 25 2.1.1 初始化NDIS库和注册微端口驱动程序 25 2.1.2 注册网络接口卡 25 2.1.3 对查询和设置微端口信息作出响应 26 2.1.4 产生,激活,去活,和删除虚连接 26 2.1.5 发送数据 27 2.1.5.1 多包发送 27 2.1.5.2 单包发送 28 2.1.6 指示和传递接收的数据 28 2.1.6.1 多包接收 29 2.1.6.2 单包接收 29 2.1.7 指示状态 30 2.1.8 复位网络接口卡 30 2.1.9 终止一个微端口NIC驱动程序 30 2.2 微端口上层函数 30 2.2.1 无连接端口的上层函数 31 2.2.2 面向连接端口的上层函数 32 2.3 由微端口调用的NDIS函数 33 2.3.1 NDIS提供的初始化和注册函数 34 2.3.2 NDIS提供的硬件设置函数 35 2.3.3 NDIS提供的I/O端口函数 36 2.3.4 NDIS数据的与DMA相关的函数 37 2.3.5 NDIS提供的中断处理函数 38 2.3.6 NDIS提供的同步函数 38 2.3.7 NDIS提供的状态函数 39 2.3.8 NDIS为无连接端口提供的发送和接收函数 39 2.3.9 NDIS为面向连接端口提供的发送和接收函数 40 2.3.10 NDIS提供的带外数据宏 41 2.3.11 NDIS提供的包和缓存处理函数 41 2.3.12 NDIS提供的支持函数 43 2.3.13 NDIS提供的媒体相关宏 46 第三章 NIC微端口驱动程序入口点和初始化 47 3.1 NDIS微端口驱动程序入口函数 47 3.1.1 初始化包裹 47 3.1.2 注册微端口 48 3.1.2.1 指定NDIS版本号 48 3.1.2.2 注册MiniportXxx函数 48 3.1.2.3 为中断支持的注册处理程序 50 3.1.2.4 为无连接端口选择一个发送函数 51 3.1.2.5 为无连接端口选择接收函数 51 3.1.2.6 注册一个分配完成处理程序 52 3.1.2.7 注册一个挂起检测(CheckForHang) 处理程序 52 3.2 NDIS微端口初始化 53 3.2.1 注册一个NIC 53 3.2.1.1 分配一个适配器指定的环境区域 54 3.2.1.2 读取配置信息 54 3.2.1.3 注册NIC 54 3.2.2 声明资源 55 3.2.2.1 分配内存 55 3.2.2.2 注册端口 56 3.2.2.3 总线管理器DMA设备初始化 56 3.2.2.4可编程I/O设备初始化 57 3.2.2.5 内存映射设备初始化 58 3.2.2.6 从属DMA设备初始化 58 3.2.3 注册一个中断 59 3.2.4 注册一个关闭函数 59 3.2.5 初始化轮询时钟 59 3.2.6 在初始化当中的同步 60 3.2.7 在初始化时处理错误 60 3.3 查询微端口信息 61 3.4 减少微端口初始化时间 61 第四章 数据传输 64 4.1 中断处理 64 4.2 DPC处理程序 66 4.3 带外(OOB)数据包 66 4.3.1 等待发送的OOB数据 67 4.3.2 接收的OOB数据 68 4.4 发送包 69 4.4.1 无连接端口的多包传送 70 4.4.1.1 串行微端口的多包传送 70 4.4.1.2 非串行微端口的多包传送 71 4.4.2 无连接端口的单包发送 71 4.4.3 面向连接端口的多包发送 72 4.4.4 发送数据前的内存同步 73 4.4.5 发送步骤 74 4.4.5.1 在总线控制器DMA NIC上发送包 74 4.4.5.2 在PIO设备上发送单包 76 4.4.5.3 使用板上内存发送包 77 4.5 非串行微端口 78 4.5.1 非串行微端口的NDIS要求 78 4.5.2 非串行微端口的驱动程序内部要求 78 4.6 接收数据 79 4.6.1 无连接和面向连接端口的多包接收 79 4.6.2 无连接端口的单包接收 82 4.6.3 接收数据的高速缓存(Cache)因素 83 4.6.4 接收数据的步骤 83 4.6.4.1 接收期间的包管理 84 4.6.4.2 在总线控制器DMA NIC上接收数据 84 4.6.4.3 在PIO NIC上接收数据 85 4.6.4.4 在内存映射设备上接收数据 85 4.7 保持统计量 85 4.8 802.1P 包的优先权 86 4.8.1 查询802.1p优先权支持 87 4.8.2 802.1优先权的包支持 87 4.8.3 为发送和接收指定包的大小 88 4.8.4 默认情况下禁止802.1p的优先权支持 88 第五章 获取和设置WMI的微端口信息及NDIS支持 89 5.1 NDIS管理信息和OID 89 5.2 查询微端口信息 89 5.2.1 无连接端口的查询 90 5.2.2 面向连接端口的查询 91 5.3 设置微端口信息 92 5.3.1 为无连接端口设置信息 92 5.3.2 为面向连接端口设置信息 92 5.3.3 设置微端口信息的时机 93 5.4 报告硬件状态 93 5.5 WMI的NDIS支持 94 5.5.1 用WMI注册与注销NDIS微端口 94 5.5.2 OID和微端口状态的GUID映射 94 5.5.3 支持命名VC 94 5.5.4 NDIS支持的WMI操作 95 5.5.5 向WMI注册标准微端口OID 95 5.5.6 向WMI注册的标准微端口状态 97 5.5.7 定制OID与状态指示 98 5.5.7.1 填充NDIS_GUID 98 5.5.7.2 包括MOF文件 99 第六章 微端口的电源管理 100 6.1 电源管理的需求与可选的OID 100 6.2 网络设备电源状态 101 6.3 网络唤醒事件 102 6.3.1 连接改变唤醒 102 6.3.2 网络唤醒帧 102 6.3.3 魔包唤醒 103 6.3.4 启用唤醒事件 103 6.3.5 处理唤醒事件 103 6.4 处理OID_PNP_QUERY_POWER 104 6.5 处理OID_PNP_SET_POWER 104 6.5.1 转入睡眠状态 104 6.5.2 转入工作状态 104 6.6 早期微端口的电源管理 105 第七章 重置,停止和关闭 106 7.1 硬件重置(Reset) 106 7.2 停止(Halt)处理程序 106 7.3 关闭(Shutdown)处理程序 107 第八章 广域网微端口 NIC驱动程序 109 8.1 RAS 体系结构 109 8.2 NDISWAN 概述 111 8.3 网络卡、绑定、和连接 113 8.4 广域网微端口驱动程序的实现 114 8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别 115 8.4.2 CoNDIS广域网微端口驱动程序的附加特性 115 8.4.3 广域网微端口驱动程序提供的服务 116 8.4.3.1 注册为广域网微端口驱动程序 116 8.4.3.2 查询广域网微端口驱动程序的信息 117 8.4.3.3 设置广域网小段口驱动程序的状态 122 8.4.3.4 在广域网微端口驱动程序上发送数据 123 8.4.4 广域网微端口驱动程序做出的指示 125 8.4.4.1 指示从标准广域网微端口驱动程序接收数据 125 8.5 广域网包的组帧 128 8.5.1 异步帧结构 128 8.5.2 X.25帧结构 128 8.5.3 ISDN和Switched-56K帧结构 128 8.6 标准NDIS之上的电话服务扩展 128 8.6.1 NDISTAPI概述 129 8.6.2 线路设备、地址和呼叫 129 8.6.3 设置和查询请求 130 8.6.4 保持状态信息 130 8.6.5 建立句柄 131 8.6.6 TAPI注册 131 8.6.7 TAPI初始化 132 8.6.8 打开线路 133 8.6.9 接受内入呼叫 133 8.6.10 产生TAPI呼叫 134 8.6.11 主动事件处理 135 8.6.12 Line-Up指示 135 8.6.13 关闭呼叫线路 137 8.6.14 NDISTAPI接口 139 8.7 使用支持电话服务的CoNDIS扩展 143 8.7.1 NDPROXY概述 143 8.7.2 CoNDIS TAPI注册 144 8.7.3 CoNDIS TAPI初始化 144 8.7.4 建立外出呼叫 146 8.7.5 接受内入呼叫 147 8.7.6 CoNDIS TAPI关闭 150 8.7.7 语音流对呼叫管理器的要求 151 8.7.7.1 响应OID_CO_TAPI_LINE_CAPS查询 151 8.7.7.2 为外出呼叫指定参数 151 8.7.7.3 为内入呼叫指定参数 152 8.7.8 在面向连接NDIS之上支持电话服务的非广域网专用的扩展 152 第九章 任务卸载 153 9.1 查询任务卸载能力 153 9.1.1 报告NIC的校验和性能 154 9.1.2 报告NIC的IP安全性性能 155 9.1.3 报告NIC的TCP包分段性能 157 9.2 启用任务卸载能力 157 9.3 停用任务卸载能力 158 9.4 访问Per-Packet信息 158 9.5 卸载TCP/IP校验和任务 159 9.6 卸载IP安全任务 161 9.7 卸载大TCP包分段 164 9.8 卸载组合 165 9.9 使用注册表键值激活和禁止任务卸载 166 第十章 负载平衡和失效替换 166 10.1 关于LBFO 167 10.2 指定对LBFO的支持 168 10.3 在微端口驱动程序上实现LBFO 168 10.3.1 初始化微端口束 168 10.3.2 平衡微端口驱动程序的工作量 169 10.3.3 在主微端口失效后提升一个次微端口 169 第十一章 快速转发路径 169 11.1 关于FFP 170 11.1.1 使用一个NIC的FFP 170 11.1.2 使用多个NIC的FFP 170 11.1.3 IP转发 171 11.1.4 FFP和包过滤 171 11.2 NIDS中的FFP支持 172 11.3 为IP转发在微端口实现FFP 172 第十二章 带WDM低级接口的微端口驱动程序 174 12.1 WDM低层微端口 174 12.2 注册WDM低层的微端口函数 174 12.3 初始化WDM低层微端口 175 12.4 发布命令与远程设备通信 176 12.4.1 在总线上发送包 176 12.4.2 在总线上接收包 176 12.5 WDM低层的实现要点 176 12.6 WDM低层的编译标志 177 第十三章 IrDA微端口NIC驱动程序 178 13.1 IrDA微端口驱动程序简述 178 13.2 IrDA体系结构 179 13.3 IrDA协议驱动程序 179 13.4 IrDA介质特征 179 13.4.1 通信连接速度 180 13.4.2 通信连接回转时间 180 13.4.3 接收器同步 181 13.5 IrLAP帧格式 182 13.5.1 帧格式简述 182 13.5.2 帧信息的使用 183 13.5.3 地址成员 183 13.6 IrDA微端口驱动程序包编码方案 183 13.6.1 SIR编码 184 13.6.2 MIR编码 184 13.6.3 FIR编码 184 13.7 发送和接收帧序列 185 13.8 即插即用 185 13.8.1 非即插即用外部串行连接SIR适配器 185 13.8.2 非即插即用内部SIR适配器或者象串口一样错误地呈现于外的内部SIR适配器 186 13.8.3 即插即用外部串行连接SIR适配器 186 13.8.4 即插即用内部SIR适配器 186 13.8.5 非即插即用总线连接FIR适配器 187 13.8.6 即插即用总线连接FIR适配器 187 第三部分NDIS中间层驱动程序和TDI驱动程序 189 第一章 NDIS中间层驱动程序 189 1.1中间层驱动程序的DriverEntry函数 191 1.1.1 注册NDIS中间层驱动程序 191 1.1.1.1注册中间层驱动程序的Miniport 192 1.1.1.2注册中间层驱动程序的协议 194 1.2 中间层驱动程序的动态绑定 196 1.2.1 打开中间层驱动程序下层的适配器 197 1.2.2 微端口初始化 198 1.2.3 中间层驱动程序查询和设置操作 199 1.2.4作为面向连接客户程序注册中间层驱动程序 201 1.3中间层驱动程序数据包管理 203 1.4 中间层驱动程序的限制 205 1.5 中间层驱动程序接收数据 206 1.5.1下边界面向无连接的中间层驱动程序接收数据 206 1.5.2下边界面向连接的中间层驱动程序接收数据 208 1.5.3向高层驱动程序指示接收数据包 209 1.6通过中间层驱动程序传输数据包 210 1.6.1传递介质相关信息 211 1.7处理中间层驱动程序的PnP事件和PM事件 212 1.7.1处理OID_PNP_XXX查询和设置 213 1.7.2中间层驱动程序ProtocolPnPEvent处理程序的实现 214 1.7.3处理规定的电源请求 214 1.8中间层驱动程序复位操作 215 1.9中间层驱动程序拆除绑定操作 216 1.10中间层驱动程序状态指示 217 第二章 NDIS协议驱动程序 219 2.1 协议DriverEntry及其初始化 220 2.1.1注册NDIS协议驱动程序 220 2.1.2 打开中间层驱动程序低层的适配器 223 2.1.3 协议驱动程序查询和设置操作 224 2.1.4作为呼叫管理器或者面向连接客户程序进行注册 225 2.2 协议驱动程序数据包管理 229 2.3 协议驱动程序的动态绑定 230 2.4 协议驱动程序接收数据 231 2.4.1下边界面向无连接的中间层驱动程序接收数据 231 2.4.1.1 在中间层驱动程序中实现ProtocolReceivePacket处理程序 232 2.4.1.2 在协议驱动程序中实现ProtocolReceive处理程序 233 2.4.1.3 从面向无连接协议驱动程序中访问OOB数据信息 234 2.4.2 面向连接协议驱动程序接收数据 234 2.4.2.1 ProtocolCoReceivePacket处理程序实现 235 2.4.2.2 从面向连接协议驱动程序中访问OOB数据信息 235 2.5 发送协议驱动程序创建的数据包 236 2.5.1 从面向无连接协议驱动程序发送数据包 236 2.5.1.1面向无连接协议驱动程序传递介质相关信息 237 2.5.2 面向连接协议驱动程序发送数据包 238 2.5.2.1面向连接协议驱动程序传递介质相关信息 238 2.6处理协议驱动程序的PnP事件和PM事件 239 2.7协议驱动程序复位操作 240 2.8协议驱动程序拆除绑定操作 241 2.9协议驱动程序状态指示 241 第三章 TDI传输器及其客户 243 3.1 传输驱动程序接口(TDI) 243 3.2 TDI设备对象 245 3.3 TDI文件对象 246 3.3.1代表传输地址的文件对象 247 3.3.2代表连接端点的文件对象 247 3.3.3代表控制信道的文件对象 248 3.4 TDI传输驱动程序例程 248 3.5 TDI核心模式客户交互 249 3.6 TDI请求及事件 250 第四章 TDI例程、宏和回调 251 4.1 TDI驱动程序初始化 251 4.1.1 注册TDI传输驱动程序 252 4.1.2 卸载和注销TDI传输驱动程序 252 4.2 TDI驱动程序调度例程 253 4.3 TDI IOCTL请求 254 4.4 TDI 客户回调 255 4.5 TDI 库函数和宏 257 第五章 TDI操作 260 5.1打开传输地址 260 5.2打开连接端点 261 5.3打包并提交IOCTL请求 262 5.4设置和查询信息 262 5.5建立端端连接 263 5.6发送和接收面向连接数据 264 5.7发送和接收无连接数据 266 5.8面向连接和面向无连接传输 267 5.9请求传输相关操作 268 5.10接收错误通知 268 5.11断开端端连接 268 5.12关闭连接端点 269 5.13关闭传输地址和控制信道 269 第六章Windows Sockets的传输助手DLLS 271 6.1 Windows Sockets Helper DLL结构 271 6.2用WSH DLL通信 271 6.3配置WSH DLL 272 6.4WSH DLL同步 272 6.5用WSH DLL支持连接和断开数据 273 6.5.1客户应用程序和连接数据 273 6.5.2服务器应用程序和连接数据 273 6.5.3断连(disconnect)数据 274 6.6WSH DLL函数总览 274 第四部分面向连接的网络驱动程序接口标准(NDIS) 276 第一章 面向连接的网络驱动程序接口标准(NDIS) 276 1.1面向连接环境 276 1.2使用AFs,VCs,SAP和Parties 277 1.2.1地址族 277 1.2.2虚连接 277 1.2.3 SAPs 278 1.2.4 Parties 278 1.3服务质量 278 1.4MCM和呼叫管理器有何不同 278 1.4.1初始化的不同 279 1.4.2对NdisXxx函数调用的不同 279 1.4.3虚连接的不同 279 1.5面向连接的时间特性 280 1.6面向连接操作 280 1.6.1面向连接操作总结 280 1.6.1.1由客户执行的面向连接操作 280 1.6.1.2由呼叫管理器执行的面向连接操作 281 1.6.1.3由微端口执行的面向连接操作 282 1.6.2地址族和SAPs上的操作 283 1.6.2.1注册并打开一个地址族 283 1.6.2.2注册一个SAP 284 1.6.2.3注销SAP 285 1.6.2.4关闭一个地址族 285 1.6.3 VCs上的操作 286 1.6.3.1创建VC 286 1.6.3.2激活VC 287 1.6.3.3使VC去活 288 1.6.3.4删除VC 289 1.6.4创建呼叫 289 1.6.4.1进行呼叫 290 1.6.4.2指示内入呼叫 291 1.6.5改变活动VC的QoS 292 1.6.5.1客户发起的改变呼叫参数请求。 292 1.6.5.2改变呼叫参数的内入请求 293 1.6.6增加和删除Parties 293 1.6.6.1把一个Party加入到多点呼叫 293 1.6.6.2从多点呼叫中删除Party 294 1.6.6.3从多点呼叫中删除一个Party的内入请求 295 1.6.7发送并接收数据 295 1.6.7.1在VC上发送包 295 1.6.7.2接收VC上的包 296 1.6.8断开呼叫 297 1.6.8.1客户发起的关闭呼叫请求 297 1.6.8.2关闭呼叫的内入请求 298 1.6.9获取并设置信息 298 1.6.9.1查询或设置信息 298 1.6.9.2指示微端口状态 299 1.6.10重置 299 第五部分 安装网络组件 301 第一章 安装网络组件 301 1.1用于安装网络组件的组件和文件 301 1.2创建网络INF文件 302 1.2.1网络INFS文件名的约定 302 1.2.2网络INF文件的版本节 302 1.2.3网络INF文件的模型节 303 1.2.4 INF文件的DDInstall节 304 1.2.5删除节 306 1.2.6 ControlFlags节 306 1.2.7网络INF文件的add-registry-sections 306 1.2.7.1设置静态参数 307 1.2.7.2 为WAN适配器说明WAN端点 307 1.2.7.3为ISDN适配器说明ISDN键和值 307 1.2.7.4安装多协议WAN NICs 309 1.2.7.5请求安装另一个网络组件 310 1.2.7.6说明NetCLient组件的名字和提供者 310 1.2.7.7增加HelpText值 311 1.2.7.8为通知对象增加注册值 311 1.2.7.9向Ndi键增加服务相关值 311 1.2.7.10说明绑定接口 312 1.2.7.11为高级属性页说明配置参数 314 1.2.7.12为网络适配器说明定制属性页 315 1.2.7.13说明过滤器服务值 315 1.2.7.14说明束成员关系 317 1.2.7.15 Window 2000中不用的 Window 95/98 Ndi值和键 317 1.2.8 DDInstall.Service节 318 1.2.9 NetworkProrider和PrintProvider节 318 1.2.9.1包含一个NetworkProvider节 319 1.2.9.2 包括一个PrintProvider节 319 1.2.10 Winsock节 320 1.2.11网络组件安装需求总结 322 1.2.11.1网络适配器的安装需求 322 1.2.11.2网络协议安装要求 323 1.2.11.3中间层网络驱动程序的安装需求 324 1.2.11.4网络过滤器驱动程序的安装需求 325 1.2.11.5网络客户的安装需求 326 1.2.11.6网络服务的安装请求 327 第二章 网络组件的通知对象 328 2.1关于通知对象 328 2.1.1 通知对象图 329 2.1.2通知类型 329 2.1.3网络组件的安装 329 2.1.4删除网络组件 330 2.1.5升级网络组件 330 2.1.6显示并改变属性 330 2.1.7网络配置 331 2.2创建通知对象 331 2.2.1装载通知对象DLL和类对象 331 2.2.2定义通知对象 332 2.2.3创建并初始化通知对象实例 332 2.2.4安装,升级和删除组件 333 2.2.5为组件生成属性页 333 2.2.6设置环境来显示属性 334 2.2.7评价网络配置的变化 334 2.2.8将组件变化加入注册表 335 2.2.9配置组件驱动程序 335
第1章 驱动程序开发环境
第2章 测试驱动程序
第一部分 一般内核模式
第1章Windows 2000和WDM驱动程序
第2章 分层的I/O、IRP和I/O对象
第3章 系统定义的对象和对驱动程序的支持
第4章 驱动程序基本结构
第5章DriverEntry 和 Reinitialize 例程
第6章Dispatch例程
第7章StartIo和队列管理例程
第8章 中断服务例程
第9章 DpcForIsr例程和CustomDpc例程
第10章SynchCritSection例程
第11章AdapterControl和ControllerControl例程
第12章Cancel例程
第13章IoCompletion例程
第14章IoTimer和CustomTimerDpc例程
第15章Unload例程
第16章 常见的驱动程序设计问题

第1部分 图形驱动程序
第2部分 显示器及视频微端口驱动程序
第3部分 打印机驱动程序及假脱机打印部件

第五卷 网络驱动程序设计指南 1
第一部分 网络驱动程序 2
第一章 网络驱动程序设计指南的向导 3
第二章 内核模式驱动程序的网络结构 6
2.1 Windows 2000 网络结构和OSI模型 6
2.2 NDIS驱动程序 7
2.2.1 NDIS微端口驱动程序 7
2.2.2 NDIS中间层驱动程序 8
2.2.3 NDIS协议驱动程序 9
2.3 TDI驱动程序 9
2.4 网络驱动程序环境 9
2.4.1 无连接环境的网络驱动程序 10
2.4.2 面向连接环境下的网络驱动程序 10
2.4.3 WAN网络驱动程序的环境 11
第三章 网络驱动程序编程要点 13
3.1 可移植性 13
3.2 多处理器支持 13
3.3 IRQL 14
3.4 同步和指示 14
3.5 包结构 16
3.6 使用共享内存 17
3.7 异步I/O和完成函数 17
第二部分 微端口NIC驱动程序 19
第一章 NDIS NIC微端口驱动程序 20
1.1 NIC微端口驱动程序类型 20
1.2 网络接口卡支持 20
1.3 微端口驱动程序代码的重要特征 22
1.3.1 MiniportXxx函数 22
1.3.2 与NDIS库链接 22
1.3.3 微端口适配器环境 22
1.3.4 VC环境 23
1.3.5 网络OID 23
1.4 驱动程序例子 24
第二章 NIC微端口操作和函数概要 25
2.1 NIC微端口操作 25
2.1.1 初始化NDIS库和注册微端口驱动程序 25
2.1.2 注册网络接口卡 25
2.1.3 对查询和设置微端口信息作出响应 26
2.1.4 产生,激活,去活,和删除虚连接 26
2.1.5 发送数据 27
2.1.5.1 多包发送 27
2.1.5.2 单包发送 28
2.1.6 指示和传递接收的数据 28
2.1.6.1 多包接收 29
2.1.6.2 单包接收 29
2.1.7 指示状态 30
2.1.8 复位网络接口卡 30
2.1.9 终止一个微端口NIC驱动程序 30
2.2 微端口上层函数 30
2.2.1 无连接端口的上层函数 31
2.2.2 面向连接端口的上层函数 32
2.3 由微端口调用的NDIS函数 33
2.3.1 NDIS提供的初始化和注册函数 34
2.3.2 NDIS提供的硬件设置函数 35
2.3.3 NDIS提供的I/O端口函数 36
2.3.4 NDIS数据的与DMA相关的函数 37
2.3.5 NDIS提供的中断处理函数 38
2.3.6 NDIS提供的同步函数 38
2.3.7 NDIS提供的状态函数 39
2.3.8 NDIS为无连接端口提供的发送和接收函数 39
2.3.9 NDIS为面向连接端口提供的发送和接收函数 40
2.3.10 NDIS提供的带外数据宏 41
2.3.11 NDIS提供的包和缓存处理函数 41
2.3.12 NDIS提供的支持函数 43
2.3.13 NDIS提供的媒体相关宏 46
第三章 NIC微端口驱动程序入口点和初始化 47
3.1 NDIS微端口驱动程序入口函数 47
3.1.1 初始化包裹 47
3.1.2 注册微端口 48
3.1.2.1 指定NDIS版本号 48
3.1.2.2 注册MiniportXxx函数 48
3.1.2.3 为中断支持的注册处理程序 50
3.1.2.4 为无连接端口选择一个发送函数 51
3.1.2.5 为无连接端口选择接收函数 51
3.1.2.6 注册一个分配完成处理程序 52
3.1.2.7 注册一个挂起检测(CheckForHang) 处理程序 52
3.2 NDIS微端口初始化 53
3.2.1 注册一个NIC 53
3.2.1.1 分配一个适配器指定的环境区域 54
3.2.1.2 读取配置信息 54
3.2.1.3 注册NIC 54
3.2.2 声明资源 55
3.2.2.1 分配内存 55
3.2.2.2 注册端口 56
3.2.2.3 总线管理器DMA设备初始化 56
3.2.2.4可编程I/O设备初始化 57
3.2.2.5 内存映射设备初始化 58
3.2.2.6 从属DMA设备初始化 58
3.2.3 注册一个中断 59
3.2.4 注册一个关闭函数 59
3.2.5 初始化轮询时钟 59
3.2.6 在初始化当中的同步 60
3.2.7 在初始化时处理错误 60
3.3 查询微端口信息 61
3.4 减少微端口初始化时间 61
第四章 数据传输 64
4.1 中断处理 64
4.2 DPC处理程序 66
4.3 带外(OOB)数据包 66
4.3.1 等待发送的OOB数据 67
4.3.2 接收的OOB数据 68
4.4 发送包 69
4.4.1 无连接端口的多包传送 70
4.4.1.1 串行微端口的多包传送 70
4.4.1.2 非串行微端口的多包传送 71
4.4.2 无连接端口的单包发送 71
4.4.3 面向连接端口的多包发送 72
4.4.4 发送数据前的内存同步 73
4.4.5 发送步骤 74
4.4.5.1 在总线控制器DMA NIC上发送包 74
4.4.5.2 在PIO设备上发送单包 76
4.4.5.3 使用板上内存发送包 77
4.5 非串行微端口 78
4.5.1 非串行微端口的NDIS要求 78
4.5.2 非串行微端口的驱动程序内部要求 78
4.6 接收数据 79
4.6.1 无连接和面向连接端口的多包接收 79
4.6.2 无连接端口的单包接收 82
4.6.3 接收数据的高速缓存(Cache)因素 83
4.6.4 接收数据的步骤 83
4.6.4.1 接收期间的包管理 84
4.6.4.2 在总线控制器DMA NIC上接收数据 84
4.6.4.3 在PIO NIC上接收数据 85
4.6.4.4 在内存映射设备上接收数据 85
4.7 保持统计量 85
4.8 802.1P 包的优先权 86
4.8.1 查询802.1p优先权支持 87
4.8.2 802.1优先权的包支持 87
4.8.3 为发送和接收指定包的大小 88
4.8.4 默认情况下禁止802.1p的优先权支持 88
第五章 获取和设置WMI的微端口信息及NDIS支持 89
5.1 NDIS管理信息和OID 89
5.2 查询微端口信息 89
5.2.1 无连接端口的查询 90
5.2.2 面向连接端口的查询 91
5.3 设置微端口信息 92
5.3.1 为无连接端口设置信息 92
5.3.2 为面向连接端口设置信息 92
5.3.3 设置微端口信息的时机 93
5.4 报告硬件状态 93
5.5 WMI的NDIS支持 94
5.5.1 用WMI注册与注销NDIS微端口 94
5.5.2 OID和微端口状态的GUID映射 94
5.5.3 支持命名VC 94
5.5.4 NDIS支持的WMI操作 95
5.5.5 向WMI注册标准微端口OID 95
5.5.6 向WMI注册的标准微端口状态 97
5.5.7 定制OID与状态指示 98
5.5.7.1 填充NDIS_GUID 98
5.5.7.2 包括MOF文件 99
第六章 微端口的电源管理 100
6.1 电源管理的需求与可选的OID 100
6.2 网络设备电源状态 101
6.3 网络唤醒事件 102
6.3.1 连接改变唤醒 102
6.3.2 网络唤醒帧 102
6.3.3 魔包唤醒 103
6.3.4 启用唤醒事件 103
6.3.5 处理唤醒事件 103
6.4 处理OID_PNP_QUERY_POWER 104
6.5 处理OID_PNP_SET_POWER 104
6.5.1 转入睡眠状态 104
6.5.2 转入工作状态 104
6.6 早期微端口的电源管理 105
第七章 重置,停止和关闭 106
7.1 硬件重置(Reset) 106
7.2 停止(Halt)处理程序 106
7.3 关闭(Shutdown)处理程序 107
第八章 广域网微端口 NIC驱动程序 109
8.1 RAS 体系结构 109
8.2 NDISWAN 概述 111
8.3 网络卡、绑定、和连接 113
8.4 广域网微端口驱动程序的实现 114
8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别 115
8.4.2 CoNDIS广域网微端口驱动程序的附加特性 115
8.4.3 广域网微端口驱动程序提供的服务 116
8.4.3.1 注册为广域网微端口驱动程序 116
8.4.3.2 查询广域网微端口驱动程序的信息 117
8.4.3.3 设置广域网小段口驱动程序的状态 122
8.4.3.4 在广域网微端口驱动程序上发送数据 123
8.4.4 广域网微端口驱动程序做出的指示 125
8.4.4.1 指示从标准广域网微端口驱动程序接收数据 125
8.5 广域网包的组帧 128
8.5.1 异步帧结构 128
8.5.2 X.25帧结构 128
8.5.3 ISDN和Switched-56K帧结构 128
8.6 标准NDIS之上的电话服务扩展 128
8.6.1 NDISTAPI概述 129
8.6.2 线路设备、地址和呼叫 129
8.6.3 设置和查询请求 130
8.6.4 保持状态信息 130
8.6.5 建立句柄 131
8.6.6 TAPI注册 131
8.6.7 TAPI初始化 132
8.6.8 打开线路 133
8.6.9 接受内入呼叫 133
8.6.10 产生TAPI呼叫 134
8.6.11 主动事件处理 135
8.6.12 Line-Up指示 135
8.6.13 关闭呼叫线路 137
8.6.14 NDISTAPI接口 139
8.7 使用支持电话服务的CoNDIS扩展 143
8.7.1 NDPROXY概述 143
8.7.2 CoNDIS TAPI注册 144
8.7.3 CoNDIS TAPI初始化 144
8.7.4 建立外出呼叫 146
8.7.5 接受内入呼叫 147
8.7.6 CoNDIS TAPI关闭 150
8.7.7 语音流对呼叫管理器的要求 151
8.7.7.1 响应OID_CO_TAPI_LINE_CAPS查询 151
8.7.7.2 为外出呼叫指定参数 151
8.7.7.3 为内入呼叫指定参数 152
8.7.8 在面向连接NDIS之上支持电话服务的非广域网专用的扩展 152
第九章 任务卸载 153
9.1 查询任务卸载能力 153
9.1.1 报告NIC的校验和性能 154
9.1.2 报告NIC的IP安全性性能 155
9.1.3 报告NIC的TCP包分段性能 157
9.2 启用任务卸载能力 157
9.3 停用任务卸载能力 158
9.4 访问Per-Packet信息 158
9.5 卸载TCP/IP校验和任务 159
9.6 卸载IP安全任务 161
9.7 卸载大TCP包分段 164
9.8 卸载组合 165
9.9 使用注册表键值激活和禁止任务卸载 166
第十章 负载平衡和失效替换 166
10.1 关于LBFO 167
10.2 指定对LBFO的支持 168
10.3 在微端口驱动程序上实现LBFO 168
10.3.1 初始化微端口束 168
10.3.2 平衡微端口驱动程序的工作量 169
10.3.3 在主微端口失效后提升一个次微端口 169
第十一章 快速转发路径 169
11.1 关于FFP 170
11.1.1 使用一个NIC的FFP 170
11.1.2 使用多个NIC的FFP 170
11.1.3 IP转发 171
11.1.4 FFP和包过滤 171
11.2 NIDS中的FFP支持 172
11.3 为IP转发在微端口实现FFP 172
第十二章 带WDM低级接口的微端口驱动程序 174
12.1 WDM低层微端口 174
12.2 注册WDM低层的微端口函数 174
12.3 初始化WDM低层微端口 175
12.4 发布命令与远程设备通信 176
12.4.1 在总线上发送包 176
12.4.2 在总线上接收包 176
12.5 WDM低层的实现要点 176
12.6 WDM低层的编译标志 177
第十三章 IrDA微端口NIC驱动程序 178
13.1 IrDA微端口驱动程序简述 178
13.2 IrDA体系结构 179
13.3 IrDA协议驱动程序 179
13.4 IrDA介质特征 179
13.4.1 通信连接速度 180
13.4.2 通信连接回转时间 180
13.4.3 接收器同步 181
13.5 IrLAP帧格式 182
13.5.1 帧格式简述 182
13.5.2 帧信息的使用 183
13.5.3 地址成员 183
13.6 IrDA微端口驱动程序包编码方案 183
13.6.1 SIR编码 184
13.6.2 MIR编码 184
13.6.3 FIR编码 184
13.7 发送和接收帧序列 185
13.8 即插即用 185
13.8.1 非即插即用外部串行连接SIR适配器 185
13.8.2 非即插即用内部SIR适配器或者象串口一样错误地呈现于外的内部SIR适配器 186
13.8.3 即插即用外部串行连接SIR适配器 186
13.8.4 即插即用内部SIR适配器 186
13.8.5 非即插即用总线连接FIR适配器 187
13.8.6 即插即用总线连接FIR适配器 187
第三部分NDIS中间层驱动程序和TDI驱动程序 189
第一章 NDIS中间层驱动程序 189
1.1中间层驱动程序的DriverEntry函数 191
1.1.1 注册NDIS中间层驱动程序 191
1.1.1.1注册中间层驱动程序的Miniport 192
1.1.1.2注册中间层驱动程序的协议 194
1.2 中间层驱动程序的动态绑定 196
1.2.1 打开中间层驱动程序下层的适配器 197
1.2.2 微端口初始化 198
1.2.3 中间层驱动程序查询和设置操作 199
1.2.4作为面向连接客户程序注册中间层驱动程序 201
1.3中间层驱动程序数据包管理 203
1.4 中间层驱动程序的限制 205
1.5 中间层驱动程序接收数据 206
1.5.1下边界面向无连接的中间层驱动程序接收数据 206
1.5.2下边界面向连接的中间层驱动程序接收数据 208
1.5.3向高层驱动程序指示接收数据包 209
1.6通过中间层驱动程序传输数据包 210
1.6.1传递介质相关信息 211
1.7处理中间层驱动程序的PnP事件和PM事件 212
1.7.1处理OID_PNP_XXX查询和设置 213
1.7.2中间层驱动程序ProtocolPnPEvent处理程序的实现 214
1.7.3处理规定的电源请求 214
1.8中间层驱动程序复位操作 215
1.9中间层驱动程序拆除绑定操作 216
1.10中间层驱动程序状态指示 217
第二章 NDIS协议驱动程序 219
2.1 协议DriverEntry及其初始化 220
2.1.1注册NDIS协议驱动程序 220
2.1.2 打开中间层驱动程序低层的适配器 223
2.1.3 协议驱动程序查询和设置操作 224
2.1.4作为呼叫管理器或者面向连接客户程序进行注册 225
2.2 协议驱动程序数据包管理 229
2.3 协议驱动程序的动态绑定 230
2.4 协议驱动程序接收数据 231
2.4.1下边界面向无连接的中间层驱动程序接收数据 231
2.4.1.1 在中间层驱动程序中实现ProtocolReceivePacket处理程序 232
2.4.1.2 在协议驱动程序中实现ProtocolReceive处理程序 233
2.4.1.3 从面向无连接协议驱动程序中访问OOB数据信息 234
2.4.2 面向连接协议驱动程序接收数据 234
2.4.2.1 ProtocolCoReceivePacket处理程序实现 235
2.4.2.2 从面向连接协议驱动程序中访问OOB数据信息 235
2.5 发送协议驱动程序创建的数据包 236
2.5.1 从面向无连接协议驱动程序发送数据包 236
2.5.1.1面向无连接协议驱动程序传递介质相关信息 237
2.5.2 面向连接协议驱动程序发送数据包 238
2.5.2.1面向连接协议驱动程序传递介质相关信息 238
2.6处理协议驱动程序的PnP事件和PM事件 239
2.7协议驱动程序复位操作 240
2.8协议驱动程序拆除绑定操作 241
2.9协议驱动程序状态指示 241
第三章 TDI传输器及其客户 243
3.1 传输驱动程序接口(TDI) 243
3.2 TDI设备对象 245
3.3 TDI文件对象 246
3.3.1代表传输地址的文件对象 247
3.3.2代表连接端点的文件对象 247
3.3.3代表控制信道的文件对象 248
3.4 TDI传输驱动程序例程 248
3.5 TDI核心模式客户交互 249
3.6 TDI请求及事件 250
第四章 TDI例程、宏和回调 251
4.1 TDI驱动程序初始化 251
4.1.1 注册TDI传输驱动程序 252
4.1.2 卸载和注销TDI传输驱动程序 252
4.2 TDI驱动程序调度例程 253
4.3 TDI IOCTL请求 254
4.4 TDI 客户回调 255
4.5 TDI 库函数和宏 257
第五章 TDI操作 260
5.1打开传输地址 260
5.2打开连接端点 261
5.3打包并提交IOCTL请求 262
5.4设置和查询信息 262
5.5建立端端连接 263
5.6发送和接收面向连接数据 264
5.7发送和接收无连接数据 266
5.8面向连接和面向无连接传输 267
5.9请求传输相关操作 268
5.10接收错误通知 268
5.11断开端端连接 268
5.12关闭连接端点 269
5.13关闭传输地址和控制信道 269
第六章Windows Sockets的传输助手DLLS 271
6.1 Windows Sockets Helper DLL结构 271
6.2用WSH DLL通信 271
6.3配置WSH DLL 272
6.4WSH DLL同步 272
6.5用WSH DLL支持连接和断开数据 273
6.5.1客户应用程序和连接数据 273
6.5.2服务器应用程序和连接数据 273
6.5.3断连(disconnect)数据 274
6.6WSH DLL函数总览 274
第四部分面向连接的网络驱动程序接口标准(NDIS) 276
第一章 面向连接的网络驱动程序接口标准(NDIS) 276
1.1面向连接环境 276
1.2使用AFs,VCs,SAP和Parties 277
1.2.1地址族 277
1.2.2虚连接 277
1.2.3 SAPs 278
1.2.4 Parties 278
1.3服务质量 278
1.4MCM和呼叫管理器有何不同 278
1.4.1初始化的不同 279
1.4.2对NdisXxx函数调用的不同 279
1.4.3虚连接的不同 279
1.5面向连接的时间特性 280
1.6面向连接操作 280
1.6.1面向连接操作总结 280
1.6.1.1由客户执行的面向连接操作 280
1.6.1.2由呼叫管理器执行的面向连接操作 281
1.6.1.3由微端口执行的面向连接操作 282
1.6.2地址族和SAPs上的操作 283
1.6.2.1注册并打开一个地址族 283
1.6.2.2注册一个SAP 284
1.6.2.3注销SAP 285
1.6.2.4关闭一个地址族 285
1.6.3 VCs上的操作 286
1.6.3.1创建VC 286
1.6.3.2激活VC 287
1.6.3.3使VC去活 288
1.6.3.4删除VC 289
1.6.4创建呼叫 289
1.6.4.1进行呼叫 290
1.6.4.2指示内入呼叫 291
1.6.5改变活动VC的QoS 292
1.6.5.1客户发起的改变呼叫参数请求。 292
1.6.5.2改变呼叫参数的内入请求 293
1.6.6增加和删除Parties 293
1.6.6.1把一个Party加入到多点呼叫 293
1.6.6.2从多点呼叫中删除Party 294
1.6.6.3从多点呼叫中删除一个Party的内入请求 295
1.6.7发送并接收数据 295
1.6.7.1在VC上发送包 295
1.6.7.2接收VC上的包 296
1.6.8断开呼叫 297
1.6.8.1客户发起的关闭呼叫请求 297
1.6.8.2关闭呼叫的内入请求 298
1.6.9获取并设置信息 298
1.6.9.1查询或设置信息 298
1.6.9.2指示微端口状态 299
1.6.10重置 299
第五部分 安装网络组件 301
第一章 安装网络组件 301
1.1用于安装网络组件的组件和文件 301
1.2创建网络INF文件 302
1.2.1网络INFS文件名的约定 302
1.2.2网络INF文件的版本节 302
1.2.3网络INF文件的模型节 303
1.2.4 INF文件的DDInstall节 304
1.2.5删除节 306
1.2.6 ControlFlags节 306
1.2.7网络INF文件的add-registry-sections 306
1.2.7.1设置静态参数 307
1.2.7.2 为WAN适配器说明WAN端点 307
1.2.7.3为ISDN适配器说明ISDN键和值 307
1.2.7.4安装多协议WAN NICs 309
1.2.7.5请求安装另一个网络组件 310
1.2.7.6说明NetCLient组件的名字和提供者 310
1.2.7.7增加HelpText值 311
1.2.7.8为通知对象增加注册值 311
1.2.7.9向Ndi键增加服务相关值 311
1.2.7.10说明绑定接口 312
1.2.7.11为高级属性页说明配置参数 314
1.2.7.12为网络适配器说明定制属性页 315
1.2.7.13说明过滤器服务值 315
1.2.7.14说明束成员关系 317
1.2.7.15 Window 2000中不用的 Window 95/98 Ndi值和键 317
1.2.8 DDInstall.Service节 318
1.2.9 NetworkProrider和PrintProvider节 318
1.2.9.1包含一个NetworkProvider节 319
1.2.9.2 包括一个PrintProvider节 319
1.2.10 Winsock节 320
1.2.11网络组件安装需求总结 322
1.2.11.1网络适配器的安装需求 322
1.2.11.2网络协议安装要求 323
1.2.11.3中间层网络驱动程序的安装需求 324
1.2.11.4网络过滤器驱动程序的安装需求 325
1.2.11.5网络客户的安装需求 326
1.2.11.6网络服务的安装请求 327
第二章 网络组件的通知对象 328
2.1关于通知对象 328
2.1.1 通知对象图 329
2.1.2通知类型 329
2.1.3网络组件的安装 329
2.1.4删除网络组件 330
2.1.5升级网络组件 330
2.1.6显示并改变属性 330
2.1.7网络配置 331
2.2创建通知对象 331
2.2.1装载通知对象DLL和类对象 331
2.2.2定义通知对象 332
2.2.3创建并初始化通知对象实例 332
2.2.4安装,升级和删除组件 333
2.2.5为组件生成属性页 333
2.2.6设置环境来显示属性 334
2.2.7评价网络配置的变化 334
2.2.8将组件变化加入注册表 335
2.2.9配置组件驱动程序 335

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧