如何用命名对象来共享串口句柄

绿色盒子 2019-03-07 11:12:16
两个独立的进程,如何使用命名对象来共享串口句柄
...全文
185 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色盒子 2019-03-18
  • 打赏
  • 举报
回复
感谢回复,已经成功了
yshuise 2019-03-09
  • 打赏
  • 举报
回复
只有使用进程通信,全局变量不行。而线程是可以。你是进程不行
幻夢之葉 2019-03-09
  • 打赏
  • 举报
回复
搜索 进程间通信?
老葱1# 2019-03-08
  • 打赏
  • 举报
回复
这绝对是一个标准的神操作
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,使用FllAddFoxCode()向智能感应库添加所有的函数原型(需要VFP7以上),此库存所有函数使用VFP推荐的命名规则,一般可以根据函数名和知能感应的提示参数来推测参数及返回值。 开发环境可以使用FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由使用、散发此函数库及此帮助,包括应用于你的商业软件中。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meizvfp.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial        读取指定硬盘的序列号 GetCpuId           读取CPU的序列号 GetMAC            读取网卡的MAC地址 GetVolumeNumber       读取指写磁盘的卷标 IsDiskInDrive        检查指定磁盘是否就绪 GetPort           读取系统的串口、并口 ComOpen           打开串口 ComWrite           向串口输出信息 ComRead            从串口读取信息 ComClose           关闭串口 GetGUID            获取全球唯一ID AEthernet          枚举网卡的所有信息 加密解密函数: MD5File           计算一个文件的MD5效验和 MD5String          计算一个字符串的MD5效验和 CRC32File          计算一个文件的CRC32效验和 CRC32String         计算一个字符串的CRC32效验和 des             采用DES算法加密或解密一个字符串,长度为8位 des16            采用DES算法加密或解密一个字符串,长度为16位 des24            采用DES算法加密或解密一个字符串,长度为24位 EnDeString          双向加密解密字符串的函数 Encrypt           双向加密解密字符串 RSACalc           RSA计算函数 RSAGen            生成随机RSA密钥函数 RSACmp            比较两个十六进制值是否相等 URLEncode          URL编码 URLDecode          URL解码 QPEncode           Quoted-Printable QP编码 QPDecode           Quoted-Printable QP解码 压缩解压函数: Zip              压缩文件 UnZip             解压文件 UnZipFile           解压单个文件           ZipInfo            测试一个文件是否在压缩文件中存在 ZipFileToStr         将压缩文件中的文件解压到变量 ZipAFile           将zip文件中的文件信息生成的数组 CompressString        压缩一个字符串 DeCompressString       解压字符串 数据库: CursorToStr         将Cursor生成变量 ChangesToStr         将Cursor的变动情况生成变量         StrToCursor         将变量还原为Cursor AppendFromStr        将变量中的表追加到指定表中 ACursorList         将变量中的表信息生成数组 ACursorFields        将变量中的指定表的字段信息生成数组 CRC32Record         计算一条记录的CRC32值 SQLCallBack         SQL回调函数载入 SQLCallReset         SQL回调函数卸载 PackMDB           压缩修复Access数据库 ReadMemo           读取vfp中大于16M的备注字段 网络相关函数: DownFile           从internet上下载文件到本地 DownFileX           线程方式从网上下载一个文件 HttpGetFileSize       读取internet上的文件大小 HttpPostData         向http服务器Post数据 HttpOpen           打开一个Internet句 HttpAddParms         为Http句添加一个参数 HttpSend           发送Http句中的Post数据 HttpClose          关闭Http句 FtpDownFile          从FTP服务器下载文件 FtpUploadFile        向FTP服务器上传文件 FtpConnect          连接FTP服务器 FtpDisconnect        断开FTP服务器连接 FtpAFile          枚举Ftp中的所有文件 FtpCreateDir        在FTP服务器上创建一个文件夹         FtpSetCurrentDir      设置当前的文件夹 FtpDeleteDir        删除FTP服务器上的文件夹 FtpDelFile         删除FTP服务器上的文件 FtpRename          重命名FTP服务器上的文件 FtpFOpen          打开FTP服务器上的文件 FtpFClose         关闭FTP服务器上的文件 FtpFRead          读取FTP服务器上的文件 FtpFWrite          写入FTP服务器上的文件 FtpSetPasv          设置FTP被动工作模式 ShareAdd           在局域网共享文件夹 ShareDel           删除共享文件夹的共享 ShareMapDrive         映射网络驱动器 ShareDelDrive         删除映射的网络驱动器 GetLocalIP          读取本机IP DomainToIP          转换域名为IP地址 DialUp            建立拨号连接 DialDown           断开拨号连接 GetSqlServer         列出所有网络上的SQL Server IpToMAC           根据IP得到MAC地址 邮件函数: SmtpCreate          创建一个SMTP发送邮件的句 SmtpNewMail         在内存中创建邮件内容,等待发送 SmtpSend           发送邮件 SmtpGetLastError       检测邮件最后的错误 Pop3Create          创建一个POP3接收邮件的句 Pop3Close          关闭句 Pop3AMailList        枚举POP3服务器上的邮件数量 Pop3DeleteMail        删除POP3邮件服务器上的邮件 Pop3GetMail         下载一封邮件 Pop3GetMailHeader      下载邮件头 Pop3DeleteMail        删除服务器上的邮件 打印相关函数: PaperAdd           添加自定义纸张并返回ID PaperDel           删除自定义纸张 PaperInfo          读取所有纸张信息或指定纸张信息 APaper            枚举所有纸张生成数组 GetDefaultPrinter      取得默认打印机的名称 SetDefaultPrinter      设置默认打印机 PrinterOpen         启用一个打印任务 PrinterOutPage        打印页对像 PrinterClose         结束打印 常用转换函数: ToPY             生成指写字符串的拼音首字 NToC             数字转人民币大写 hzbh             计算指定字符串的汉字笔划 StringToDword        将高底位存放的字符串,转换为字符型 DwordToString        将整型数值转换为字符型数值 NumConver          进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum           将指定进制的字符串转换为数值型 GB2312ToBIG5         简体转繁体 BIG5ToGB2312         繁体转简体 FormToBmp          将表单保存为BMP图片 RectToBmp           指定屏幕区域保存为bmp图片 StrReverse          指定屏幕区域保存为bmp图片 ImageConver         转换图片格式 FTrim            删除字符串中除指定字符以外的字符 Thumbnail          缩放图片 注册表读写函数: regRead           读取注册表中的设置 regWrite           向注册表中写入设置 regDelKey          删除注册表中的分支 regDelValue         删除注册表中的设置 ini文件读写函数: iniRead           从ini文件中读取设置 iniWrite           向ini文件中写入一个设置 iniSet            设置默认的数据段和ini文件 iniSetSection        设置默认的数据段 iniSetFileName        设置默认的ini文件 系统托盘 SysTrayAdd          向系统托盘添加一个图标 SysTrayEdit         修改系统托盘的图标 SysTrayDel          删除系统托盘中的图标 HotKeyAdd          向系统注册一个热键 HotKeyDel          删除向系统注册的热键 SysTrayShowMessage      显示托盘消息 文件操作 CopyFiles          复制文件 MoveFiles          移动文件 DeleteFiles         删除文件 CreateShortcut        创建快捷方式 GetIcon           释放exe或dll中的图标 其它: SetVFPEvents         设置MYFLL内部函数回调功能 SetDateTime         设置Windows系统时间 ChangEres          更改屏幕的分辨率 idleLoad           开始加载空闲检测 idleSeconds         读取系统空闲时间 idleUnload          卸载空闲检测 KillApp           终止指定进程 KillAllApp          终止所有进程,但排除指定标题的进程 KillProcessByName      根据程序文件名杀死一个进程 FindAllFile         查找指定文件夹下的所有文件 IsNum            检测函数是否是数字 CheckProcess         检测主程序是否重复运行 ProcLoad            载入一个VFP函数,取得函数地址 ProcUnload          卸载函数 MemRead           读取指定地址的内存 MemWrite           写入指写内存 PushError          系统错误处理压栈 PopError           系统错误处理出栈 Format            格式化输出字符串(类C语言) CreateLink          创建文件关联 DesktopHide         隐藏桌面 SystemKeySet         禁用系统键 RegisterFile         注册文件名解除文件注册 封装过的Win32 API函数: FindWindow          查找指定窗口的句 SendMessage         向指写窗口发送指定消息 PostMessage         将消息投递到指定句的消息队列 ShowWindow          显示指定窗口 ShowWindowAsync       显示指定窗口 SetWindowLong        设置窗口的扩展样式 SetLayeredWindowAttributes  设置窗口效果 SetForegroundWindow     激活指定窗口使这成为最前面的窗口 ShellExecute         调用系统关联,打开一个文件 ShellExecWait        调用一个程序,并等待执行结束 SuspendThread        暂停一个线程 ResumeThread         恢复一个线程 Beep             使电脑内喇叭发出beep声 ExitWindowsEx        退出Windows Sleep            程序挂起nMilliseconds毫秒 ExitProcess         终止当前进程 GetLastError         返回最后的错误号码 SetParent          设置窗口的父窗口 UpdateWindow         更新窗口
第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

目录 网络驱动程序设计指南 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

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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