《NOVELL指南 NetWare 4.0NLM程序设计》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)戴(Day,Michael)等著;李卫国等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:1994
  • ISBN:7505322710
  • 页数:399 页
图书介绍:书名原文:Novell’sguidetonetware4.0nlmprogramming:著者原题无汉译名:本书内容包括:NLM程序员所需的基本知识、写多线程NLMs程序、目录服务、基本和高级文件系统程序设计、用扩展NCP编写分布式应用程序、名字空间、数据流和扩充属性等。

引 言……………………………………………………………………………………(Ⅳ)第一章NLM基础 1

熟悉NetWare操作系统环境 1

目 录 1

了解NLM是什么? 2

NLM能做什么? 3

怎样编译一个NLM? 3

NLM程序设计所需内容 3

熟悉NetWare NLM C接口库函数 3

怎样使你的NLM程序设计又快又好? 4

为什么要了解CLIB接口? 4

什么是CLIB中一般类型的函数? 4

怎样使用NLM库APIs? 6

NLM链接程序的差异 7

怎样使用NLM链接程序? 7

什么是PRELUDE.OBJ? 7

链接/装入程序 7

了解NetWare核 8

核是怎样运行的? 8

内存管理 8

NetWare是怎样使用内存的? 8

什么是多线程程序设计的基本内容? 9

什么是多线程程序设计? 9

多线程程序设计 9

怎样分配和使用内存? 9

NetWare提供怎样的内部保护机制以阻止NLMs相互间的破坏? 9

NLM上下文变量 10

什么是NLM上下文? 10

怎样建立NLM上下文? 10

屏幕处理系统 10

什么是屏幕? 10

怎样使用NLM库? 11

怎样建立NLM库? 11

NLM库 11

推荐使用屏幕的方法 11

什么是NLM库? 11

目录服务和装订库 12

什么是目录服务? 12

DIB和装订库之间的区别 12

什么是装订库仿真? 12

怎样访问目录? 13

了解NetWare 4.0文件系统 13

文件系统怎样执行? 13

名字空间 13

什么是名字空间? 13

什么是SPXⅡ? 14

怎样区别SPXⅡ与IPX/IP? 14

怎样使用SPXⅡ? 14

熟悉SPXⅡ 14

怎样使用名字空间? 14

熟悉STREAMS 15

什么是SREAMS? 15

为什么需要了解STREAMS? 15

怎样使用STREAMS? 15

小结 15

单线程的NLMs 17

线程和非优先级环境的定义 17

第二章写多线程NLMs程序 17

多线程的NLMs 18

非优先级环境 18

NetWare OS中的队列 18

线程与作业的比较:它们分别在OS中的工作原理 19

WorkToDoList队列 19

RunList队列 19

DelayedWorkToDoList队列 19

本章讨论的C接口子程序 20

LowPriorityRunList队列 20

一个多线程NLM例子 23

服务器一侧 23

客户方一侧 24

ENGINE NLM的主线程 24

主程序为开始附加线程作准备 27

OPENSEMAPHORE子程序 29

INITMAIN:缺省线程组中的附加线程 29

初始化监听、发送ECB 31

为监听询问设置监听、发送ECB 32

让InitMain睡眠 32

InitMain从睡眠到唤醒 34

InitMain建立线程组 35

EngineMain填写监听ECB(包括SemHandle字段)并且设置它们 35

EngineMain睡眠 36

EngineMain唤醒并得到呼入请求 37

EngineMain处理ECB请求 40

使用BeginThread的选择方法 44

正常地退出engine NLM 44

小结 47

第三章NetWare目录服务 48

目录服务的概念 48

定义目录信息库 49

了解目录纲要 49

解释什么是分区 52

回答访问问题 52

进一步考查目录服务的安全性 53

开始用目录服务函数 58

成为正式的NetWare 4.0客户 60

初始化目录上下文 60

通过注册建立凭证 63

进行证明 63

目录服务的访问控制 65

为目录信息库设置访问安全 65

改变ACL属性 66

安全等效性和组成员 68

改变目标的密钥对 69

查询目录树 70

通过浏览树来找出目标 70

执行黄页查询 72

两种检查属性值的方法 74

目录纲要函数 76

修改目录纲要 77

分区的目录树 79

一个简单的NLM应用 81

学习使用DSSCRIPT 81

介绍DSSCRIPT 82

练习运行DSSCRIPT 82

学习怎样建立一个脚本文件 83

小结 93

第四章基本文件系统程序设计 94

NetWare 4.0文件系统概述 94

文件系统的向下兼容性 94

NetWare卷 94

文件系统高速缓存 96

并发控制 97

事务控制 97

压缩 98

稀疏文件 98

名字空间 98

子地址分配 99

标准文件I/O 99

低级标准I/O 99

高级标准I/O 99

对于NetWare的DIR命令 101

合法的NetWare路径 110

查询目录 111

打印文件的时间和日期信息 112

