目录 1
第1章 控制程序介绍 1
1.1 控制程序函数 1
1.1.1 文件系统和文件管理 2
1.1.2 存储管理 2
1.1.3 程序执行和控制 2
1.1.9 异常管理 3
1.1.8 出错管理 3
1.1.7 定时器 3
1.1.6 队列 3
1.1.5 管道 3
1.1.4 信号量 3
1.1.10 设备I/O 4
1.1.11 信息管理 4
1.1.12 多国语言支持和代码页管理 4
1.1.13 调试 4
第2章 文件系统 5
2.1 关于文件系统 5
2.1.1.1 FAT文件系统 6
2.1.1.2 可安装文件系统 6
2.1.1 文件系统的类型 6
2.1.1.3 高性能文件系统 7
2.1.1.4 局部和远程文件系统 8
2.1.2 识别DOS和OS/2文件目标 9
2.1.3 存储设备和文件系统 9
2.1.4 文件系统实用程序 11
2.1.5 OS/2引导管理程序 11
2.2 使用文件系统 11
2.2.1 联接和卸去文件系统 11
2.2.2 获得关于联接文件系统的信息 13
2.2.4 获得关于文件的信息 14
2.2.3 获得关于文件系统的信息 14
2.2.5 与文件系统通信 15
2.2.6 为系统关闭准备文件系统 16
2.2.7 写高速缓冲区 17
2.3 小结 19
第3章 文件名 20
3.1 文件命名约定 20
3.1.1 FAT文件系统中的文件名 21
3.1.2 高性能文件系统中的文件名 22
3.1.3 长文件名 23
3.2 文件名中的元字符 24
3.1.4 移动长名字的文件 24
3.2.1 使用元字符搜索文件 25
3.2.2 使用元字符编辑文件名 25
3.2.3 使用元字符传送文件名 26
3.3 用户输入文件名 26
3.4 设备名 27
第4章 文件管理 28
4.1 关于卷和驱动器 28
4.2.3 删除目录 29
4.2.2 确认和改变当前目录 29
4.2.1 建立子目录 29
4.2 关于目录 29
4.3 关于文件 30
4.3.1 文件属性 30
4.3.2 文件句柄 30
4.3.3 文件指针 31
4.3.4 复制文件 31
4.3.5 移动文件 31
4.3.6 删除文件 31
4.3.7 改变文件长度 31
4.3.11 设备 32
4.3.10 确定最大路径长度 32
4.3.9 搜索文件 32
4.3.8 封锁和释放文件区域 32
4.4 使用文件命令 33
4.4.1 建立文件 34
4.4.2 打开文件 35
4.4.3 读文件 37
4.4.4 写入文件 38
4.4.5 移动文件指针 39
4.4.6 关闭文件 40
4.4.7 建立复制文件或设备的句柄 41
4.4.8 确定和设置文件或设备句柄的状态 41
4.4.9 确定句柄类型 42
4.4.10 搜索文件 43
4.4.11 搜索文件路径 44
4.5 标准文件句柄 46
4.5.1 标准输入、输出和错误文件句柄 46
4.5.2 重定向标准文件句柄 47
4.6 小结 48
第5章 扩展属性 51
5.1 关于扩展属性 51
5.1.1 扩展属性数据类型约定 53
5.1.1.2 多值多类型数据类型 54
5.1.1.1 多值数据类型域 54
5.1.1.4 ASN.1数据类型 55
5.1.2 一个扩展属性包括在另一个中 55
5.1.1.3 多值单类型数据类型 55
5.1.3 扩展属性命名约定 56
5.1.4 标准扩展属性 56
5.1.4.1 .ASSOCTABLE标准扩展属性 57
5.1.4.2 .CODEPAGE标准扩展属性 60
5.1.4.3 .COMMENTS标准扩展属性 60
5.1.4.4 .HISTORY标准扩展属性 60
5.1.4.5 .ICON标准扩展属性 61
5.1.4.8 .SUBJECT标准扩展属性 62
5.1.4.9 .TYPE标准扩展属性 62
5.1.4.6 .KEYPHRASES标准扩展属性 62
5.1.4.7 .LONGNAME标准扩展属性 62
5.1.4.10 .VERSION扩展属性 64
5.1.5 管理扩展属性 64
5.1.5.1 控制访问扩展属性 64
5.1.5.2 扩展属性数据结构 65
5.1.5.3 保存扩展属性 66
5.1.5.4 保护扩展属性 67
5.2 小结 68
5.1.5.6 提供扩展属性 68
5.1.5.5 查找扩展属性 68
第6章 内存管理 69
6.1 关于内存管理 69
6.1.1 过程地址空间 69
6.1.2 内存体 70
6.1.3 内存页 71
6.1.4 内存超分配和交换 71
6.1.5 用户设置内存交换 72
6.1.6 内存分配与提交 72
6.1.8 内存保护 73
6.1.7 内存大小再定义及再分配 73
6.1.9 获取页域信息 74
6.1.10 侵犯保护 74
6.1.11 内存再分配和堆的利用 75
6.1.12 共享内存 75
6.2 使用内存管理 75
6.2.1 分配私有内存 76
6.2.2 提交与取消提交页域 76
6.2.3 建立访问保护 77
6.2.4 查询内存体信息 78
6.3.1 再分配内存 79
6.2.5 释放内存 79
6.3 使用再分配和堆 79
6.3.2 增加堆的大小 80
6.3.3 从堆中分配内存块 81
6.3.4 释放内存块 82
6.3.5 结束堆的使用 82
6.4 使用共享内存 83
6.4.1 使用有名共享内存 83
6.4.2 使用无名共享内存 84
6.5 小结 85
7.1 关于程序执行控制——线程、进程和话路 86
第7章 程序执行控制 86
7.1.1 线程 87
7.1.2 进程 88
7.1.2.1 创建进程 89
7.1.2.2 进程中止 90
7.1.2.3 进程出口列表 90
7.1.3 使用线程的多任务和使用进程的多任务 90
7.1.4 话路 91
7.1.4.1 创建话路 91
7.1.4.3 子话路中止 93
7.1.4.2 子话路控制 93
7.2 关于CPU调度 94
7.2.1 优先类别 94
7.2.2 优先级别 96
7.2.3 优先数指南 97
7.2.4 动态优先数改变 97
7.2.5 改变时间片大小 98
7.3 使用进程 98
7.3.1 启动子进程 99
7.3.1.1 启动一个异步的子进程 99
7.3.1.2 启动一个后台进程 100
7.3.1.3 为子进程设置命令和环境 101
7.3.2 改变进程的优先数 102
7.3.3 获取关于子进程的信息 102
7.3.4 等待子进程中止 102
7.3.5 结束当前进程 103
7.3.6 中止一个进程 104
7.3.7 创建出口列表 105
7.4 使用线程 107
7.4.1 创建一个线程 107
7.4.3 改变线程的优先数 109
7.4.2 获取有关线程的信息 109
7.4.4 挂起当前线程 110
7.4.5 挂起和重新执行一个线程 110
7.4.6 进入临界区 111
7.4.7 等待一个线程中止 112
7.4.8 结束当前线程 113
7.4.9 中止一个线程 115
7.5 使用话路 115
7.5.1 启动一个话路 115
7.5.2.1 设置一个子话路的用户选择能力 117
7.5.2 控制子话路的执行 117
7.5.2.2 将子话路衔接到父话路上 118
7.5.2.3 将一个话路切换到前台 118
7.5.3 中止一个话路 119
7.6 小结 120
第8章 信号量 122
8.1 关于信号量 122
8.1.1 事件信号量 122
8.1.2 互斥(Mutex)信号量 123
8.1.3 多等待(Muxwait)信号量 124
8.1.5 信号量管理 125
8.1.4 有名和无名信号量 125
8.2 使用事件信号量 126
8.2.1 创建一个事件信号量 126
8.2.2 打开一个事件信号量 127
8.2.3 关闭一个事件信号量 128
8.2.4 复位一个事件信号量 129
8.2.5 发布一个事件信号量 129
8.2.6 等待一个事件信号量 130
8.2.7 查询一个事件信号量 131
8.3.1 创建一个互斥信号量 132
8.3 使用互斥信号量 132
8.3.2 打开一个互斥信号量 133
8.3.3 请求一个互斥信号量 134
8.3.4 释放一个互斥信号量 136
8.3.5 关闭一个互斥信号量 136
8.3.6 查询一个互斥信号量 137
8.4 使用多等待信号量 137
8.4.1 创建一个多等待信号量 138
8.4.2 打开一个多等待信号量 139
8.4.3 关闭一个多等待信号量 141
8.4.4 等待一个多等待信号量 141
8.4.5 加一个信号量到多等待列表中 144
8.4.7 查询一个多等待信号量 145
8.5 小结 145
8.4.6 从多等待列表中删除一个信号量 145
第9章 管道 147
9.1 关于管道 147
9.1.1 无名管道 147
9.1.2 有名管道 148
9.1.2.1 使用有名管道的服务器——客户通信 149
9.1.2.2 管理服务器——客户事务的步骤 150
9.1.2.4 方便事务处理 151
9.1.2.3 为客户准备一个有名管道 151
9.1.2.5 用信号量来协调对本地有名管道的访问 152
9.2 使用无名管道 153
9.2.1 创建无名管道 153
9.2.2 读写无名管道 154
9.2.3 重定向子进程的标准I/O 154
9.3 使用有名管道 155
9.3.1 创建有名管道 155
9.3.2 打开有名管道 158
9.3.4 往有名管道中写入 160
9.3.3 从有名管道中读取 160
9.3.5 同步有名管道对话 161
9.3.6 确定管道的状态 162
9.3.7 检查有名管道中的内容 164
9.3.8 关闭有名管道 164
9.4 小结 165
第10章 队列 167
10.1 关于队列 167
10.1.1 队列和信号量 168
10.1.4 获取关于队列和队列元素的信息 169
10.1.3 队列元素顺序 169
10.1.2 队列服务器和客户 169
10.2 使用队列 170
10.2.1 创建一个队列 170
10.2.2 为队列数据分配空间 171
10.2.2.1 有名的共享存储体 171
10.2.2.2 无名的共享存储体 171
10.2.3 打开一个队列 171
10.2.4 往队列中写入 172
10.2.5 从一个队列中读取 173
10.2.6 窥探一个队列 175
10.2.8 关闭一个队列 177
10.2.7 清除一个队列 177
10.3 小结 178
第11章 定时器 179
11.1 关于定时器 179
11.1.1 挂起线程 179
11.1.2 异步定时器 180
11.2 使用定时器 180
11.2.1 挂起当前线程 181
11.2.2 单时间间隔的定时 182
11.2.3 重复时间间隔的定时 183
11.3 小结 185
第12章 出错管理 186
12.1 关于出错管理 186
12.1.1 返回值的分类 186
12.1.2 错误信息提示的禁止 187
12.2 使用出错管理 187
12.2.1 错误分类 187
12.2.2 硬件错误与异常情况信息的禁止 188
12.3 小结 189
第13章 异常情况管理 190
13.1 关于异常情况管理 191
13.1.1 系统异常 192
13.1.2 信号异常 194
13.1.2.1 处理信号异常 195
13.1.2.2 发送信号异常 196
13.1.3 唤起异常 196
13.1.4 用户定义异常 197
13.1.5 必须完成段 197
13.1.6 解除异常处理器 198
13.1.7 嵌套的异常 199
13.1.8 进程退出列表 200
13.2 异常处理器接口 201
13.1.9 错误信息弹出窗口 201
13.2.1 异常处理器参数 202
13.2.2 异常情况管理数据结构 202
13.2.2.1 ExceptionReportRecord数据结构 203
13.2.2.2 ExceptionRegistrationRecord数据结构 203
13.2.2.3 ContextRecord数据结构 204
13.2.3 异常处理器返回值 204
13.3 使用异常情况管理 205
13.3.1 异常处理器举例 205
13.3.2 登记异常处理器 207
13.4 小结 208
第14章 I/O设备 209
14.1 关于I/O设备 209
14.1.1 访问设备 209
14.1.2 设备名称 209
14.1.3 设备驱动程序 210
14.1.4 IOCtl接口 210
14.1.5 IOCtl命令 211
14.1.5.1 类型和功能代码 211
14.1.5.2 参数和数据包 211
14.2 使用文件系统存取设备 211
14.3 使用IOCtl函数存取设备 212
14.3.1 设置通信口参数 213
14.3.1.1 设置数据传输速率 213
14.3.1.2 获得COM口传输状态信息 213
14.4 小结 214
第15章 信息管理 216
15.1 关于信息管理 216
15.2 使用信息管理 216
15.2.1 取信息与替换串 217
15.2.2 替换内存中的文本串 218
15.2.3 写信息 219
15.3 小结 220
15.2.4 与信息文件联接的代码页信息 220
第16章 多国语言支持 222
16.1 关于多国语言支持 222
16.1.1 多国语言源文件 222
16.1.2 可支持多国语言的应用程序的专用语言描述 223
16.2 关于代码页管理 224
16.2.1 ASCII和EBCDIC代码页支持 225
16.2.2 代码页准备 225
16.2.3 代码页函数 225
16.3.2 为文本字符设置代码页 226
16.3.1 查询代码页支持及当前代码页 226
16.3 使用代码页 226
16.3.3 取得匹配映像串 227
16.3.4 取得DBCS环境向量 227
16.3.5 取得格式化信息 228
16.3.6 取得SORT所需的对照信息 228
16.4 小结 228
第17章 调试 229
17.1 关于调试 229
17.2 使用调试函数 230
17.3 小结 232