从目标IDs获得目标名 113

获得子目录信息 114

修改DIR.NLM 114

文件属性处理 115

FLAG.NLM的内容 115

处理命令行参数 122

处理文件属性 123

修改FLAG.NLM 124

用户信息和控制 124

空间消耗控制 124

托管控制 126

修改继承权屏蔽 129

DSPACE.NLM 129

小结 138

对DSPACE.NLM的修改 138

第五章高级文件系统编程 139

高性能文件I/O 139

异步文件I/O注释 141

用FEsopen获得更多的控制 141

转移服务器注释 143

用共享的文件工作 143

标识文件共享 143

sopen和FEsopen 144

在一个可共享文件上加锁 144

对单个文件加锁和解锁 145

对一组文件加锁和解锁 146

加锁和释放单个记录 147

加锁和释放一组记录 149

一些文件或记录解锁,但不清除它们 150

什么是一个事务? 151

什么是一不完整事务? 151

NetWare事务跟踪系统 151

逻辑锁与物理锁 151

隐含事务和明显事务 152

在你的NLM中使用TTS 152

异步文件系统 155

异步地读文件数据 155

释放由AsyncRead所分配的存储区 157

异步地写文件数据 158

FILEIO.NLM 159

文件监视器接口 170

FMON.NLM 171

对FMON.NLM源程序的讨论 191

小结 196

第六章IPX/SPX与SPX Ⅱ通信 197

IPX编程 197

IPX的组成部分 198

Client/Server应用程序的编程 200

事件服务子程序(ESRS)的使用 200

SPX的使用 205

IPX与SPX的比较 205

把采用IPX的应用程序移植到SPX 205

SPX Ⅱ 212

SPX Ⅱ的评价 213

介绍用于SPX Ⅱ中的TLI 213

TLI和IPX 216

TLI和SPX 220

TLI和TCP 226

小结 227

第七章用NCP扩展器编写分布式应用程序 229

NCP扩展器如何工作 229

NCP扩展器的APIs 230

C接口服务器APIs 230

C接口客户APIs 230

服务器一方 231

在一个样本的客户机/服务器NLM中实现NCP扩展器 231

NCP扩展器的优点和缺点 231

客户机一方 253

小结 284

第八章存储管理和保护 285

Netware 4.0存储管理 285

存储管理和处理程序 285

存储管理服务控制命令 287

NetWare 4.0存储保护 288

环保护 288

范围保护 288

开发者选项 290

存储保护演示NLM:Prodemo 290

存储保护命令 290

调试(debugger)命令 292

小结 294

向下兼容性:使用目录库和装订库 295

第九章编写与多种NetWare版本兼容的NLM 295

Broker NLM如何动态地输入目录库服务APIs 296

Broker NLM是如何工作的 301

本章讨论的C接口程序 302

建立一个基于装订库的客户 307

建立一个基于目录库的客户 324

删除一个客户 331

在目录库中生成一个Broker目标(Broker Object) 332

在ENGINE.H中的预处理器语句 346

向下性兼容性:合适的APIs和预处理器指令 346

在ENGINE.C中的预处理器语句 347

编写一个运行于NetWare SFTⅢ上的NLM 351

镜像服务器的工具:IOEngine和MSEngine 351

IOEngine支持C语言接口程序 352

MSEngine支持的NetWare C接口程序 353

小结 353

字节顺序和数据校准 354

第十章NETWARE可移植性 354

指导1:遵循标准的技术说明编写程序(ANSI C) 355

指导2:避免对数据目标值的描述作出假设 355

在结构中引用元素 356

将“字节”指针拼接成“字”或“长字”指针,将“字”指针拼接成“长字”指针 358

把非校准数据用于库程序 359

对于所有的数据长度使用长度操作符 359

寻址数组元素 359

指导3:避免对字节顺序做假设 359

指导4:使用宏指令消除机器字节顺序特性 361

指导5:避免将若干字节组合成一个长字或字 384

指导6:避免通过长字指针分配/初始化字节 386

指导7:避免对堆栈的用法和堆栈的增加方向做假设 387

指导8:不要假设缺省使用的编程语言或计算机 388

使用INT 388

位图 389

使用变参方式来实现那些需要参数数量是变化的函数 389

定义范围与使用局部和全局变量及函数 389

指导9:对依靠环境的程序进行标识、分离和参数化 390

指导10:在每个程序中包括头文件Portable.H文件 391

其它方面的指导 391

尽可能地将特殊的用户接口从程序中分离出来 391

用许多计算机上的各种不同的编译器来测试程序 391

让有不同背景的人来检查程序 391

小结 392

第十一章名字空间、数据流、扩展属性 393

什么是名字空间? 393

什么是数据流? 394

什么是扩展属性? 395

NetWare的名字空间机制的概要 395

文件工具(File Engine)接口的综述 396

AFP(Apple Talk Filing Protocol)API综述 398

小结 399