home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lanapirm.zip / LANAPIRM.INF (.txt)
OS/2 Help File  |  1995-04-20  |  179KB  |  4,835 lines

  1.  
  2. ΓòÉΓòÉΓòÉ <hidden> Unformatted Text ΓòÉΓòÉΓòÉ
  3.  
  4.  
  5. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  6.  
  7. References in this publication to IBM products, programs, or services do not 
  8. imply that IBM intends to make these available in all countries in which IBM 
  9. operates.  Any reference to an IBM product, program, or service is not intended 
  10. to state or imply that only IBM's product, program, or service may be used. 
  11. Any functionally equivalent product, program, or service that does not infringe 
  12. any of IBM's intellectual property rights or other legally protectable rights 
  13. may be used instead of the IBM product, program, or service.  Evaluation and 
  14. verification of operation in conjunction with other products, programs, or 
  15. services, except those expressly designated by IBM, are the user's 
  16. responsibility. 
  17.  
  18. IBM may have patents or pending patent applications covering subject matter in 
  19. this document.  The furnishing of this document does not give you any rights to 
  20. these patents.  You can inquire, in writing, to the IBM Director of Licensing 
  21. Services, IBM Corporation, 500 Columbus Avenue, Thornwood, NY  10594 - U.S.A. 
  22.  
  23.  
  24. ΓòÉΓòÉΓòÉ 1.1. Trademarks ΓòÉΓòÉΓòÉ
  25.  
  26. The following terms in this publication are trademarks of the IBM Corporation 
  27. in the United States, other countries, or both: 
  28.  
  29. AIX 
  30. AIX/6000 
  31. AIX RISC System/6000 
  32. AnyNet 
  33. CICS 
  34. Communications Manager/2 
  35. DataGlance 
  36. DATABASE 2 OS/2 
  37. DATABASE 2 RISC System/6000 
  38. DB2/2 
  39. DB2/6000 
  40. Distributed System Object Model 
  41. DSOM 
  42. FFST/2 
  43. First Failure Support Technology/2 
  44. IBM 
  45. LAN Distance 
  46. LAN Server 
  47. MPTS 
  48. Multi-Protocol Transport Services 
  49. MVS 
  50. NetDoor 
  51. NetSP 
  52. Network Transport Services/2 
  53. NTS/2 
  54. Operating System/2 
  55. Operating System/400 
  56. OS/2 
  57. OS/400 
  58. Person to Person/2 
  59. PowerPC 
  60. Presentation Manager 
  61. RISC System/6000 
  62. SAA 
  63. SNA 
  64. SPM/2 
  65. Systems Application Architecture 
  66. Systems Network Architecture 
  67. System Performance Manager/2 
  68. Ultimedia 
  69.  
  70. The following terms in this publication are trademarks of other companies as 
  71. follows: 
  72.  
  73. ATT                       American Telephone  Telegraph 
  74. cc:Mail                   cc:Mail, Inc. 
  75. Encina                    Transarc Corporation 
  76. HP                        Hewlett-Packard Company 
  77. Intel                     Intel Corporation 
  78. Macintosh                 Apple Computer, Inc. 
  79. NetWare                   Novell, Inc. 
  80. Lotus Notes               Lotus Development Corporation 
  81. OpenDoc                   Apple Computer, Inc. 
  82. Open Software Foundation  Open Software Foundation, Inc. 
  83. OSF                       Open Software Foundation, Inc. 
  84. PostScript                Adobe Systems, Inc. 
  85. Taligent                  Taligent, Inc. 
  86. UNIX                      Unix System Laboratories, Inc. 
  87. UnixWare                  UNIX System Laboratories, Inc. 
  88. Windows                   Microsoft Corporation 
  89. X/Open                    X/Open Company 
  90.  
  91.  
  92. ΓòÉΓòÉΓòÉ 2. What This Roadmap Covers ΓòÉΓòÉΓòÉ
  93.  
  94. IBM LAN Systems products provide file and print serving, distributed computing, 
  95. and distributed objects, across multiple operating systems including OS/2, AIX, 
  96. DOS, OS/400 and Windows.  Current products include: 
  97.  
  98. o   LAN Server 
  99. o   LAN Server for Macintosh 
  100. o   LAN Server for Ultimedia 
  101. o   LAN Server/AIX 
  102. o   LAN Server/400 
  103. o   LAN Server for VM or MVS 
  104. o   LAN Distance 
  105. o   AnyNet 
  106. o   Distributed Computing Environment 
  107. o   Encina 
  108. o   NetView family of products 
  109. o   SOMobjects 
  110.  
  111. The LAN Systems family of products provide APIs for a wide range of operating 
  112. system environments that span the entire range of functions required for 
  113. robust, client/server programming support.  Hundreds of APIs are available for 
  114. application development, but a given application may only need a few.  To make 
  115. it easier to determine the APIs that benefit you and your application, this 
  116. document uses the Open Blueprint concepts to categorize the APIs. 
  117.  
  118. This document also outlines IBM's vision for a client/server application 
  119. development environment based on an integrated distributed computing platform. 
  120. As this document evolves with each quarterly release of the Developer 
  121. Connection, further details of the application interface strategy for each 
  122. functional category, including information on the industry standard APIs 
  123. provided for application portability across hardware platforms, as well as 
  124. object frameworks, will be provided to assist you with reusing code. 
  125.  
  126. Hints: 
  127.  
  128. o   See the sections marked Future Directions or Hints to discover the 
  129.     'application programming roads' that are available now or under 
  130.     construction, the sights to see along the way, and the roadblocks to avoid. 
  131.  
  132. o   See the LAN Systems API Implementation Guidelines on the Developer 
  133.     Connection for LAN Systems CD for detailed instructions on the best route 
  134.     to take advantage of the LAN as a system when designing applications. 
  135.  
  136. o   For a technical description of the Open Blueprint, refer to the IBM Open 
  137.     Blueprint:  Technical Overview Open Blueprint: Technical Overview , 
  138.     GC23-3808-00. 
  139.  
  140. o   For a more comprehensive tour of the IBM products dedicated to getting you 
  141.     on the fast track to client/server development, refer to the Client/Server 
  142.     Survival Guide by Orfali and Harkey, available from Van Nostrand Reinhold 
  143.     publishers. 
  144.  
  145.  
  146. ΓòÉΓòÉΓòÉ 2.1. What is a LAN System? ΓòÉΓòÉΓòÉ
  147.  
  148. The personal computer has enhanced the way people communicate and the way in 
  149. which they work. Originally, local area networks (LANs) provided a way for a 
  150. group of people who were located together to share resources and communicate. 
  151. As PC's became faster and their capacity grew, new applications capitalized on 
  152. the LAN's communications capabilities, that were also becoming faster and more 
  153. capable. People wanted applications that could send mail, share files, access 
  154. centralized databases, and use expensive output devices. Communication is now 
  155. with people both down the hall and around the world. Technology now enables LAN 
  156. systems to meet any geographic requirement and can support computers attached 
  157. remotely or only occasionally, for mobile computers. The LAN system of today 
  158. encompasses different operating systems, a wide variety of applications, 
  159. sophisticated communications, and large numbers of users. It requires the 
  160. management, administration, and reliability that are appropriate for this 
  161. sophistication and complexity. 
  162.  
  163. The strategy for IBM LAN systems is to simplify these complex environments from 
  164. the application developer's perspective by treating the LAN as a system. This 
  165. manageable LAN environment serves as the platform for a new generation of 
  166. distributed applications.  Backing up this strategy is IBM's commitment to 
  167. adhere to an Open Blueprint that addresses the challenges of the distributed 
  168. computing environment.  This approach enables the development, execution, and 
  169. management of distributed, client/server applications work together in an 
  170. integrated fashion in today's heterogeneous, multivendor environment. 
  171.  
  172. Today's IBM LAN systems products are designed to provide a single system image 
  173. of the network, giving users access to the information they need, regardless of 
  174. where that information is located.  At the same time, the products insulate 
  175. application developers and administrators from the complexities of the network: 
  176. including connections, protocols, service providers, and hardware. 
  177.  
  178. o   From a user's perspective, this means that the user logs in once and 
  179.     accesses resources anywhere in the network (given the appropriate 
  180.     authorization) without needing to know where a given resource resides.  The 
  181.     resources in the network are represented as seamless extensions to their 
  182.     local resources and are manipulated the same way. 
  183.  
  184. o   From an administrator's perspective, administrative tasks within the 
  185.     network can be performed by modifying the contents of the distributed 
  186.     directory or security servers rather than administering the user and 
  187.     resource on each server separately. In addition, administration can be 
  188.     performed from anywhere in the network. 
  189.  
  190. o   From an application developer's perspective, the same programming 
  191.     interfaces are available from anywhere in the network to enable application 
  192.     portability among heterogeneous machines. 
  193.  
  194.  
  195. ΓòÉΓòÉΓòÉ 2.2. LAN Systems API Strategy ΓòÉΓòÉΓòÉ
  196.  
  197. The LAN Systems API Strategy has three main elements: 
  198.  
  199. 1.  The full set of APIs necessary to write distributed client/server 
  200.     applications will exist on every platform. 
  201.  
  202. 2.  The use of an API is independent of selecting its implementation at run 
  203.     time. 
  204.  
  205. 3.  The evolution of APIs to exploit the parts concept. 
  206.  
  207. Support will continue for key procedural APIs that are available from IBM 
  208. today. Strategic APIs available today are: 
  209.  
  210. VIM                       Mail 
  211. LAKES API                 Collaboration 
  212. OpenDoc                   Compound Document 
  213. TransC, CICS              Transaction Processing 
  214. OSF/DCE RPC               Remote Procedure Calls 
  215. Sockets                   Sockets 
  216. CPI-C                     Conversation 
  217. MQI                       Messaging 
  218. OSF/DCE security and XDS  Distributed System Services 
  219. SOM                       Object Services 
  220. PM                        GUI 
  221. MMPM/2                    Multimedia 
  222. DMI                       Configuration, Installation and Distribution 
  223. netls                     Licensing 
  224.  
  225. IBM will provide object oriented frameworks to access distributed services such 
  226. as directory, transaction, user registry, time, authorization, and 
  227. authentication.  These frameworks are sets of class libraries defined with IBM 
  228. SOM.  Exploiting the strengths of SOM, it will be possible to write 
  229. client/server applications in a range of languages including C, C++, Smalltalk, 
  230. REXX, and Object COBOL. 
  231.  
  232. Note:  It is possible to write applications that use procedural APIs, either 
  233.        alone or in conjunction with related object oriented frameworks. 
  234.  
  235.  
  236. ΓòÉΓòÉΓòÉ 2.2.1. The Integrated Distributed Computing Platform ΓòÉΓòÉΓòÉ
  237.  
  238. The goal is to make all of the APIs that enable writing clients and servers 
  239. available on OS/2. Thus, the application being executed is independent of 
  240. whether the computer is dedicated to a single user or is serving multiple users 
  241. simultaneously. The blurring of the distinction between client and server 
  242. allows application developers and customers to make decisions on security, 
  243. recovery, performance, and resource requirements without having to retarget the 
  244. application to specific APIs. This will allow client/server applications to be 
  245. developed on a single workstation with a set of development tools that support 
  246. design, prototype, implementation and test. Once developed and tested, the 
  247. application parts can be targeted to specific client and server platforms. 
  248.  
  249.  
  250. ΓòÉΓòÉΓòÉ 2.2.2. API Independence ΓòÉΓòÉΓòÉ
  251.  
  252. The independence of an API from implementation is the key to portability and 
  253. interoperability in distributed client/server systems. Already communication 
  254. APIs allow multiple transport protocols to be used between client and server. 
  255. The strategy continues this to higher layers of function in areas such as 
  256. database access, document management, mail, and distributed services. The 
  257. application developer selects APIs and the customer can decide which product 
  258. will provide its corresponding function. The implementation technique for 
  259. providing this capability is generally called a framework. 
  260.  
  261. A framework has two interfaces defined: an application programming interface 
  262. (API) and a service provider interface (SPI). The implementation is called 
  263. through the SPI based on information passed in the API or discovered from the 
  264. configuration. When the concept is extended to object oriented programming, a 
  265. framework is a set of related classes, embodying a design, that programmers can 
  266. use, extend, or customize for specific computing solutions.  Refer to the 
  267. Taligent Glossary, Building Object-oriented Frameworks White Paper, 1994 for 
  268. more information. 
  269.  
  270. The evolution of programming technology adds another dimension to the API 
  271. strategy. In a well-designed system, the API is the doorway through which 
  272. requests for service are passed and results are returned. It is important to 
  273. ensure that programs respect the side of the door they are on. It is also key 
  274. that the system have the right number and type of doors. In object technology, 
  275. there is support in the programming languages and SOM to enable the separation 
  276. of responsibilities and to create the right number of doors to function. 
  277.  
  278. The API strategy will take advantage of this evolution by having a spectrum of 
  279. APIs for groups of function. Today's calls to DLLs and system functions will be 
  280. supplemented by class implementations for the function. The first step is to 
  281. create classes provide the equivalent function of today's APIs and support OO 
  282. programming. The second step organizes these classes into frameworks. This 
  283. second step is quite complex for system designers, because all of the classes 
  284. need to follow a common architecture and behave in the same way. We don't 
  285. believe that every procedural API maps one-to-one to an object interface nor 
  286. that every object class needs a corresponding function implemented with a 
  287. procedural API. The exploitation of objects will make it easier to use system 
  288. and service functions so we expect the volume of APIs to be reduced within 
  289. functional areas. Refer to the Taligent white papers on the Developer 
  290. Connection for OS/2 for more insight into this area. 
  291.  
  292.  
  293. ΓòÉΓòÉΓòÉ 2.2.3. Exploiting Parts ΓòÉΓòÉΓòÉ
  294.  
  295. The API evolution has a third step as well. Visual application building tools 
  296. exploit the concept called parts. A part is a self-contained unit of function 
  297. that supports particular behaviors. The behaviors are both the purpose for 
  298. which the part was created (e.g. display text information) and the 
  299. responsibilities of the part within the whole (i.e. a compound document). These 
  300. responsibilities typically include handling events from the user interface, 
  301. being scriptable, storing its data in containers, and others. 
  302.  
  303. Use of this concept is very natural for people who want to assemble 
  304. applications that meet their needs. It is an object concept which does not 
  305. require everything to be programmed with object languages. From an application 
  306. developer's viewpoint, the building of parts offers the best opportunity to 
  307. create useful, modern, and powerful solutions to problems when the 
  308. infrastructure exists to support their build and use. Products like VisualAge 
  309. and the forthcoming OpenDoc from CI Labs are for this purpose. 
  310.  
  311. The API evolution is related in the following example. The procedural APIs for 
  312. simple mail allow an application to use the mail system for sending and 
  313. receiving simple messages. An object implementation provides method calls to an 
  314. mail object. The definition of a Mail class evolves into a mail framework, that 
  315. provides objects for determining addresses of mail recipients, saving messages, 
  316. filtering them, etc. The usefulness of the framework is its ability to allow 
  317. different implementations of the classes, for example, mail objects might be 
  318. stored in files, databases, remotely, based on the customer's need. The mail 
  319. part allows application developers (and end users given the power of new tools) 
  320. to use Mail as an application building block. The application might be tax 
  321. processing where delinquent notices are generated automatically. From your 
  322. perspective, the function provided by the mail API becomes richer. This 
  323. richness pays off in better applications. The mail API accepted a string and a 
  324. user name and sent a message. A mailbox object can accept documents, drawings, 
  325. and video-clips and send them. The mailbox framework does the this, but can 
  326. also resolve user name in a global directory and then choose a mail protocol 
  327. based on the type of object being sent and the destination. The mail part 
  328. allows a developer or end user to use mail as a building block, for example, 
  329. when constructing a workflow solution. The goal is to allow the application 
  330. developer to create functional parts that reflect a unique knowledge of the 
  331. problem being solved and then knit these to parts developed by others. Parts 
  332. that look up things in directories, send things around networks, and manage 
  333. resources will be provided with the distributed client/server system. 
  334.  
  335. Of course, the entire scenario above could have been done with procedural APIs 
  336. and 3GL or 4GL programming (and for the most part has been). We believe that 
  337. the use of object technology, supported as part of the operating system and its 
  338. servers, significantly increases your ability to create and exploit the 
  339. capabilities that application developers and end users need. 
  340.  
  341.  
  342. ΓòÉΓòÉΓòÉ 2.2.4. More About DCE and LAN Server ΓòÉΓòÉΓòÉ
  343.  
  344. LAN Server and DCE define a set of complementary, and in some cases overlapping 
  345. services.  Today, IBM delivers both DCE and LAN Server on a set of platforms 
  346. and they can coexist on those platforms, but there is no integration of the 
  347. two.  In future releases, LAN Server will integrate DCE core services, 
  348. supplementing the LAN Server functionality with features such as RPC, and 
  349. replacing directory and security services with the more scalable, flexible, and 
  350. open services provided by DCE.  A set of automatic migration functions, 
  351. interoperability gateways, and synchronization daemons provide a smooth path 
  352. from LAN Server 3.0 and 4.0 to this new environment, preserving 
  353. interoperability with clients and servers of these environments and the clients 
  354. and servers from other SMB based networks including Microsoft's Windows for 
  355. Workgroups and NT. 
  356.  
  357. o   The Evolution 
  358. o   Hints 
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 2.2.4.1. The Evolution ΓòÉΓòÉΓòÉ
  362.  
  363. Future versions of LAN Server will preserve LAN Server programming interfaces, 
  364. adding the complementary APIs of DCE and mapping existing LAN Server APIs onto 
  365. corresponding DCE APIs where LAN Server services are replaced by DCE-based 
  366. services, so that existing LAN Server exploitive applications will continue to 
  367. run in the integrated environment and new applications can take advantage of 
  368. all the features of the combined programming environment. 
  369.  
  370. To describe how the current LAN Server programming interfaces will be 
  371. preserved, it is important to understand a set of categories of workstations 
  372. that the LAN Server environment will include: 
  373.  
  374. o   Legacy clients and servers (LAN Server 3.0 and 4.0) 
  375. o   Unintegrated clients and servers (clients and servers with updated LAN 
  376.     Server code, but not using the DCE core services) 
  377. o   Pure DCE clients and servers (clients and servers running DCE from IBM or 
  378.     other vendors that do not run LAN Server) 
  379. o   Integrated clients and servers (clients and servers running updated LAN 
  380.     Server code with the DCE core services) 
  381.  
  382. The general model for preserving the LAN Server programming interfaces is as 
  383. follows:  For legacy and unintegrated clients, which do not have the DCE APIs 
  384. locally, mapping from the LAN Server APIs onto DCE APIs is performed at the 
  385. server (usually the domain controller).  The domain controller acts as a 
  386. gateway to the Cell Directory Service (CDS) and Cell Registry.  Pure DCE 
  387. clients administer the information in the Cell Directory Service and DCE 
  388. Registry directly, using the DCE APIs.  Applications on integrated clients can 
  389. use either the DCE APIs directly or they can continue to use the LAN Server 
  390. APIs.  In the latter case, the LAN Server APIs are mapped onto DCE APIs at the 
  391. client, so that the client interacts directly with the DCE Services without the 
  392. need for a LAN Server domain controller to act as a gateway. 
  393.  
  394.  
  395. ΓòÉΓòÉΓòÉ 2.2.4.2. Hints ΓòÉΓòÉΓòÉ
  396.  
  397. o   LAN Server Version 4.0 provides several functional upgrades to Version 3.0; 
  398.     the most significant to programming is the support for both 16-bit and 
  399.     32-bit applications.  Support for both types of applications allows a 
  400.     gradual change of LAN Server APIs into 32-bit worker routines without 
  401.     requiring 32-bit applications to change. 
  402.  
  403.     The availability of 32-bit APIs in LAN Server 4.0 raises the interface one 
  404.     layer.  In Version 3.0, the programmer had to do much of the work of 
  405.     thunking pointers in data structures.  The new 32-bit APIs eliminate that 
  406.     work. 
  407.  
  408.     This document only specifies the 32-bit APIs.  For more information about 
  409.     32-bit and 16-bit APIs, see the LAN Server Programming Guide and Reference. 
  410.  
  411. o   This document identifies several DCE APIs that are available with OSF DCE 
  412.     1.1.  These APIs will soon be available from IBM; look for them on future 
  413.     versions of the Developer Connection for LAN Systems. 
  414.  
  415. o   Over time the LAN Server APIs will be de-emphasized in favor of the open 
  416.     APIs endorsed by OSF, OMG, X/Open and other distributed computing standards 
  417.     bodies. In many cases, these interfaces will be implemented as procedural 
  418.     or object frameworks, allowing for a range of service providers to be 
  419.     incorporated into the environment, transparent to applications using the 
  420.     programming interfaces. LAN Server APIs will be gradually phased out in 
  421.     favor of these open interfaces, but mapping layers will be provided for 
  422.     important APIs to allow for a smooth, gradual migration and port of 
  423.     existing applications. 
  424.  
  425.  
  426. ΓòÉΓòÉΓòÉ 2.2.5. More about Objects ΓòÉΓòÉΓòÉ
  427.  
  428. Today, the IBM runtime architecture for object-oriented application development 
  429. includes an object model, object services, object-oriented application 
  430. frameworks, a part (or compound document) programming model, and customizable 
  431. desktops.  A set of tools accompany this enabling software that includes 
  432. integrated development environments, visual application builders, and both 
  433. compiled and interpreted programming languages. 
  434.  
  435. o   Object Enabling - SOM and DSOM 
  436. o   Basic Object Services - SOM Toolkit Frameworks 
  437. o   Application Frameworks - C/Set++ and Taligent 
  438. o   Part Enablement - OpenDoc/OSA 
  439. o   Customizable Desktops 
  440. o   Tools 
  441.  
  442.  
  443. ΓòÉΓòÉΓòÉ 2.2.5.1. Object Enabling - SOM and DSOM ΓòÉΓòÉΓòÉ
  444.  
  445. The system object model (SOM) provides the foundation for all IBM runtime 
  446. object services.  SOM provides two key features for application development: 
  447.  
  448. o   Compiler and language independence by allowing classes to be defined in one 
  449.     language and then implemented, used or subclassed from another language. 
  450. o   Binary code reuse and permits class libraries to be enhanced without 
  451.     requiring existing applications to be recompiled from source code. 
  452.  
  453. SOM conforms to the Object Management Group object model architecture and its 
  454. common object request broker architecture (CORBA) specification. Application 
  455. developers can use OMG IDL interface specification language with IBM 
  456. precompilers to implement SOM objects in C, C++, or COBOL programming languages 
  457. today.  Vendors are presently working with IBM to produce SOM language bindings 
  458. for SmallTalk. Scripting languages can also be supported, such as Object REXX 
  459. or Object BASIC.  With certain compilers, C++ definitions can replace IDL. 
  460.  
  461. Distributed SOM (DSOM) supplies the infrastructure to support distribution of 
  462. SOM objects across a heterogeneous network.  Among other things, this 
  463. infrastructure provides local-remote transparency for binary objects.  A class 
  464. or a framework can be developed and compiled in a single address space without 
  465. object distribution and then later can be deployed as distributed binary 
  466. objects. 
  467.  
  468. DSOM complies with the OMG CORBA specification.  CORBA mandates interface and 
  469. implementation repositories, a basic object adapter, an object request broker 
  470. for object location and activation, and both static and dynamic method 
  471. invocation. 
  472.  
  473. DSOM goes beyond the CORBA specification through the use of proxies rather than 
  474. simple RPC stubs in the calling process.  When an object is remote from the 
  475. caller, a proxy object is used to forward requests to the remote object.  The 
  476. proxy provides the same interface as the remote object, and the caller need not 
  477. be aware that it is communicating with a remote object.  DSOM generates default 
  478. proxies automatically, but developers can also create specialized proxies that 
  479. take advantage of such techniques as caching and local computation. 
  480.  
  481.  
  482. ΓòÉΓòÉΓòÉ 2.2.5.2. Basic Object Services - SOM Toolkit Frameworks ΓòÉΓòÉΓòÉ
  483.  
  484. IBM implements OMG services as flexible, extendible object frameworks. Since 
  485. the OMG specification is minimal, IBM extends these services in the frameworks 
  486. to provide complete distributed application function.  For example, IBM's 
  487. persistent object framework supports both single-level, implicit object storage 
  488. and explicit save/restore management of persistent objects.  In addition, the 
  489. IBM persistent object framework can support various storage mechanisms, 
  490. including file storage, relational database storage, and object database 
  491. storage. Providing data store independence is a key goal of the IBM persistence 
  492. and transaction frameworks. 
  493.  
  494. The IBM object service frameworks allow developers to incrementally add service 
  495. function to any SOM object without any unique design.  Class developers write 
  496. their code without concern for normal system-like services (for example, 
  497. persistence, concurrency, recover ability, security, or distribution).  The 
  498. user of the class then specifies the combination of services that are desired 
  499. in a particular instantiated object.  SOM binary run-time mechanisms, such as 
  500. runtime subclassing and before/after metaclasses, then provide those desired 
  501. features. 
  502.  
  503. Object services currently available in the SOM Toolkit include collection 
  504. classes, persistence, and replication.  The OMG first-object service 
  505. specifications were adopted after the SOM Toolkit release, but IBM plans to 
  506. enhance the SOM Toolkit object services to meet the OMG specifications.  These 
  507. will include event notification, enhanced persistence, lifecycle, naming, 
  508. externalization, transactions, concurrency, relationships, and security. 
  509.  
  510.  
  511. ΓòÉΓòÉΓòÉ 2.2.5.3. Application Frameworks - C/Set++ and Taligent ΓòÉΓòÉΓòÉ
  512.  
  513. IBM provides a set of cross-platform application frameworks to improve the 
  514. productivity of C++ programmers.  Today, these ship with C/Set++ for AIX and 
  515. OS/2.  These frameworks will soon be significantly enhanced with technology 
  516. from the Taligent object-oriented application environment. 
  517.  
  518. The IBM application frameworks today cover portable classes, collections, user 
  519. interfaces, string handling, and some operating system functions such as 
  520. threads.  In the future, IBM will add database access, graphics, conversational 
  521. communications, internationalized text, printing, more operating system 
  522. classes, and a compound document framework.  These will be available in a 
  523. choice of two C++ toolkits: a "Starter Set" supports smaller machines and 
  524. today's user interface, while a "Complete Set" supports the complete Taligent 
  525. application environment, user interface and programming model. 
  526.  
  527.  
  528. ΓòÉΓòÉΓòÉ 2.2.5.4. Part Enablement - OpenDoc/OSA ΓòÉΓòÉΓòÉ
  529.  
  530. OpenDoc is software that enables a compound document, or part, programming 
  531. model.  The OpenDoc protocol allows applications from multiple vendors to be 
  532. broken down into small task-specific parts.  These parts from can then be 
  533. combined in many ways by either end users or script programmers to create 
  534. application solutions.  Parts are generally presented as pieces of a compound 
  535. document. 
  536.  
  537. OpenDoc is a product of CILabs, an open consortium of vendors including Apple, 
  538. IBM, WordPerfect, and Lotus.  OpenDoc specifies protocols to vendors to produce 
  539. interoperable compound document parts.  These protocols are specified in IDL, 
  540. and CILabs provides implementations based on SOM/DSOM, using C++ bindings. 
  541. OpenDoc supports Microsoft OLE II parts in its implementation on Windows.  This 
  542. means parts written to either OLE II or OpenDoc can interoperate within the 
  543. same document. 
  544.  
  545. The IBM application frameworks described previously support OpenDoc part 
  546. protocols.  Creating parts with these frameworks is considerably easier than 
  547. creating parts by coding directly to the OpenDoc interface. 
  548.  
  549. OpenDoc provides scripting using the Open Scripting Architecture.  Any 
  550. OSA-compliant scripting language can use an OpenDoc part.  Programmers can 
  551. rapidly assemble parts into more complex parts and applications using these 
  552. scripting languages.  IBM plans to give end-users and non-professional 
  553. programmers visual development environments that allow parts to be connected 
  554. into more complex parts or complete applications, using direct manipulation and 
  555. scripting languages such as Object Basic or Object REXX. 
  556.  
  557.  
  558. ΓòÉΓòÉΓòÉ 2.2.5.5. Customizable Desktops ΓòÉΓòÉΓòÉ
  559.  
  560. The part programming model and the IBM framework implementation provides an 
  561. excellent base on which to support customizable and extensible desktops.  This 
  562. is a future direction of IBM that builds on Taligent's desktop technology, 
  563. their "People, Places and Things" metaphor, and existing desktop models for 
  564. OS/2 and AIX. 
  565.  
  566.  
  567. ΓòÉΓòÉΓòÉ 2.2.5.6. Tools ΓòÉΓòÉΓòÉ
  568.  
  569. IBM provides cross-platform tools for both C++ and SOM IDL object development. 
  570. Platforms supported include AIX, OS/2, Windows (partial), and Solaris 
  571. (partial).  Tools such as compiler, linker, debugger, browser, performance 
  572. analyzer, and configuration manager are combined into an integrated development 
  573. environment for professional programmers. 
  574.  
  575. IBM is adding a visual application builder to assist programmers in creating 
  576. parts and user interfaces.  Tools are also being added to aid in understanding 
  577. complex object frameworks and to aid in search and retrieval of classes and 
  578. frameworks that can be reused to meet the specified criteria. 
  579.  
  580. The Taligent development environment (TalDE) will be a rapid prototyping 
  581. environment for users of the IBM application frameworks.  In particular, TalDE 
  582. will support incremental compiles as well as fast search and retrieval of 
  583. appropriate framework code for desired uses. 
  584.  
  585. For non-professional programmers and end users, IBM is creating visual 
  586. development environments that require almost no coding.  The small amounts of 
  587. code that are required can be written quickly with SOM-enabled, OSA-compliant 
  588. scripting languages. 
  589.  
  590.  
  591. ΓòÉΓòÉΓòÉ 3. Contents of The Developer Connection for LAN Systems ΓòÉΓòÉΓòÉ
  592.  
  593. The Developer Connection for LAN Systems CD-ROM is a cross-platform offering 
  594. that supports the installation of products and information for OS/2, Windows, 
  595. DOS, and AIX workstations.  It provides the programming environment required 
  596. for client/server and distributed computing application development. This 
  597. section is divided into the following sections: 
  598.  
  599. o   The Developer Connection Catalog 
  600. o   Books in the Developer Connection Browser 
  601. o   BookManager Books 
  602. o   PostScript Books 
  603.  
  604.  
  605. ΓòÉΓòÉΓòÉ 3.1. The Developer Connection Catalog ΓòÉΓòÉΓòÉ
  606.  
  607. The Developer Connection for LAN Systems contains a number of products that can 
  608. be installed onto your network.  See the following sections for a listing of 
  609. the available products. 
  610.  
  611. o   LAN Systems Toolkits 
  612. o   Product Overviews 
  613. o   LAN Systems Tools 
  614. o   Sample Code 
  615. o   Service 
  616.  
  617.  
  618. ΓòÉΓòÉΓòÉ 3.1.1. LAN Systems Toolkits ΓòÉΓòÉΓòÉ
  619.  
  620. The Developer Connection for LAN Systems includes the following toolkits: 
  621.  
  622. o   OS/2 
  623.  
  624.     LAN Server 4.0 APIs 
  625.     LAN Distance APIs 
  626.     Sockets APIs 
  627.     Network SignON Coordinator API 
  628.     User Profile Management APIs 
  629.     DCE Application Enabler for OS/2 
  630.     SOMobjects Workgroup Enabler Toolkit 2.1 
  631.     SNMP DPI Version 2.0 
  632.  
  633. Note:  For additional information about these toolkits, open the Developer 
  634.        Connection Catalog and LAN Systems Toolkits icons. Then open the icon 
  635.        for the product you want to learn more about and click on the Extended 
  636.        Description button. 
  637.  
  638. o   AIX 
  639.  
  640.     DCE Toolkit 
  641.     Encina Toolkit 
  642.     MakeDCE 
  643.     DCE Password 
  644.     DCESTAT 
  645.     XCell Profiler 
  646.     EZDCE 
  647.     PDDA6000 
  648.     SMT 
  649.  
  650. Note:  For additional information about the AIX development tools, see the 
  651.        AIXREAD.ME file on the \AIX directory of the Developer Connection for 
  652.        LAN Systems CD-ROM. 
  653.  
  654.  
  655. ΓòÉΓòÉΓòÉ 3.1.2. Product Overviews ΓòÉΓòÉΓòÉ
  656.  
  657. The Developer Connection for LAN Systems includes the following product 
  658. overviews: 
  659.  
  660. DatagLANce (Evaluation) 
  661. DCE (Illustration) 
  662. LAN Distance (Evaluation) 
  663. LAN Server 4.0 (Evaluation) 
  664. NetDoor (Evaluation) 
  665. NetFinity (Evaluation) 
  666. Person to Person/2 (Evaluation) 
  667. AnyNet for OS/2 (Evaluation) 
  668. AnyNet SNA over TCP/IP (Evaluation) 
  669. NetView Distribution Manager/2 (Evaluation) 
  670.  
  671. For additional information about the product overviews, open the Developer 
  672. Connection Catalog and Product Overviews icons.  Then open the icon for the 
  673. product you want to learn more about and click on the Extended Description 
  674. button. 
  675.  
  676.  
  677. ΓòÉΓòÉΓòÉ 3.1.3. LAN Systems Tools ΓòÉΓòÉΓòÉ
  678.  
  679. The Developer Connection for LAN Systems includes the following LAN Systems 
  680. tools: 
  681.  
  682. DirStat 
  683. LANXCopy 
  684. MakeDCE 
  685. Library Read/2 
  686. RINGUTIL 
  687. GENE/D 
  688. LAN Server REXX Utility 
  689. LAN Server Specialist 
  690. NetWare to LAN Server Migration Tool 
  691. LAN Manager to LAN Server Migration Tool 
  692.  
  693. For additional information about the LAN Systems Tools, open the Developer 
  694. Connection Catalog and LAN Systems Tools icons.  Then open the icon for the 
  695. product you want to learn more about and click on the Extended Description 
  696. button. 
  697.  
  698.  
  699. ΓòÉΓòÉΓòÉ 3.1.4. Sample Code ΓòÉΓòÉΓòÉ
  700.  
  701. Sample code may be included with specific products in the LAN Systems Toolkit. 
  702. For more information, see the LAN Systems API Toolkit document in the Technical 
  703. References section. 
  704.  
  705. Redbook Sample Code:  3.5" Diskettes 
  706.  
  707. For additional information about the sample code, open the Developer Connection 
  708. Catalog and Sample Code icons. Then open the Redbook Sample Code icon and click 
  709. on the Extended Description button. 
  710.  
  711.  
  712. ΓòÉΓòÉΓòÉ 3.1.5. Service ΓòÉΓòÉΓòÉ
  713.  
  714. The Developer Connection for LAN Systems includes the following service 
  715. offerings: 
  716.  
  717. LAN Distance Service Pak 
  718. LAN Server 3.0 Service Pak 
  719. DOS LAN Support Program Service Pak 
  720. OS/2 NTS/2 Service Pak 
  721. AnyNet Service 
  722.  
  723. For additional information about the service offerings, open the Developer 
  724. Connection Catalog and LAN Systems Tools icons. Then open the LAN Systems 
  725. ServicePaks icon and click on the Extended Description button. 
  726.  
  727.  
  728. ΓòÉΓòÉΓòÉ 3.2. Books in the Developer Connection Browser ΓòÉΓòÉΓòÉ
  729.  
  730. The following references can be accessed online.  Open the Developer Connection 
  731. for LAN Systems icon and select The Developer Connection Browser. The online 
  732. books are contained in the following folders: 
  733.  
  734. o   Multiple-Protocol Transport Services Books 
  735. o   Customization, Installation, Distribution (CID) Books 
  736. o   LAN Server 4.0 Books 
  737. o   DCE Application Enabler Books 
  738. o   AnyNet/2 Books 
  739. o   NetView DM/2 Books 
  740. o   LAN Systems Information 
  741. o   Red Books 
  742. o   Technical References 
  743. o   White Papers 
  744.  
  745.  
  746. ΓòÉΓòÉΓòÉ 3.2.1. Multiple-Protocol Transport Services (MPTS) Books ΓòÉΓòÉΓòÉ
  747.  
  748. The following online books are in the MPTS Books folder: 
  749.  
  750. Multi-Protocol Transport Services - AnyNet for OS/2: Configuration Guide
  751. Multi-Protocol Transport Services - AnyNet for OS/2: Error Messages  and Problem Determination Guide
  752. Multi-Protocol Transport Services - AnyNet for OS/2: Programmer's Reference
  753.  
  754.  
  755. ΓòÉΓòÉΓòÉ 3.2.2. Customization, Installation, Distribution (CID) Books ΓòÉΓòÉΓòÉ
  756.  
  757. The following online books are in the Customization, Installation, Distribution 
  758. (CID) Books folder: 
  759.  
  760. CID-Enabled Applications
  761. CID Enablement Guidelines
  762. LAN Configuration, Installation, and Distribution Utility Guide
  763.  
  764.  
  765. ΓòÉΓòÉΓòÉ 3.2.3. LAN Server 4.0 Books ΓòÉΓòÉΓòÉ
  766.  
  767. The following online books are in the LAN Server 4.0 Books folder: 
  768.  
  769. LAN Server 4.0 Commands and Utilities
  770. LAN Server 4.0 DOS LAN Services and Window's User Guide
  771. LAN Server 4.0 LAN Requester User's Guide
  772. LAN Server 4.0 Network Administrator's Reference Vol. 1: Planning, Installation, and Configuration
  773. LAN Server 4.0 Network Administrator's Reference Vol. 2: Performance Tuning
  774. LAN Server 4.0 Network Administrator's Reference Vol. 3: Network Administrator Tasks
  775. LAN Server 4.0 Problem Determination Guide
  776. LAN Server 4.0 Programming Guide and Reference
  777. Network SignON Coordinator User's Guide
  778.  
  779.  
  780. ΓòÉΓòÉΓòÉ 3.2.4. DCE Application Enabler Books ΓòÉΓòÉΓòÉ
  781.  
  782. The DCE Application Enabler Books can be viewed only with the IBM Library 
  783. Read/2 book viewer.  If you already have the viewer installed, you can access 
  784. the following books directly from the DCE Application Enabler Books folder. For 
  785. information about how to install BookManager, see the BookManager Books 
  786. section. 
  787.  
  788. IBM DCE Application Enabler for OS/2 Application Development Guide (A3U1XMST)
  789. IBM DCE Application Enabler for OS/2 Getting Started (A3U1YMST)
  790. IBM DCE Application Enabler for OS/2 Administration Guide and Reference (A3U20MST)
  791. IBM DCE Application Enabler for OS/2 Application Development Reference (A3U21MST)
  792.  
  793.  
  794. ΓòÉΓòÉΓòÉ 3.2.5. AnyNet/2 Books ΓòÉΓòÉΓòÉ
  795.  
  796. The AnyNet/2 Books can be viewed only with the IBM Library Read/2 book viewer. 
  797. If you already have the viewer installed, you can access the following books 
  798. directly from the AnyNet/2 Books folder. For information about how to install 
  799. BookManager, see the BookManager Books section in this document. 
  800.  
  801. AnyNet/2 Version 2.0 SNA over TCP/IP (IPMC0MST)
  802. AnyNet/2 Version 2.0 Sockets over SNA (IPNCOMST)
  803. AnyNet/2 Sockets over SNA Gateway Version 1.1 (IPLC1MST)
  804. AnyNet/2 IPX for SNA Gateway Version 1.1
  805.  
  806.  
  807. ΓòÉΓòÉΓòÉ 3.2.6. NetView DM/2 Books ΓòÉΓòÉΓòÉ
  808.  
  809. The NetView DM/2 Books can be viewed only with the IBM Library Read/2 book 
  810. viewer.  If you already have the viewer installed, you can access the following 
  811. books directly from the AnyNet/2 Books folder. For information about how to 
  812. install BookManager, see the BookManager Books section in this document. 
  813.  
  814. NetView DM/2 Quick Help for DOS/Windows
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 3.2.7. LAN Systems Information ΓòÉΓòÉΓòÉ
  818.  
  819. The following online documents are in the LAN Systems Information folder : 
  820.  
  821. Client/Server Survival Guide (excerpts)
  822. LAN Server REXX Utility Readme
  823. LAN Server System Builders Product List
  824. LAN Software Buyer's Guide
  825. LAN Systems API Implentation Guidelines
  826. LAN Systems API Roadmap
  827. LAN Systems News
  828. Ready! for IBM LAN
  829. Tested and Approved for IBM LAN
  830. LAN Systems CSD Newsletter
  831. SOMobjects README
  832.  
  833.  
  834. ΓòÉΓòÉΓòÉ 3.2.8. Red Books ΓòÉΓòÉΓòÉ
  835.  
  836. The Red Books can be viewed only with the IBM Library Read/2 book viewer.  If 
  837. you already have the viewer installed, you can access the following books 
  838. directly from the Red Books folder. For information about how to install 
  839. BookManager, see the BookManager Books section. 
  840.  
  841. Experiences with the IBM OS/2 LAN Server Version 3.0 New Functions (GG243959)
  842. The IBM OS/2 LAN Server Version 3.0 System Recovery Considerations (GG244043)
  843. Developing DCE Applications for AIX, OS/2, and Windows (GG244090)
  844. OSF DCE for AIX, OS/2, and DOS Windows Overview (GG244144)
  845. IBM LAN Distance Configuration and Customization Guide (GG244158)
  846. Understanding IBM OS/2 LAN Server Ultimedia Version 1.0 (GG244224)
  847. SOMobjects: A Practical Introduction to SOM and DSOM (GG244357)
  848. Migrating to LAN Server from NetWare (GG244388)
  849.  
  850.  
  851. ΓòÉΓòÉΓòÉ 3.2.9. Technical References ΓòÉΓòÉΓòÉ
  852.  
  853. The following online books are in the Technical References folder: 
  854.  
  855. LAN Systems: DCE Concepts
  856. DatagLANce User's Guide
  857. DCE Concepts
  858. LAN Systems API Toolkit
  859. MakeDCE - DCE Application Developer Tools User's Guide
  860. IBM Advanced NDIS (ANDIS)
  861. IBM LAN Distance Advanced Guide
  862. IBM LAN Distance Dial Services Interface Programming Guide
  863. IBM LAN Distance Remote Guide
  864. IBM LAN Server REXX Utility DLL
  865. MakeDCE User's Guide
  866. LAN Technical Reference: IEEE 802.2 and NetBIOS APIs (AFA0CNTL)
  867.  
  868.  
  869. ΓòÉΓòÉΓòÉ 3.2.10. White Papers ΓòÉΓòÉΓòÉ
  870.  
  871. The following online documents are in the White Papers folder: 
  872.  
  873. Distributed Performance of IBM DCE for OS/2
  874. IBM DCE Client for Windows Performance
  875. IBM DCE for OS/2: Key Function Performance
  876. IBM DCE Heterogeneous Enterprise Performance
  877. IBM Network Door/2
  878. IBM OS/2 DCE: Multiuser Application Performance
  879. LAN Server Ultimedia
  880. Memory Leaks
  881. Top Tips for LAN Server 3.0
  882. Before/After Metaclasses in SOM
  883. IBM's System Object Model (SOM)
  884. LAN Server 4.0 Performance
  885. LAN Server for AIX
  886. SOM and COM Compared
  887. SOM and COM Developer's Perspective
  888.  
  889.  
  890. ΓòÉΓòÉΓòÉ 3.3. BookManager Books ΓòÉΓòÉΓòÉ
  891.  
  892. Many of the books stored on the Developer Connection for LAN Systems are 
  893. available in softcopy BookManager format. These books can be viewed only with 
  894. the IBM Library Read/2 book viewer. If you do not already have the viewer 
  895. installed, it is on the Developer Connection for LAN Systems under LAN Systems 
  896. Tools.  During installation, you must specify the boot drive as the install 
  897. directory in order to open books directly from The Developer Connection 
  898. Browser. 
  899.  
  900.  
  901. ΓòÉΓòÉΓòÉ 3.4. PostScript Books ΓòÉΓòÉΓòÉ
  902.  
  903. The following technical references are available in PostScript format. 
  904.  
  905. o   Encina for AIX 
  906.  
  907.     The following books are available for you to print after you install one of 
  908.     the AIX development tools. 
  909.  
  910.         Encina Application Development Guide
  911.         Encina Base Reference
  912.         Encina Server Reference
  913.         Encina Transactional-C Programmer's Guide and Reference
  914.         Encina Server Administration: Programmer's Guide and Reference
  915.         Encina PPC Executive Programmer's Reference
  916.         Encina SFS Programmer's Guide and Reference
  917.         Encina Monitor Programmer's Guide and Reference
  918.         MakeDCE User's Guide
  919.         AIX DCE Application Development Guide
  920.         AIX DCE Application Development Reference
  921.  
  922.  
  923. o   SOMobjects Toolkit Publications 
  924.  
  925.     The following books are available for you to print after you install the 
  926.     SOMobjects Toolkit. 
  927.  
  928.         SOMobjects Developer Toolkit Users Guide
  929.         SOMobjects Developer Toolkit Programmers Reference Manual
  930.         SOMobjects Developer Toolkit Collection Classes Reference Manual
  931.         SOMobjects Developer Toolkit Emitter Framework Guide and Reference
  932.         SOMobjects Developer Toolkit Installation/Configuration Guide
  933.  
  934.  
  935. ΓòÉΓòÉΓòÉ 4. Base Operating System Services ΓòÉΓòÉΓòÉ
  936.  
  937. In general, base operating system APIs are specific to the local operating 
  938. system and manage nondistributed resources such as processors, memory, and 
  939. local devices.  Base operating system APIs include functions such as memory 
  940. management, event handling, and language services.  DCE currently provides APIs 
  941. for threads.  These particular APIs provide some of the functions needed in a 
  942. client/server environment. 
  943.  
  944. For more information on the base operating system APIs, see: 
  945.  
  946. Threads 
  947.  
  948. Internationalization 
  949.  
  950.  
  951. ΓòÉΓòÉΓòÉ 4.1. Threads ΓòÉΓòÉΓòÉ
  952.  
  953. Threads can be used to create efficient, fine-grained, concurrent programs. 
  954. Each waiting event can be assigned to a thread that is blocked until the event 
  955. occurs.  In the meantime, other threads can use the processor cycles 
  956. productively to perform useful work.  The DCE Threads API provides the threads 
  957. functionality needed in a DCE environment. 
  958.  
  959. For more information, see DCE Threads APIs 
  960.  
  961.  
  962. ΓòÉΓòÉΓòÉ 4.1.1. DCE Threads APIs ΓòÉΓòÉΓòÉ
  963.  
  964. This portable thread package runs in the user space and includes wrapper 
  965. routines to translate calls to the operating system threads. Threads are an 
  966. essential component of client-server applications and are used by other DCE 
  967. components. The DCE thread APIs are based on the POSIX 1003.4a draft 4 
  968. (pthreads standard).  The DCE threads also support multiprocessor environments 
  969. using shared memory.  DCE provides a semaphore service that helps threads 
  970. synchronize their access to shared memory. 
  971.  
  972. The DCE Threads APIs are divided into the following functional groups: 
  973.  
  974. o   General threads routines 
  975. o   Routines that implicitly perform threads initialization 
  976. o   Attributes object routines 
  977. o   Mutex routines 
  978. o   Condition variable routines 
  979. o   Thread-specific data routines 
  980. o   Cancellation routines 
  981. o   Priority and scheduling routines 
  982. o   Cleanup routines 
  983. o   Exceptions routine 
  984.  
  985.  
  986. ΓòÉΓòÉΓòÉ 4.1.1.1. General threads routines ΓòÉΓòÉΓòÉ
  987.  
  988. The following lists classify the Threads routines: 
  989.  
  990. pthread_create                 Creates a thread. 
  991. pthread_delay_np               Causes a thread to wait for a period of time. 
  992. pthread_detach                 Makes a thread for deletion. 
  993. pthread_equal                  Compares thread IDs. 
  994. pthread_exit                   Terminates the calling thread. 
  995. pthread_join                   Causes the calling thread to wait for the 
  996.                                termination of a specified thread. 
  997. pthread_once                   Calls an initialization routine to be executed 
  998.                                only once. 
  999. pthread_self                   Obtains the identifier of the current thread. 
  1000. pthread_yield                  Notifies the scheduler that the current thread 
  1001.                                will release its processor to other threads of 
  1002.                                the same or higher priority. 
  1003.  
  1004.  
  1005. ΓòÉΓòÉΓòÉ 4.1.1.2. Routines that implicitly perform threads initialization ΓòÉΓòÉΓòÉ
  1006.  
  1007. pthread_attr_create            Creates a mutual exclusion (mutex) attributes 
  1008.                                object. 
  1009. pthread_create                 Creates a thread. 
  1010. pthread cond_int               Creates a condition variable. 
  1011. pthread_condattr_create        Creates a condition variable attributes object. 
  1012. pthread_delay_np               Causes a thread to wait for a period of time. 
  1013. pthread_getprio                Obtains the scheduling priority attribute. 
  1014. pthread_getsched               Obtains the scheduling policy attribute. 
  1015. pthread_keycreate              Generates a unique thread-specific data key 
  1016.                                value. 
  1017. pthread_mutex_init             Creates a mutex. 
  1018. pthread_mutexattr_create       Creates a mutex attributes object. 
  1019. pthread_once                   Calls an initialization routine to be executed 
  1020.                                only once. 
  1021. pthread_self                   Obtains the identifier of the current thread. 
  1022. pthread_setasynccancel         Enables or disables the current thread 
  1023.                                asynchronous canceling ability. 
  1024. pthread_setcancel              Enables or disables the current thread general 
  1025.                                canceling ability. 
  1026. pthread_setprio                Changes the scheduling policy attribute. 
  1027. pthread_testcancel             Requests delivery of a pending cancel. 
  1028.  
  1029.  
  1030. ΓòÉΓòÉΓòÉ 4.1.1.3. Attributes object routines ΓòÉΓòÉΓòÉ
  1031.  
  1032. pthread_attr_create            Creates a thread attributes object. 
  1033. pthread_attr_delete            Deletes a thread attributes object. 
  1034. pthread_attr_getinheritsched   Obtains the inherit scheduling attribute. 
  1035. pthread_attr_getpio            Obtains the scheduling priority attribute. 
  1036. pthread_attr_getsched          Obtains the scheduling policy attribute. 
  1037. pthread_attr_getstacksize      Obtains the stacksize attribute. 
  1038. pthread_attr_setinheritsched   Changes the inherit scheduling attribute. 
  1039. pthread_attr_setprio           Changes the scheduling priority attribute. 
  1040. pthread_attr_setsched          Changes the scheduling policy attribute. 
  1041. pthread_attr_setstacksize      Changes the stacksize attribute. 
  1042. pthread_condattr_create        Creates a condition variable attributes object. 
  1043. pthread_condattr_delete        Deletes a condition variable attributes object. 
  1044. pthread_mutexattr_create       Creates a mutex attributes object. 
  1045. pthread_mutexattr_delete       Deletes a mutex attributes object. 
  1046. pthread_mutexattr_getkind_np   Obtains the mutex type attribute. 
  1047. pthread_mutexattr_setkind_np   Changes the mutex type attribute. 
  1048.  
  1049.  
  1050. ΓòÉΓòÉΓòÉ 4.1.1.4. Mutex routines ΓòÉΓòÉΓòÉ
  1051.  
  1052. pthread_lock_global_np         Locks a global mutex. 
  1053. pthread_mutex_destroy          Deletes a mutex. 
  1054. pthread_mutex_init             Creates a mutex. 
  1055. pthread_mutex_lock             Locks a mutex and waits if the mutex is already 
  1056.                                locked. 
  1057. pthread_mutex_trylock          Locks a mutex and returns if the mutex is 
  1058.                                already locked. 
  1059. pthread_mutex_unlock           Unlocks a mutex. 
  1060. pthread_unlock_global_np       Unlocks a global mutex. 
  1061.  
  1062.  
  1063. ΓòÉΓòÉΓòÉ 4.1.1.5. Condition variable routines ΓòÉΓòÉΓòÉ
  1064.  
  1065. pthread_cond_broadcast         Wakes all threads waiting on a condition 
  1066.                                variable. 
  1067. pthread_cond_destroy           Deletes a condition variable. 
  1068. pthread_cond_init              Creates a condition variable. 
  1069. pthread_cond_signal            Wakes one thread waiting on a condition 
  1070.                                variable. 
  1071. pthread_cond_timedwait         Causes a thread to wait for a specified period 
  1072.                                of time for a condition variable to be signaled 
  1073.                                or broadcast. 
  1074. pthread_cond_wait              Causes a thread to wait for a condition variable 
  1075.                                to be signaled or broadcast. 
  1076. pthread_get_expiration_np      Obtains a value representing a desired 
  1077.                                expiration time. 
  1078.  
  1079.  
  1080. ΓòÉΓòÉΓòÉ 4.1.1.6. Thread-specific data routines ΓòÉΓòÉΓòÉ
  1081.  
  1082. pthread_getspecific            Obtains the thread-specific data associated with 
  1083.                                the specified key. 
  1084. pthread_keycreate              Generates a unique thread-specific data key 
  1085.                                value. 
  1086. pthread_setspecific            Sets the thread-specific data associated with 
  1087.                                the specified key. 
  1088.  
  1089.  
  1090. ΓòÉΓòÉΓòÉ 4.1.1.7. Threads cancellation routines ΓòÉΓòÉΓòÉ
  1091.  
  1092. pthread_cancel                 Allows a thread to request termination. 
  1093. pthread_setasynccancel         Sets the current thread's asynchronous canceling 
  1094.                                ability. 
  1095. pthread_setcancel              Sets the current thread's general canceling 
  1096.                                ability. 
  1097. pthread_testcancel             Requests delivery of a pending cancel. 
  1098.  
  1099.  
  1100. ΓòÉΓòÉΓòÉ 4.1.1.8. Threads priority and scheduling routines ΓòÉΓòÉΓòÉ
  1101.  
  1102. pthread_getprio                Obtains the current priority of a thread. 
  1103. pthread_getscheduler           Obtains the current scheduling policy of a 
  1104.                                thread. 
  1105. pthread_setprio                Changes the current priority of a thread. 
  1106. pthread_setscheduler           Changes the current scheduling policy and 
  1107.                                priority of a thread. 
  1108.  
  1109.  
  1110. ΓòÉΓòÉΓòÉ 4.1.1.9. Threads cleanup routines ΓòÉΓòÉΓòÉ
  1111.  
  1112. pthread_cleanup_pop            Removes a cleanup handler from the stack. 
  1113. pthread_cleanup_push           Establishes a cleanup handler. 
  1114.  
  1115.  
  1116. ΓòÉΓòÉΓòÉ 4.1.1.10. Exceptions in DCE threads ΓòÉΓòÉΓòÉ
  1117.  
  1118. exceptions                     Describes exception handling in DCE threads. 
  1119.  
  1120.  
  1121. ΓòÉΓòÉΓòÉ 4.2. Internationalization ΓòÉΓòÉΓòÉ
  1122.  
  1123. Internationalization of application programs consists of the ability to support 
  1124. features such as the characters of the native language (for instance, keyboards 
  1125. and presentation), as well as culture-specific information (for instance, time 
  1126. and date formats and collation/sorting), and user-visible text in the user's 
  1127. native language. 
  1128.  
  1129. For more information, see Internationalization (I18N) APIs. 
  1130.  
  1131.  
  1132. ΓòÉΓòÉΓòÉ 4.2.1. Internationalization (I18N) APIs ΓòÉΓòÉΓòÉ
  1133.  
  1134. Specific APIs for I18N are listed according to the type of function, such as 
  1135. locale management and code set conversion.  If the char data type is used, the 
  1136. multibyte APIs should be used.  If locale information is needed, or if string 
  1137. handling includes insertion, deletion, truncation, or appending, the wchar_t 
  1138. APIs and data type should be used. Whenever wchar_t is used, it is necessary to 
  1139. convert from multibyte characters to wide characters using the Convert mb<->wc 
  1140. APIs. 
  1141.  
  1142. See the LAN Systems API Implementation Guidelines for further information. 
  1143.  
  1144. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1145. ΓöéType of        ΓöéMultibyte      Γöéwchar_t        Γöé
  1146. Γöéfunction :C.   Γöé               Γöé               Γöé
  1147. ΓöéSBCS           Γöé               Γöé               Γöé
  1148. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1149. ΓöéLocale         Γöésetlocale, nl_ Γöé               Γöé
  1150. ΓöéManagement     Γöélanginfo,      Γöé               Γöé
  1151. Γöé               Γöélocaleconv     Γöé               Γöé
  1152. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1153. ΓöéConvert, mb< - Γöémbtowc,        Γöéwctomb,        Γöé
  1154. Γöé>wc            Γöémbstowcs       Γöéwcstombs       Γöé
  1155. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1156. ΓöéClassification Γöé               Γöéiswalpha, isw* Γöé
  1157. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1158. ΓöéCase Mapping   Γöé               Γöétowlower,      Γöé
  1159. Γöé               Γöé               Γöétowupper       Γöé
  1160. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1161. ΓöéTime/Monetary  Γöéstrftime,      Γöéwcsftime       Γöé
  1162. Γöé               Γöéstrptime,      Γöé               Γöé
  1163. Γöé               Γöéstrfmon        Γöé               Γöé
  1164. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1165. ΓöéString Copy    Γöéstrcat, strcpy Γöéwcscat, wcsncatΓöé
  1166. Γöé               Γöé               Γöé, wcscpy,      Γöé
  1167. Γöé               Γöé               Γöéwcsncpy        Γöé
  1168. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1169. ΓöéString Collate Γöéstrcoll,       Γöéwcscoll,       Γöé
  1170. Γöé               Γöéstrxfrm        Γöéwcsxfrm        Γöé
  1171. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1172. ΓöéString Length  Γöéstrlen         Γöéwcslen         Γöé
  1173. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1174. ΓöéString Search  Γöé               Γöéwcschr, wcscspnΓöé
  1175. Γöé               Γöé               Γöé, wcspbrk,     Γöé
  1176. Γöé               Γöé               Γöéwcsrchr, wcsspnΓöé
  1177. Γöé               Γöé               Γöé, wcstok       Γöé
  1178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1179. ΓöéIO Display     Γöé               Γöéwcwidth,       Γöé
  1180. ΓöéWidth          Γöé               Γöéwcswidth       Γöé
  1181. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1182. ΓöéIO Printf      Γöéprintf, vprintfΓöéprintf, vprintfΓöé
  1183. Γöé               Γöé, sprintf,     Γöé, sprintf,     Γöé
  1184. Γöé               Γöévsprintf,      Γöévsprintf,      Γöé
  1185. Γöé               Γöéfprintf,       Γöéfprintf,       Γöé
  1186. Γöé               Γöévfprintf       Γöévfprintf       Γöé
  1187. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1188. ΓöéIO Scanf       Γöéscanf, sscanf, Γöéscanf, sscanf, Γöé
  1189. Γöé               Γöéfscanf         Γöéfscanf         Γöé
  1190. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1191. ΓöéIO Character   Γöé               Γöéfgetwc, fgetws,Γöé
  1192. Γöé               Γöé               Γöéfputwc, fputws Γöé
  1193. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1194. ΓöéMessage        Γöécatopen,       Γöé               Γöé
  1195. Γöé               Γöécatgets,       Γöé               Γöé
  1196. Γöé               Γöécatclose       Γöé               Γöé
  1197. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1198. ΓöéCode Set       Γöéiconv_open,    Γöé               Γöé
  1199. ΓöéConversion     Γöéiconv, iconv_  Γöé               Γöé
  1200. Γöé               Γöéclose          Γöé               Γöé
  1201. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1202.  
  1203.  
  1204. ΓòÉΓòÉΓòÉ 5. Distribution Services ΓòÉΓòÉΓòÉ
  1205.  
  1206. Distribution services assist in the communication between parts of distributed 
  1207. application and resource managers by providing common functions, such as: 
  1208.  
  1209. Directory 
  1210.  
  1211. Security 
  1212.  
  1213. Time 
  1214.  
  1215. Transaction 
  1216.  
  1217.  
  1218. ΓòÉΓòÉΓòÉ 5.1. Directory ΓòÉΓòÉΓòÉ
  1219.  
  1220. The Directory service stores the names and attributes of all the resources in 
  1221. the network.  Network resources may be logical devices such as queues or 
  1222. physical devices such as printers and servers.  The Directory service provides 
  1223. a set of services and protocols accessed by way of a set of interfaces. 
  1224.  
  1225. For more information about directory-related APIs, see: 
  1226.  
  1227. o   LAN Server Directory APIs 
  1228. o   DCE Directory APIs 
  1229. o   Future Directions for Directory 
  1230.  
  1231.  
  1232. ΓòÉΓòÉΓòÉ 5.1.1. LAN Server Directory APIs ΓòÉΓòÉΓòÉ
  1233.  
  1234. LAN Server provides a directory at the domain level.  This directory is stored 
  1235. at the domain controller and replicated to other servers in the domain to 
  1236. provide a single system image across all servers in the domain. LAN Server 
  1237. includes: 
  1238.  
  1239. o   Aliases 
  1240.  
  1241.     Aliases are persistent, shared resource definitions that provide location 
  1242.     transparency and permanent storage of shared resource attributes. 
  1243.  
  1244. o   Application definitions 
  1245.  
  1246.     An application definition is a pointer to an executable file that resides 
  1247.     on a server or on a client's local disk.  The definition specifies 
  1248.     attributes, such as resources to connect to when the application is 
  1249.     started, parameters to pass to the application, and a working directory. 
  1250.     These applications can be assigned to a user application selector so that 
  1251.     they disply in a folder on the user's desktop when the user logs on. 
  1252.  
  1253. o   Users, groups, and their attributes 
  1254.  
  1255.     For more information on users and groups, refer to LAN Server Registry 
  1256.     APIs. 
  1257.  
  1258. The following categories of LAN Server APIs are directory-related: 
  1259.  
  1260. o   NetAlias 
  1261. o   NetApp 
  1262.  
  1263.  
  1264. ΓòÉΓòÉΓòÉ 5.1.1.1. NetAlias ΓòÉΓòÉΓòÉ
  1265.  
  1266. The functions in the Alias category examine or modify aliases.  An alias is a 
  1267. nickname for a file, print, or serial device.  An alias must be unique across 
  1268. the entire domain.  An alias definition contains information to create a 
  1269. netname and initiate resource sharing.  This information enables LAN Server to 
  1270. share the aliased resource automatically at server startup or at user request. 
  1271.  
  1272. The following APIs are in the Alias category: 
  1273.  
  1274. Net32AliasAdd           Creates an alias definition. 
  1275. Net32AliasDel           Deletes an alias definition. 
  1276. Net32AliasEnum          Returns information about all aliases of a specified 
  1277.                         type. 
  1278. Net32AliasGetInfo       Retrieves information about the specified alias. 
  1279. Net32AliasSetInfo       Modifies information for an alias. 
  1280.  
  1281.  
  1282. ΓòÉΓòÉΓòÉ 5.1.1.2. NetApp ΓòÉΓòÉΓòÉ
  1283.  
  1284. The functions of the Application category manage information about network 
  1285. applications. 
  1286.  
  1287. There are two types of data associated with applications: fixed data and list 
  1288. data.  Fixed data includes the name of the application, the command line used 
  1289. to invoke the application, the application location (local or remote, alias or 
  1290. drive, and path), the name of a working directory (if any) associated with the 
  1291. application, and so on. 
  1292.  
  1293. List data consists of a set of zero or more structures that the application 
  1294. requires.  For example, an application might require a resource containing 
  1295. certain data files.  Redirections to these resources are made when the 
  1296. application is invoked.  The redirections are deleted when the application 
  1297. stops.  An application always has fixed data associated with it; it may or may 
  1298. not have list data associated with it. 
  1299.  
  1300. There are three application types: 
  1301.  
  1302. o   Public DOS applications are available to users logged on to DOS LAN 
  1303.     Requesters and to OS/2 LAN Requester users. 
  1304.  
  1305. o   Public OS/2 applications are available only to users logged on at OS/2 LAN 
  1306.     Requesters. 
  1307.  
  1308. o   Private OS/2 applications are set up by individual users for their own use 
  1309.     and are not available to other users. 
  1310.  
  1311. Program locations can be local or remote.  If the location is local, the 
  1312. executable file used to start the application must be installed on each 
  1313. requester where it runs.  If the location is remote, the application is stored 
  1314. on a server. 
  1315.  
  1316. The following APIs are part of the Application category: 
  1317.  
  1318. Net32AppAdd             Adds an application definition.  When a private 
  1319.                         application is added, the domain control database 
  1320.                         subdirectories must exist for the user.  The 
  1321.                         Net32UserDCDBInit API initializes these subdirectories 
  1322.                         and files. 
  1323. Net32AppDel             Deletes an application definition. 
  1324. Net32AppEnum            Returns information about all applications of a 
  1325.                         specified type.  If both public and private 
  1326.                         applications are to be enumerated, the return buffer 
  1327.                         contains public applications followed by private 
  1328.                         applications. 
  1329. Net32AppGetInfo         Retrieves information about an application. 
  1330. Net32AppSetInfo         Modifies information about an application. 
  1331.  
  1332.  
  1333. ΓòÉΓòÉΓòÉ 5.1.2. DCE Directory APIs ΓòÉΓòÉΓòÉ
  1334.  
  1335. DCE provides international standards for naming interfaces and services. The 
  1336. X/Open Directory Service (XDS) interface provides interfaces for reading, 
  1337. adding, deleting, and modifying directory entries; attribute manipulation such 
  1338. as comparison and search; and enumeration of directory entries and its 
  1339. subordinates. 
  1340.  
  1341. The DCE Name Service Interface (NSI) and XDS interfaces are X/Open standards 
  1342. and part of X/Open's Distributed Computing Service profile.  For more 
  1343. information on the NSI, refer to RPC Name Service Interface. 
  1344.  
  1345. The X/Open Object Management (XOM) API provides an interface to manage complex 
  1346. information objects.  These information objects belong to classes and have 
  1347. attributes associated with them.  There are two distinct kinds of classes and 
  1348. attributes: directory and object management (OM). 
  1349.  
  1350. The directory classes and attributes defined for the XDS API correspond to 
  1351. entries that make up the objects in the directory.  These classes and 
  1352. attributes are defined in the X.500 directory standard and by additional CDS 
  1353. extensions created for DCE.  Other APIs, such as the X.400 Application 
  1354. Interface, which is the application interface for the industry standard X.400 
  1355. electronic mail service, define their own set of objects in terms of classes 
  1356. and attributes.  OM classes and OM attributes are used to model the objects in 
  1357. the directory. 
  1358.  
  1359. The following categories of DCE APIs are directory-related: 
  1360.  
  1361. o   XDS 
  1362. o   XOM 
  1363.  
  1364.  
  1365. ΓòÉΓòÉΓòÉ 5.1.2.1. XDS ΓòÉΓòÉΓòÉ
  1366.  
  1367. The XDS interface is available for use with the Cell Directory Service (CDS) 
  1368. and the X.500 directory service. DCE has multiple namespaces: 
  1369.  
  1370. o   A global namespace (either X.500 or Domain Name System) to catalog cell 
  1371.     names. 
  1372.  
  1373. o   A cell namespace to contain server location information, profile 
  1374.     information for the cell, and a list of hosts that make up that cell. 
  1375.  
  1376. o   A security namespace to hold user, group, account, and policy information. 
  1377.  
  1378. o   A file namespace to hold file data. 
  1379.  
  1380. The following APIs perform XDS functions: 
  1381.  
  1382. ds_abandon              Abandons the result of a pending asynchronous 
  1383.                         operation. 
  1384. ds_add_entry            Adds an entry to the directory information tree (DIT). 
  1385. ds_bind                 Opens a session with the Directory. 
  1386. ds_compare              Compares a purported attribute value with the attribute 
  1387.                         value stored in the directory for a particular entry. 
  1388. ds_initialize           Initializes the XDS interface. 
  1389. ds_list                 Lists the immediate subordinates of a particular 
  1390.                         directory entry. 
  1391. ds_modify_entry         Performs an atomic modification on a directory entry. 
  1392. ds_modify_rdn           Changes the relative distinguished name (RDN) of a leaf 
  1393.                         entry. 
  1394. ds_read                 Queries information on an entry by name. 
  1395. ds_remove_entry         Removes an entry from the DIT. 
  1396. ds_search               Finds entries of interest in a part of the DIT. 
  1397. ds_shutdown             Shuts down the interface. 
  1398. ds_unbind               Unbinds from a directory session. 
  1399. ds_version              Negotiates features of the interface and service. 
  1400.  
  1401. Note:  Some of these operations are not supported with the CDS. 
  1402.  
  1403.  
  1404. ΓòÉΓòÉΓòÉ 5.1.2.2. XOM ΓòÉΓòÉΓòÉ
  1405.  
  1406. The XOM API provides a common information architecture so that the information 
  1407. objects defined for any API that conforms to this architectural model can be 
  1408. shared.  Different application service interfaces can communicate using this 
  1409. common way of defining objects by means of workspaces.  A workspace is a common 
  1410. work area where objects defined by a service can be accessed. The following 
  1411. APIs perform XOM functions: 
  1412.  
  1413. om_copy                 Creates a new private object that is an exact but 
  1414.                         independent copy of an existing private object. 
  1415. om_copy_value           Places or replaces a string in one private object with 
  1416.                         a copy of a string in another private object. 
  1417. om_create               Creates a new private object that is an instance of a 
  1418.                         particular class. 
  1419. om_delete               Deletes a private or service-generated object. 
  1420. om_get                  Gets copies of attribute values from a private object. 
  1421. om_instance             Tests an object class. 
  1422. om_put                  Puts attribute values into a private object. 
  1423. om_read                 Reads a segment of a string in a private object. 
  1424. om_remove               Removes attribute values from a private object. 
  1425. om_write                Writes a segment of a string into a private object. 
  1426.  
  1427.  
  1428. ΓòÉΓòÉΓòÉ 5.1.3. Future Directions for Directory ΓòÉΓòÉΓòÉ
  1429.  
  1430. In LAN Server 4.0, alias definitions and application definitions are stored in 
  1431. the domain control database (DCDB).  In future versions, this information is 
  1432. merged into the DCE cell directory service (CDS). Installation utilities 
  1433. automate this migration, and synchronization daemons build and maintain a 
  1434. replica of the DCDB information to preserve interoperability of downlevel 
  1435. clients and servers in the domain. 
  1436.  
  1437. The information in CDS can be manipulated using the DCE APIs (XDS and XOM), but 
  1438. LAN Server's NetAlias and NetApp APIs continue to be provided on LAN Server 
  1439. clients to allow existing applications that use these APIs to continue to work 
  1440. in this environment.  For integrated clients, the LAN Server APIs are mapped 
  1441. directly onto CDS primitives.  For basic clients and for legacy LAN Server 
  1442. clients, the APIs are directed to a domain controller, which maps them onto 
  1443. corresponding CDS APIs and sends them on to the CDS server. 
  1444.  
  1445. Hints: 
  1446.  
  1447. o   The DCE Directory Service is a very versatile database which can be used to 
  1448.     store and retrieve all kinds of data.  The main use of a directory service 
  1449.     for distributed applications is to provide a standard facility by which 
  1450.     servers can advertise their location to clients.  The NSI is tailored to 
  1451.     this need and therefore simpler to use.  The XDS interface is for 
  1452.     developers who need access to the full functionality of DCE Directory 
  1453.     Service as a generic directory service. 
  1454.  
  1455. o   Many companies and standards organizations are converging on the X/Open XFN 
  1456.     as a procedural interface to directory services and the OMG Naming Service 
  1457.     interface as an Object Oriented interface.  Both interfaces will be 
  1458.     provided in future LAN Systems offerings, built as frameworks to allow 
  1459.     developers to map the interfaces to existing directory stores including LAN 
  1460.     Server 4.0 Aliases and Applications and DCE Cell Directory Service. 
  1461.     Distributed SOM naming and directory services are integrated in this 
  1462.     timeframe. 
  1463.  
  1464.  
  1465. ΓòÉΓòÉΓòÉ 5.2. Security ΓòÉΓòÉΓòÉ
  1466.  
  1467. Security is concerned with identification and authentication of users, access 
  1468. control to resource, integrity of information, confidentiality of information, 
  1469. audit facilities, and management of security information. 
  1470.  
  1471. For more information on security-related APIs, see: 
  1472.  
  1473. o   Authentication 
  1474. o   Access Control 
  1475. o   Registry 
  1476. o   Auditing 
  1477.  
  1478.  
  1479. ΓòÉΓòÉΓòÉ 5.2.1. Authentication ΓòÉΓòÉΓòÉ
  1480.  
  1481. Authentication provides a way for clients and servers to validate each other's 
  1482. identities. 
  1483.  
  1484. For more information about authentication APIs, see: 
  1485.  
  1486. o   LAN Server Authentication APIs 
  1487. o   DCE Authentication APIs 
  1488. o   Network SignON Coordinator Authentication API 
  1489. o   Future Directions for Authentication 
  1490.  
  1491.  
  1492. ΓòÉΓòÉΓòÉ 5.2.1.1. LAN Server Authentication APIs ΓòÉΓòÉΓòÉ
  1493.  
  1494. User Profile Management (UPM) provides a set of user and group validation and 
  1495. management functions that help control access to information.  User IDs and 
  1496. optional passwords are used to regulate data access.  These IDs and passwords 
  1497. are assigned by a user with administrative authority.  The following UPM APIs 
  1498. in the Authentication category: 
  1499.  
  1500. U32EULGN                Logs a user onto the system. 
  1501. U32EULGF                Logs a user off the system. 
  1502. U32ELOCL                Invokes UPM to display a local logon window to allow 
  1503.                         users to enter their user IDs and passwords to perform 
  1504.                         a local logon to the system. 
  1505. U32ELOCU                Invokes UPM to retrieve an ID of a user who has already 
  1506.                         logged on to the system as a local user. 
  1507. U32EUSRL                Returns a list of logged-on user IDs. 
  1508.  
  1509. UPM APIs used in association with the following LAN Server API provide the 
  1510. authentication services needed in a LAN Server environment: 
  1511.  
  1512. Net32WkstaGetInfo       Returns configuration information about a requester. 
  1513.                         For authentication, this API determines the identity of 
  1514.                         the user logged on to a requester. 
  1515.  
  1516.  
  1517. ΓòÉΓòÉΓòÉ 5.2.1.2. DCE Authentication APIs ΓòÉΓòÉΓòÉ
  1518.  
  1519. The DCE Authentication APIs communicate with a security server to establish or 
  1520. change principal login context.  A login context contains the information 
  1521. necessary for a principal to qualify for (although not necessarily be granted) 
  1522. access to network services. A login context normally includes the following 
  1523. information: 
  1524.  
  1525. o   Identity context information concerning the principal. 
  1526.  
  1527. o   The context state (that is, whether the authentication service has 
  1528.     validated the context or not). 
  1529.  
  1530. o   The source of authentication.  (It may originate from the network 
  1531.     authentication service, or locally, if the network service is unavailable.) 
  1532.  
  1533. The following Login APIs are in the Authentication category: 
  1534.  
  1535. sec_login_certify_identity        Certifies the network authentication service. 
  1536. sec_login_export_context          Creates an exportable login context. 
  1537. sec_login_free_net_info           Frees storage allocated for principal network 
  1538.                                   information. 
  1539. sec_login_get_current_context     Returns a handle to the current login 
  1540.                                   context. 
  1541. sec_login_get_expiration          Returns the ticket-granting ticket lifetime 
  1542.                                   for an authenticated identity. 
  1543. sec_login_get_groups              Returns the group set from a login context. 
  1544. sec_login_get_pwent               Returns a password-style entry for a login 
  1545.                                   context. 
  1546. sec_login_import_context          Imports a login context. 
  1547. sec_login_init_first              Initializes the default context. 
  1548. sec_login_inquire_net_info        Returns principal network information. 
  1549. sec_login_newgroups               Changes the group list for a login context. 
  1550. sec_login_purge_context           Destroys a login context and frees its 
  1551.                                   storage. 
  1552. sec_login_refresh_identity        Refreshes an authenticated identity for a 
  1553.                                   login context 
  1554. sec_login_release_context         Frees storage allocated for a login context. 
  1555. sec_login_set_context             Creates network credentials for a login 
  1556.                                   context. 
  1557. sec_login_setup_first             Sets up the default network context. 
  1558. sec_login_setup_identity          Sets up the user network identity. 
  1559. sec_login_valid_and_cert_ident    Validates and certifies a login context. 
  1560. sec_login_valid_from_keytable     Attempts to validate a login context using 
  1561.                                   keys in the specified key table. 
  1562. sec_login_validate_first          Validates the initial login context. 
  1563. sec_login_validate_identity       Validates a login context's identity. 
  1564.  
  1565.  
  1566. ΓòÉΓòÉΓòÉ 5.2.1.3. Network SignON Coordinator Authentication API ΓòÉΓòÉΓòÉ
  1567.  
  1568. The Network SignON Coordinator/2 is a productivity aid for DOS, Windows, and 
  1569. OS/2 end users whose environment requires multiple user signons to different 
  1570. access control functions.  UPM, LAN Server, and Resource Access Control 
  1571. Facility (RACF) are examples of access control functions.  Network SignON 
  1572. Coordinator/2 uses NSCRSIGN API, which performs sign-on, sign-off, and password 
  1573. change functions. 
  1574.  
  1575.  
  1576. ΓòÉΓòÉΓòÉ 5.2.1.4. Future Directions for Authentication ΓòÉΓòÉΓòÉ
  1577.  
  1578. The LAN Systems programming environment will evolve over time to allow users to 
  1579. gain access to all resources on the system through a single logon, regardless 
  1580. of where the resources are stored in the system and which resource manager 
  1581. protects them.  In the future, the base operating system will integrate its 
  1582. local logon with the DCE Authentication interfaces.  In addition, the LAN 
  1583. Systems security architecture will provide a consistent network security 
  1584. context that correctly represents the identify of the user requesting resources 
  1585. on remote servers (secure association).  The following secure association 
  1586. services will be provided: 
  1587.  
  1588. o   authenticated RPC 
  1589. o   secure conversations based on CPI-C 
  1590. o   secure messages queues based on MQI 
  1591.  
  1592. Finally, the Generic Security Service Application Programming Interface 
  1593. (GSSAPI) included in OSF DCE 1.1 will allow application developers to build 
  1594. secure messages that can be sent across any communications medium to a 
  1595. GSSAPI-equipped communication partner. This interface is based on an emerging 
  1596. Internet standard. 
  1597.  
  1598. Hints: 
  1599.  
  1600. o   The LAN Systems security architecture will provide several methods by which 
  1601.     legacy DOS, Windows, and OS/2 applications can be integrated into the 
  1602.     authentication architecture, such as: 
  1603.  
  1604.     -   Writing a script to allow the application client to receive its signon 
  1605.         information from the Network Signon Coordinator 
  1606.     -   Modifying application client code to retrieve username and password 
  1607.         information from the OS/2 security service 
  1608.     -   Rewriting the application communications code to use authenticated RPC, 
  1609.         so that the application will accept DCE tickets. 
  1610.  
  1611. o   The LAN Server Authentication APIs will be maintained for backward 
  1612.     compatibility with existing LAN Server environments. 
  1613.  
  1614.  
  1615. ΓòÉΓòÉΓòÉ 5.2.2. Access Control ΓòÉΓòÉΓòÉ
  1616.  
  1617. After clients are authenticated, server applications are responsible for 
  1618. verifying the operations clients are permitted to perform.  Servers use access 
  1619. control lists (ACLs) to control user access.  (ACLs are also referred to as 
  1620. access control profiles.)  ACLs can be associated with any named computer 
  1621. resource.  They contain the list of user and group names as well as the type of 
  1622. operations they can perform on each resource. 
  1623.  
  1624. Both DCE and LAN Server support authorization through ACLs. 
  1625.  
  1626. For more information on access control-related APIs, see: 
  1627.  
  1628. o   LAN Server Access Control APIs 
  1629. o   DCE Access Control APIs 
  1630. o   Future Directions for Access Control 
  1631.  
  1632.  
  1633. ΓòÉΓòÉΓòÉ 5.2.2.1. LAN Server Access Control APIs ΓòÉΓòÉΓòÉ
  1634.  
  1635. LAN Server Access Control APIs examine or modify user or group access 
  1636. permission records for server resources.  For a user to access a shared 
  1637. resource, an ACL must be defined for that user.  An ACL contains a set of 
  1638. permissions for each user or group.  These permissions define how the user or 
  1639. group can access a shared resource. 
  1640.  
  1641. An ACL for a resource contains the following information: 
  1642.  
  1643. o   The name of the resource 
  1644. o   A list of users or groups, and their access permissions 
  1645. o   An audit trail flag, which controls whether audit trail records are written 
  1646.     for accesses to the resource. 
  1647.  
  1648. The following NetAccess APIs are in the Access Control category: 
  1649.  
  1650. Net32AccessAdd               Defines a user name or group name ACL for a new 
  1651.                              resource. 
  1652. Net32AccessApply             Replicates a previously-defined ACL for a 
  1653.                              directory and applies the profile to all 
  1654.                              subdirectories under that directory tree.  This 
  1655.                              API also updates the ACLs for any files within the 
  1656.                              directory tree that have previous profiles, but it 
  1657.                              does not create a profile for files that do not 
  1658.                              already have one. 
  1659. Net32AccessCheck             Verifies that a user has the proper access 
  1660.                              permission for a specified resource. 
  1661. Net32AccessDel               Deletes all access permission lists for a 
  1662.                              specified shared resource. 
  1663. Net32AccessEnum              Lists all ACLs. 
  1664. Net32AccessGetInfo           Retrieves information about the ACL of a resource. 
  1665. Net32AccessGetUserPerms      Supplies a specified user or group permission to a 
  1666.                              resource. The resource can be a file, directory, 
  1667.                              drive, or logical resource and can be specified 
  1668.                              remotely by a universal naming convention (UNC) 
  1669.                              path as well as by a server name. 
  1670. Net32AccessSetInfo           Changes an ACL for a resource. 
  1671.  
  1672.  
  1673. ΓòÉΓòÉΓòÉ 5.2.2.2. DCE Access Control APIs ΓòÉΓòÉΓòÉ
  1674.  
  1675. DCE Access Control APIs enable clients to browse or edit DCE ACLs and enable 
  1676. servers to perform DCE-conformant authorization checks at runtime. 
  1677.  
  1678. The following ACL and ID Map APIs are in the Access Control category: 
  1679.  
  1680. rdacl_get_access                  Reads a privilege attribute certificate. 
  1681. rdacl_get_manager_types           Lists the types of ACLs protecting an object. 
  1682. rdacl_get_mgr_types_semantics     Determines the types of ACLs protecting an 
  1683.                                   object. 
  1684. rdacl_get_printstring             Returns printable ACL strings. 
  1685. rdacl_get_referral                Gets a referral to an ACL update site. 
  1686. rdacl_lookup                      Returns the ACL for an object. 
  1687. rdacl_replace                     Replaces an ACL. 
  1688. rdacl_test_access                 Tests access to an object. 
  1689. rdacl_test_access_on_behalf       Tests access to an object on behalf of 
  1690.                                   another process. 
  1691. sec_acl_bind                      Returns a handle for an object ACL. 
  1692. sec_acl_bind_to_addr              Returns a handle to an object identified by 
  1693.                                   its network address. 
  1694. sec_acl_calc_mask                 Returns the sec_acl_type_mask_obj entry for 
  1695.                                   the specified ACL list. 
  1696. sec_acl_get_access                Lists the permission set that the caller has 
  1697.                                   for an object. 
  1698. sec_acl_get_error_info            Returns error information from an ACL handle. 
  1699. sec_acl_get_manager_types         Lists the manager types of the ACLs 
  1700.                                   protecting an object. 
  1701. sec_acl_get_mgr_types_semantics   Returns the types of ACLs and the POSIX 
  1702.                                   semantics protecting an object. 
  1703. sec_acl_get_printstring           Returns printable ACL strings. 
  1704. sec_acl_lookup                    Returns the ACL for an object. 
  1705. sec_acl_mgr_configure             Configures an ACL manager. 
  1706. sec_acl_mgr_get_access            Reads a privilege attribute certificate. 
  1707. sec_acl_mgr_get_manager_types     Returns the types of ACLs that are protecting 
  1708.                                   an object. 
  1709. sec_acl_mgr_get_printstring       Returns printable ACL strings. 
  1710. sec_acl_mgr_is_authorized         Compares a privilege attribute certificate 
  1711.                                   with an ACL. 
  1712. sec_acl_mgr_lookup                Finds an ACL using its key. 
  1713. sec_acl_mgr_replace               Replaces an ACL. 
  1714. sec_acl_release                   Releases ACL storage. 
  1715. sec_acl_release_handle            Removes an ACL handle. 
  1716. sec_acl_replace                   Replaces an ACL. 
  1717. sec_acl_test_access               Tests access to an object. 
  1718. sec_acl_test_access_on_behalf     Tests access to an object on behalf of 
  1719.                                   another process. 
  1720.  
  1721. The ID Map API provides a simple interface to translate a fully-qualified name 
  1722. (that is, the global representation of a name) into its components and back 
  1723. again.  This API consists of the following calls: 
  1724.  
  1725. sec_id_gen_group        Generates a global name from cell and group UUIDs. 
  1726. sec_id_gen_name         Generates a global name from cell and principal UUIDs. 
  1727. sec_id_parse_group      Translates a global name into group and cell names and 
  1728.                         UUIDs. 
  1729. sec_id_parse_name       Translates a global name into principal and cell names 
  1730.                         and UUIDs. 
  1731.  
  1732.  
  1733. ΓòÉΓòÉΓòÉ 5.2.2.3. Future Directions for Access Control ΓòÉΓòÉΓòÉ
  1734.  
  1735. The LAN Systems programming environment will evolve over time to allow 
  1736. administration of access permission information for all resources, regardless 
  1737. of where the resources are stored in the system and which resource manager 
  1738. protects them.  DCE-compliant ACL Managers will be the preferred method for 
  1739. resource managers to implement access control.  In the future, a single, 
  1740. object-oriented programming interface will be provided for managing access 
  1741. control across multiple access control mechanisms. 
  1742.  
  1743. Hints: 
  1744.  
  1745. o   Exporting the remote ACL editor API allows resource manager ACLs to be 
  1746.     managed remotely by standard DCE utilities. 
  1747.  
  1748. o   The LAN Server Access Control APIs will be maintained for backward 
  1749.     compatability with existing LAN Server environments 
  1750.  
  1751.  
  1752. ΓòÉΓòÉΓòÉ 5.2.3. Registry ΓòÉΓòÉΓòÉ
  1753.  
  1754. A registry stores security-related information, such as user account, group 
  1755. account, and password. 
  1756.  
  1757. For more information about registry-related APIs, see: 
  1758.  
  1759. o   LAN Server Registry APIs 
  1760. o   DCE Registry APIs 
  1761. o   Future Directions for Registry 
  1762.  
  1763.  
  1764. ΓòÉΓòÉΓòÉ 5.2.3.1. LAN Server Registry APIs ΓòÉΓòÉΓòÉ
  1765.  
  1766. In the LAN Server environment, the user accounts subsystem (UAS) stores the 
  1767. user account for each user or application that accesses resources in the 
  1768. system. The system uses this account to verify the user identity and to 
  1769. establish a context for that user.  User account information includes 
  1770. attributes such as privilege level, account expiration date, list of authorized 
  1771. requesters, logon hours, password required, maximum storage allotment, and 
  1772. logon server.  UAS information is replicated to all servers in a LAN Server 
  1773. domain, including single system images.  The domain control database stores 
  1774. extended user information, such as logon assignments, application selectors, 
  1775. and logon profiles. 
  1776.  
  1777. The following NetLogon, NetUser and NetGroup APIs are in the Registry category: 
  1778.  
  1779. Net32LogonEnum            Supplies information about logged-on users in a LAN 
  1780.                           Server domain. 
  1781. Net32UserAdd              Establishes an account for a user in the UAS database 
  1782.                           and assigns a password and privilege level. 
  1783. Net32UserDCDBInit         Initializes the domain control database for the 
  1784.                           specified user. 
  1785. Net32UserDel              Removes an account from the UAS database, ending all 
  1786.                           access to the resources in the system.  Deleting an 
  1787.                           account also deletes all references to that account 
  1788.                           in all resource permission access records and removes 
  1789.                           the account from groups in the system. 
  1790. Net32UserEnum             Returns information about all accounts on a server. 
  1791. Net32UserGetAppSel        Retrieves information about all specified types of 
  1792.                           applications contained in the user desktop 
  1793.                           application folders. 
  1794. Net32UserGetInfo          Retrieves user attributes from the UAS, including 
  1795.                           privileges, home directory, and the status of an 
  1796.                           account. 
  1797. Net32UserGetLogonAsn      Retrieves information about logon assignments for a 
  1798.                           user. 
  1799. Net32UserModalsGet        Gets global policies for all users and groups in the 
  1800.                           UAS database. 
  1801. Net32UserModalsSet        Sets global policies for all users and groups in the 
  1802.                           UAS database. 
  1803. Net32UserPasswordSet      Changes the password for a user account. 
  1804. Net32UserSetApplSel       Sets the list of applications contained in the 
  1805.                           specified user desktop application folders. 
  1806. Net32UserSetInfo          Modifies a user account in the UAS database. 
  1807. Net32UserSetLogonAsn      Sets logon assignments for a user. 
  1808. Net32UserValidate2        Validates a user with a password.  This API verifies 
  1809.                           whether the user can log on based on logon 
  1810.                           restrictions defined for the account. 
  1811. Net32UserGetGroups        Lists the names of all groups in the UAS database to 
  1812.                           which a specified user belongs. 
  1813. Net32UserSetGroups        Sets the groups a user is a member of. 
  1814. A group is a set of users sharing common permissions in the UAS database. The 
  1815. Group APIs create or delete groups and review or adjust their membership.  The 
  1816. following APIs are in the Group category: 
  1817.  
  1818. Net32GroupAdd             Creates a new group account in the UAS database. 
  1819. Net32GroupAddUser         Adds a user to a predefined group in the UAS 
  1820.                           database. 
  1821. Net32GroupDel             Removes a group account from the UAS database. 
  1822. Net32GroupDelUser         Removes a user from a specified group in the UAS 
  1823.                           database. 
  1824. Net32GroupEnum            Lists all group accounts on the UAS database. 
  1825. Net32GroupGetInfo         Retrieves group-related information 
  1826. Net32GroupGetUsers        Returns a lists of members of a specified group in 
  1827.                           the UAS database. 
  1828. Net32GroupSetInfo         Sets group-related information. 
  1829. Net32GroupSetUsers        Sets information about users who belong to a 
  1830.                           specified group. 
  1831.  
  1832.  
  1833. ΓòÉΓòÉΓòÉ 5.2.3.2. DCE Registry APIs ΓòÉΓòÉΓòÉ
  1834.  
  1835. The DCE Registry APIs enable a client to manage user and policy information in 
  1836. the DCE Registry service. 
  1837.  
  1838. The Registry and Key Management APIs are in the Registry category: 
  1839.  
  1840. sec_rgy_acct_add                 Adds an account for a login name. 
  1841. sec_rgy_acct_admin_replace       Replaces administrative account data 
  1842. sec_rgy_acct_delete              Deletes an account. 
  1843. sec_rgy_acct_get_projlist        Returns the projects in an account project 
  1844.                                  list. 
  1845. sec_rgy_acct_lookup              Returns data for a specified account. 
  1846. sec_rgy_acct_passwd              Changes the password for an account. 
  1847. sec_rgy_acct_rename              Changes an account login name. 
  1848. sec_rgy_acct_replace_all         Replaces all account data for an account. 
  1849. sec_rgy_acct_user_replace        Replaces user account data. 
  1850. sec_rgy_auth_plcy_get_effective  Returns the effective authentication policy 
  1851.                                  for an account. 
  1852. sec_rgy_auth_plcy_get_info       Returns the authentication policy for an 
  1853.                                  account. 
  1854. sec_rgy_auth_plcy_set_info       Sets the authentication policy for an account. 
  1855. sec_rgy_cell_bind                Binds a registry in a cell. 
  1856. sec_rgy_cursor_reset             Resets the registry database cursor. 
  1857. sec_rgy_login_get_effective      Returns the effective login data for an 
  1858.                                  account. 
  1859. sec_rgy_login_get_info           Returns login information for an account. 
  1860. sec_rgy_pgo_add                  Adds a principal, group, or organization (PGO) 
  1861.                                  item to the registry database. 
  1862. sec_rgy_pgo_add_member           Adds a person to a group or organization. 
  1863. sec_rgy_pgo_delete               Deletes a PGO item from the registry database. 
  1864. sec_rgy_pgo_delete_member        Deletes a member of a group or organization. 
  1865. sec_rgy_pgo_get_by_id            Returns the name and data for a PGO item 
  1866.                                  identified by its UUID. 
  1867. sec_rgy_pgo_get_by_name          Returns the data for a named PGO item. 
  1868. sec_rgy_pgo_get_by_unix_num      Returns the name and data for a PGO item 
  1869.                                  identified by its UNIX number. 
  1870. sec_rgy_pgo_get_members          Returns the membership list for a group or 
  1871.                                  organization. 
  1872. sec_rgy_pgo_get_next             Returns the next PGO item in the registry 
  1873.                                  database. 
  1874. sec_rgy_pgo_id_to_name           Returns the name for a PGO item identified by 
  1875.                                  its UUID. 
  1876. sec_rgy_pgo_id_to_unix_num       Returns the UNIX number for a PGO item 
  1877.                                  identified by its UUID. 
  1878. sec_rgy_pgo_is_member            Checks group or organization membership. 
  1879. sec_rgy_pgo_name_to_id           Returns the UUID for a named PGO item. 
  1880. sec_rgy_pgo_name_to_unix_num     Returns the UNIX number for a PGO item 
  1881.                                  identified by its name. 
  1882. sec_rgy_pgo_rename               Changes the name of a PGO item in the registry 
  1883.                                  database. 
  1884. sec_rgy_pgo_replace              Replaces the data in an existing PGO item. 
  1885. sec_rgy_pgo_unix_num_to_id       Returns the UUID for a PGO item identified by 
  1886.                                  its UNIX number. 
  1887. sec_rgy_pgo_unix_num_to_name     Returns the name for a PGO item identified by 
  1888.                                  its UNIX number. 
  1889. sec_rgy_plcy_get_effective       Returns the effective policy for an 
  1890.                                  organization. 
  1891. sec_rgy_plcy_get_info            Returns the policy for an organization. 
  1892. sec_rgy_plcy_set_info            Sets the policy for an organization. 
  1893. sec_rgy_properties_get_info      Returns registry properties. 
  1894. sec_rgy_properties_set_info      Sets registry properties. 
  1895. sec_rgy_site_bind                Binds to a registry site. 
  1896. sec_rgy_site_bind_query          Binds to a registry query site. 
  1897. sec_rgy_site_bind_update         Binds to a registry update site. 
  1898. sec_rgy_site_binding_get_info    Returns information from the registry binding 
  1899.                                  handle. 
  1900. sec_rgy_site_close               Frees the binding handle for a registry 
  1901.                                  server. 
  1902. sec_rgy_site_get                 Returns the string representation for a bound 
  1903.                                  registry site. 
  1904. sec_rgy_site_is_readonly         Checks whether a registry site is read only. 
  1905. sec_rgy_site_open                Binds to a registry site. 
  1906. sec_rgy_site_open_query          Binds a registry query site. 
  1907. sec_rgy_site_open_update         Binds to a registry update site. 
  1908. sec_rgy_unix_getgrent            Returns a UNIX-style group entry. 
  1909. sec_rgy_unix_getgrgid            Returns a UNIX-style group entry for the 
  1910.                                  account with the specified group ID. 
  1911. sec_rgy_unix_get_grnam           Returns a UNIX-style group entry for the 
  1912.                                  account with the specified group name. 
  1913. sec_rgy_unix_getpwent            Returns a UNIX-style password entry. 
  1914. sec_rgy_unix_getpwnam            Returns a UNIX-style password entry for the 
  1915.                                  account with the specified name. 
  1916. sec_rgy_unix_getpwuid            Returns a UNIX-style password entry for the 
  1917.                                  account with the specified UUID. 
  1918. sec_rgy_wait_until_consistent    Blocks updates while propagating prior updates 
  1919.                                  to registry replicas. 
  1920.  
  1921. Every principal has an entry in the Registry database that specifies a secret 
  1922. key.  In the case of an interactive principal (that is, a user), the secret key 
  1923. is derived from the principal password.  In the same way users need to keep 
  1924. their passwords secure by memorizing them (rather than writing them down, for 
  1925. example), a noninteractive principal also needs to be able to store and 
  1926. retrieve its secret key in a secure manner.  The Key Management API provides 
  1927. simple key management functions for noninteractive principals. 
  1928.  
  1929. The following routines make up the Key Management API: 
  1930.  
  1931. sec_key_mgmt_change_key          Changes a principal key. 
  1932. sec_key_mgmt_delete_key          Deletes a key from the local storage. 
  1933. sec_key_mgmt_delete_key_type     Deletes a key version of a key type from the 
  1934.                                  local key storage. 
  1935. sec_key_mgmt_free_key            Frees the memory used by a key value. 
  1936. sec_key_mgmt_garbage_collect     Deletes obsolete keys. 
  1937. sec_key_mgmt_gen_rand_key        Generates a new random key of a specified key 
  1938.                                  type. 
  1939. sec_key_mgmt_generate_key        Generates a new random key. 
  1940. sec_key_mgmt_get_key             Retrieves a key from local storage. 
  1941. sec_key_mgmt_get_next_key        Retrieves successive keys from the local key 
  1942.                                  storage. 
  1943. sec_key_mgmt_get_next_kvno       Retrieves the next eligible key version number 
  1944.                                  of a key. 
  1945. sec_key_mgmt_initialize_cursor   Repositions the cursor in the local key store. 
  1946. sec_key_mgmt_manage_key          Automatically changes a principal's key before 
  1947.                                  it expires. 
  1948. sec_key_mgmt_release_cursor      Releases the memory used by an initialized 
  1949.                                  cursor value. 
  1950. sec_key_mgmt_set_key             Inserts a key value into the local storage. 
  1951.  
  1952.  
  1953. ΓòÉΓòÉΓòÉ 5.2.3.3. Future Directions for Registry ΓòÉΓòÉΓòÉ
  1954.  
  1955. In LAN Server 4.0, user definitions, groups, and policies are stored at the 
  1956. domain controller and replicated to backup and member servers.  This system is 
  1957. referred to as the User Accounts Subsystem (UAS). In future versions, 
  1958. information stored in the UAS is merged into the DCE registry service.  DCE 
  1959. acts as the master registry and this allows for a single user definition to be 
  1960. shared by all the subsystems that are integrated with DCE.  It also brings the 
  1961. flexibility and scalability of the DCE user registry to LAN Server. 
  1962.  
  1963. In addition, a single, object-oriented programming interface for accessing and 
  1964. managing User Registry information across multiple user registries will be 
  1965. provided. Object Oriented Name Services (OONS) Framework or Extended Naming 
  1966. Context (ENC) interface will provide a single, consistent programming model for 
  1967. accessing information within one or more directory services without requiring 
  1968. the application to be aware of what underlying directory implementation 
  1969. actually satisfies a given request.  The programming interface exported by the 
  1970. OONS framework is defined by the OMG Joint Object Services Submission Name 
  1971. Service Specification and the OMG Naming Extension Proposal. The LAN System 
  1972. programming environment will support this interface by insisting that LAN 
  1973. System cell users and policy be defined in an authoritative cell registry 
  1974. service, and that all other registries in the cell derive their information 
  1975. about such cell users and policies from that registry service. 
  1976.  
  1977. Hints: 
  1978.  
  1979. o   Installation utilities will be provided with future versions of LAN Server 
  1980.     to automate the migration from the UAS to the DCE registry service. API 
  1981.     mapping is performed at the domain controller to translate UAS management 
  1982.     and replications requests into operations on the DCE registry to preserve 
  1983.     interoperability of downlevel LAN Server clients and servers in the domain. 
  1984.  
  1985. o   The information in the DCE registry can be manipulated using the DCE APIs 
  1986.     (sec_rgy_*), but LAN Server NetUser and NetGroup APIs will continue to be 
  1987.     provided on LAN Server clients to provide a more LAN Server-centric 
  1988.     interface to the registry information, and to allow existing applications 
  1989.     that use these APIs to continue to work in this environment.  For 
  1990.     integrated clients, the LAN Server APIs are mapped directly onto sec_rgy 
  1991.     APIs.  For basic clients and for legacy LAN Server clients, the APIs are 
  1992.     directed to a domain controller, which maps them onto corresponding sec_rgy 
  1993.     APIs and sends them on to the DCE registry server. 
  1994.  
  1995. o   To integrate other legacy application user registry into the DCE cell 
  1996.     registry service, it is necessary to: 
  1997.  
  1998.     -   Accept registry information updates from the DCE registry service. 
  1999.         Some user and group definition information in application registries 
  2000.         will be common to the DCE registry service; this information can be 
  2001.         extracted from the DCE registry using the sec_rgy interface provided 
  2002.         today.  Many legacy applications will have registry information that is 
  2003.         not equivalent to any information in the standard DCE user or group 
  2004.         definition records.  This information will have to be stored in the DCE 
  2005.         registry service as extended registry attributes associated with the 
  2006.         appropriate GUI, and the legacy application's registry synchronization 
  2007.         utility can manipulate this information through the extended registry 
  2008.         attribute API provided with OSF DCE 1.1. 
  2009.     -   Provide a migration utility, based on the OSF-provided password_import 
  2010.         utility, to move the contents of existing legacy application user and 
  2011.         group names and existing DCE user and group names. 
  2012.     -   Optionally, plug in the LAN System registry framework by exporting a 
  2013.         version of the OSF DCE 1.1 sec_rgy API. 
  2014.  
  2015. o   The LAN Server Registry APIs will be maintained for backward compatability 
  2016.     with existing LAN Server environments. 
  2017.  
  2018.  
  2019. ΓòÉΓòÉΓòÉ 5.2.4. Auditing ΓòÉΓòÉΓòÉ
  2020.  
  2021. Auditing services enable the system to capture information about 
  2022. security-relevant events that occur in the system.  For more information see: 
  2023.  
  2024. o   LAN Server Auditing APIs 
  2025. o   Future Directions 
  2026.  
  2027.  
  2028. ΓòÉΓòÉΓòÉ 5.2.4.1. LAN Server Auditing APIs ΓòÉΓòÉΓòÉ
  2029.  
  2030. LAN Server provides an audit log file, which contains an audit trail of 
  2031. operations that occur on a server.  This file stores information about how and 
  2032. when network resources are used as well as information about user IDs and their 
  2033. associated passwords. 
  2034.  
  2035. LAN Server can generate audit entries for the following types of events: 
  2036.  
  2037. o   Change in server status 
  2038. o   Beginning or end of a session 
  2039. o   Password error 
  2040. o   Start of a connection or a disconnection 
  2041. o   Rejection of a connection request 
  2042. o   Access made or rejection to a resource 
  2043. o   Closing of a file, device, or pipe 
  2044. o   Change of a service status code or text 
  2045. o   Modification of an ACL or UAS database 
  2046. o   Modification of the UAS database 
  2047. o   Denial of a logon 
  2048. o   Exceeding of an account limit 
  2049.  
  2050. The following APIs are part of the Auditing category: 
  2051.  
  2052. Net32AuditClear      Clears the audit log file and optionally saves the 
  2053.                      contents to another file. 
  2054. Net32AuditRead       Reads from the audit log on a server. 
  2055. Net32AuditWrite      Writes an audit trail entry to the local audit log file. 
  2056.  
  2057.  
  2058. ΓòÉΓòÉΓòÉ 5.2.4.2. Future Directions ΓòÉΓòÉΓòÉ
  2059.  
  2060. OSF DCE 1.1 includes Auditing APIs.  These APIs will be the preferred interface 
  2061. for locally collecting and managing auditing information. 
  2062.  
  2063. Hint: 
  2064.  
  2065. o   The LAN Server NetAudit APIs will be maintained for backward compatability 
  2066.     with existing LAN Server environments. 
  2067.  
  2068.  
  2069. ΓòÉΓòÉΓòÉ 5.3. Time Services ΓòÉΓòÉΓòÉ
  2070.  
  2071. A time service is a mechanism that allows clients and servers to synchronize 
  2072. their clocks.  This time is coordinated with a universal time authority. 
  2073.  
  2074. For more information on time-related APIs, see: 
  2075.  
  2076. o   LAN Server Time Service API 
  2077. o   DCE Time Service APIs 
  2078. o   Future Directions 
  2079.  
  2080.  
  2081. ΓòÉΓòÉΓòÉ 5.3.1. LAN Server Time Service API ΓòÉΓòÉΓòÉ
  2082.  
  2083. The LAN Server Net32RemoteTOD API accesses the time-of-day information on a 
  2084. remote server. 
  2085.  
  2086.  
  2087. ΓòÉΓòÉΓòÉ 5.3.2. DCE Time Service APIs ΓòÉΓòÉΓòÉ
  2088.  
  2089. DCE Time Service (DTS) APIs provide the time function needed in a DCE 
  2090. environment.  These APIs provide a mechanism for synchronizing each computer in 
  2091. the network to a recognized time standard. These APIs manipulate timestamps and 
  2092. obtain universal time from public sources. 
  2093.  
  2094. DCE synchronizes time on its networks by maintaining agent-server and 
  2095. server-server relationships.  Each DCE machine has a time clerk agent that asks 
  2096. time servers for the correct time and adjusts the local time accordingly.  The 
  2097. agent can consult one or more time servers and calculate the probable correct 
  2098. time based on the responses it receives.  The agent can upgrade the local time 
  2099. either gradually or abruptly. 
  2100.  
  2101. DCE requires at least three time servers, one or more of which must be 
  2102. connected to an external time provider.  The time servers periodically query 
  2103. each another to synchronize their clocks.  The external time provider can be a 
  2104. hardware device that receives time from a radio or a telephone source. DCE uses 
  2105. the Coordinated Universal Time (UTC) standard, which keeps track of time 
  2106. elapsed since the beginning of the Gregorian calendar. 
  2107.  
  2108. DTS provides the following functions: 
  2109.  
  2110. o   Obtains timestamps that are based on UTC. 
  2111. o   Translates between different timestamp formulas. 
  2112. o   Performs calculations on timestamps. 
  2113.  
  2114. Applications can call the DTS routines from server or client systems and use 
  2115. the timestamps that DTS supplies to determine event sequencing, duration, and 
  2116. scheduling. 
  2117.  
  2118. The following terms are important for understanding DTS: 
  2119.  
  2120. Absolute time             A point on a time scale.  Absolute time measurements 
  2121.                           are derived from system clocks or external 
  2122.                           time-providers.  Absolute timestamps refer to the UTC 
  2123.                           standard time and date and also include inaccuracy 
  2124.                           and other information. 
  2125.  
  2126. Relative time             A discrete time interval that is often added to or 
  2127.                           subtracted from an absolute time.  A time 
  2128.                           differential factor (TDF) associated with an absolute 
  2129.                           time is one example of a relative time. 
  2130.  
  2131. Coordinated Universal Time The international time standard that DTS uses.  The 
  2132.                           zero hour of UTC is based on the zero hour (midnight) 
  2133.                           of Greenwich mean time (GMT). 
  2134.  
  2135. Time differential factor  The difference between UTC and the time in a 
  2136.                           particular time zone. The user environment determines 
  2137.                           the time zone rule, but if the user environment does 
  2138.                           not specify a time zone rule, the system rule is 
  2139.                           used.  The specifics of the user and system time zone 
  2140.                           rules are system-dependent. 
  2141.  
  2142. The APIs associated with the DCE time service are divided into the following 
  2143. functional groups: 
  2144.  
  2145. Time retrieval                 Retrieves the current (UTC-based) time from a 
  2146.                                DTS. 
  2147. Time conversion                Converts binary timestamps expressed in the utc 
  2148.                                time structure to or from text strings or tm or 
  2149.                                timespec  structure components. 
  2150. Time manipulation              Manipulates the output of multiple UTC times and 
  2151.                                timestamps. 
  2152. Time comparison                Compares two binary time values. 
  2153. Time calculation               Calculates binary time values. 
  2154. Time zone information retrieval Obtains time zone information. 
  2155.  
  2156.  
  2157. ΓòÉΓòÉΓòÉ 5.3.2.1. Time retrieval routines ΓòÉΓòÉΓòÉ
  2158.  
  2159. utc_gettime               Returns the current system time and inaccuracy as a 
  2160.                           binary timestamp. 
  2161. utc_getusertime           Returns the time and process-specific TDF, rather 
  2162.                           than the system-specific TDF. 
  2163.  
  2164.  
  2165. ΓòÉΓòÉΓòÉ 5.3.2.2. Time conversion routines ΓòÉΓòÉΓòÉ
  2166.  
  2167. The following routines convert timestamps to tm structures: 
  2168.  
  2169. utc_anytime               Converts a binary timestamp to a tm structure using 
  2170.                           the TDF information contained in the timestamp to 
  2171.                           determine the TDF returned with the tm structure. 
  2172. utc_gmtime                Converts a binary timestamp to a tm structure that 
  2173.                           expresses GMT or the equivalent UTC. 
  2174. utc_localtime             Converts a binary timestamp to a tm structure that 
  2175.                           expresses local time. 
  2176. utc_mkanytime             Converts a tm structure and TDF (expressing time in 
  2177.                           an arbitrary time zone) to a binary timestamp. 
  2178. utc_mkgmtime              Converts a tm structure that expresses GMT or UTC to 
  2179.                           a binary timestamp. 
  2180. utc_mklocaltime           Converts a tm structure that expresses local time to 
  2181.                           a binary timestamp. 
  2182. utc_mkreltime             Converts a tm structure that expresses relative time 
  2183.                           to a relative binary timestamp. 
  2184. utc_reltime               Converts a relative binary timestamp to a tm 
  2185.                           structure. 
  2186.  
  2187. The following routines convert timestamps to timespec structures: 
  2188.  
  2189. utc_binreltime            Converts a relative binary timestamp to two timespec 
  2190.                           structures that express relative time and inaccuracy. 
  2191. utc_bintime               Converts a binary timestamp to a timespec structure. 
  2192. utc_mkbinreltime          Converts a timespec structure expressing a relative 
  2193.                           time to a binary timestamp. 
  2194. utc_mkbintime             Converts a timespec structure to a binary timestamp. 
  2195.  
  2196. The following routines convert timestamps to a text string: 
  2197.  
  2198. utc_ascanytime            Converts a binary timestamp to a text string that 
  2199.                           represents an arbitrary time zone. 
  2200. utc_ascgmtime             Converts a binary timestamp to a text string that 
  2201.                           expresses a GMT. 
  2202. utc_asclocaltime          Converts a binary timestamp to a text string that 
  2203.                           represents a local time. 
  2204. utc_ascreltime            Converts a binary timestamp to a test string that 
  2205.                           represents the relative time. 
  2206. utc_mkascreltime          Converts a null-terminated character string that 
  2207.                           represents a relative timestamp to a binary 
  2208.                           timestamp. 
  2209. utc_mkasctime             Converts a null-terminated character string that 
  2210.                           represents an absolute timestamp to a binary 
  2211.                           timestamp. 
  2212.  
  2213.  
  2214. ΓòÉΓòÉΓòÉ 5.3.2.3. Time manipulation routines ΓòÉΓòÉΓòÉ
  2215.  
  2216. utc_boundtime             Given two UTC times, one before and one after an 
  2217.                           event, returns a single UTC time whose inaccuracy 
  2218.                           includes the event. 
  2219. utc_pointtime             Converts a binary timestamp to three binary 
  2220.                           timestamps that represent the earliest, most likely, 
  2221.                           and latest time. 
  2222. utc_spantime              Given two (possibly unordered) binary timestamps, 
  2223.                           returns a single UTC time interval whose inaccuracy 
  2224.                           spans the two input binary timestamps. 
  2225.  
  2226.  
  2227. ΓòÉΓòÉΓòÉ 5.3.2.4. Time comparison routines ΓòÉΓòÉΓòÉ
  2228.  
  2229. utc_cmpintervaltime       Compares two binary timestamps or two relative binary 
  2230.                           timestamps. 
  2231. utc_cmpmidtime            Compares two binary timestamps or two relative binary 
  2232.                           timestamps, ignoring inaccuracies. 
  2233.  
  2234.  
  2235. ΓòÉΓòÉΓòÉ 5.3.2.5. Time calculation routines ΓòÉΓòÉΓòÉ
  2236.  
  2237. utc_abstime               Compares the absolute value of a relative binary 
  2238.                           timestamp. 
  2239. utc_addtime               Computes the sum of two binary timestamps.  The 
  2240.                           timestamps can be two relative times or a relative 
  2241.                           time and an absolute time. 
  2242. utc_mulftime              Multiplies a relative binary timestamp by a 
  2243.                           floating-point value. 
  2244. utc_multime               Multiplies a relative binary timestamp by an integer 
  2245.                           factor. 
  2246. utc_subtime               Compares the difference between two binary 
  2247.                           timestamps.  The timestamps can be two relative 
  2248.                           times, two absolute times, or a relative time and an 
  2249.                           absolute time. 
  2250.  
  2251.  
  2252. ΓòÉΓòÉΓòÉ 5.3.2.6. Time zone information retrieval routines ΓòÉΓòÉΓòÉ
  2253.  
  2254. utc_anyzone               Gets the time zone label and offset from GMT, using 
  2255.                           the TDF contained in the input utc. 
  2256. utc_gmtzone               Gets the time zone label for GMT. 
  2257. utc_localzone             Gets the time zone label and offset, given utc. 
  2258.  
  2259.  
  2260. ΓòÉΓòÉΓòÉ 5.3.3. Future Directions for Time ΓòÉΓòÉΓòÉ
  2261.  
  2262. DCE's utc_* time APIs offer a functionally richer alternative to the 
  2263. NetRemoteTOD API and this API set will be available on integrated and pure DCE 
  2264. clients and servers. 
  2265.  
  2266. Hint: 
  2267.  
  2268. o   The LAN Server NetRemoteTOD API continues to be provided for retrieving the 
  2269.     time of a LAN Server server for the sake of existing applications and to 
  2270.     provide a common API across integrated and unintegrated clients. LAN Server 
  2271.     clients will continue to export the API and LAN Server servers will accept 
  2272.     the API. 
  2273.  
  2274.  
  2275. ΓòÉΓòÉΓòÉ 5.4. Transactions ΓòÉΓòÉΓòÉ
  2276.  
  2277. Note to Rick Cohen  Please ensure the appropriate review from NS.  I have not 
  2278.                     updated this section from last time.  I need details on 
  2279.                     future directions and probably some info on CICS. 
  2280.  
  2281. Under the control of a Transaction Processing (TP) Monitor, a transaction can 
  2282. be managed from its point of origin, typically on the client, across one or 
  2283. more servers, and then back to the originating client.  When a transaction 
  2284. ends, all the parties involved are in agreement as to whether it succeeded or 
  2285. failed.  The transaction becomes the contract that binds the client to one or 
  2286. more servers. Transaction APIs provide synchronization services so that 
  2287. multiple resource managers can act together to ensure that resources retain 
  2288. their integrity. 
  2289.  
  2290. The following groups of APIs are specific to transactions: 
  2291.  
  2292. o   Encina Base APIs 
  2293. o   Encina Server APIs 
  2294. o   Encina General APIs 
  2295. o   Encina Monitor APIs 
  2296. o   Conversations 
  2297. o   Record-Oriented File Services 
  2298.  
  2299.  
  2300. ΓòÉΓòÉΓòÉ 5.4.1. Encina Base APIs ΓòÉΓòÉΓòÉ
  2301.  
  2302. The Encina Base feature of the AIX DCE Base Services/6000 supports the 
  2303. development of client/server transaction processing applications. 
  2304.  
  2305. Encina Base contains the following core APIs for defining transactional clients 
  2306. and servers: 
  2307.  
  2308. o   Transactional C (Tran-C) 
  2309. o   Transactional RPC (TRPC) 
  2310. o   Transactional Protocol - Two Phase Commit 
  2311.  
  2312.  
  2313. ΓòÉΓòÉΓòÉ 5.4.1.1. Transactional C (Tran-C) ΓòÉΓòÉΓòÉ
  2314.  
  2315. Transactional-C is the high-level API that simplifies transaction demarcation, 
  2316. concurrency control, and exception handling.  Tran-C is made up of a set of 
  2317. macros and library routines for American National Standards Institute 
  2318. (ANSI)/Standard C.  The following is a simple example of transaction 
  2319. definition: 
  2320.  
  2321. transaction { ...
  2322.      debit (salaryExpense, amount);
  2323.      credit (accountsPayable, amount);
  2324.      enterAuditData(employeeIdentifier, amount, date);
  2325.      ...}
  2326. onCommit
  2327.      printf("Transaction succeeded.");
  2328. onAbort
  2329.      printf("Transaction failed.");
  2330.  
  2331. The bracketed statements of the transaction construct make up a single unit of 
  2332. distributed work.  The onAbort clause simplifies the handling of exceptions in 
  2333. that any errors resulting in transaction abort are trapped within this branch. 
  2334.  
  2335. Under some circumstances, users may want to use the functions provided by TRAN, 
  2336. rather than using the equivalent higher-level functions Tran-C provides. 
  2337.  
  2338.  
  2339. ΓòÉΓòÉΓòÉ 5.4.1.2. Transactional RPC (TRPC) ΓòÉΓòÉΓòÉ
  2340.  
  2341. The Transactional Remote Procedure Call (TRPC) module of the Encina Base 
  2342. service extends the DCE RPC with transaction semantics.  Thus, remote 
  2343. computation initiated with a TRPC exhibits the properties of atomicity, 
  2344. consistency, isolation, and durability.  If a standard RPC fails, the client 
  2345. generally cannot determine whether the message never arrived at the server, 
  2346. whether the server failed during the computation, or whether the return message 
  2347. was lost.  This indeterminacy is unacceptable for transaction processing.  When 
  2348. a transactional RPC fails, however, the encompassing transaction is aborted. 
  2349. When the semantics required for transaction processing are more restrictive, 
  2350. either a transaction is completed successfully by all participants, or an abort 
  2351. is issued, causing any local or remote modifications to be rolled back. 
  2352.  
  2353. To programmers, TRPC resembles the DCE RPC upon which it is based.  The debit, 
  2354. credit, and enterAuditData calls of the preceding example are each intended to 
  2355. be TRPCs.  Additionally, all of the DCE RPC features (the high-level API, name, 
  2356. and security service integration) are offered with TRPC as well. 
  2357.  
  2358.  
  2359. ΓòÉΓòÉΓòÉ 5.4.1.3. Transactional Protocol - Two Phase Commit ΓòÉΓòÉΓòÉ
  2360.  
  2361. The Distributed Transaction Service (TRAN) module of the Encina Base service is 
  2362. the means by which a consensus is reached among transaction participants as to 
  2363. whether to commit or to abort a transaction.  The actual standard for reaching 
  2364. this consensus is the two-phase, presume-abort commit protocol.  Under this 
  2365. protocol, a transaction coordinator polls all participants.  If each 
  2366. acknowledges that it is prepared to commit, the coordinator commits the pending 
  2367. transaction.  If any participant does not wish to commit, the coordinator 
  2368. aborts the transaction.  In either case, the coordinator informs all 
  2369. participants of the outcome. 
  2370.  
  2371. TRAN provides the logic for the two-phase commit protocol, but does not include 
  2372. a mechanism for communicating with other Transaction Services. Instead, it 
  2373. furnishes opaque transaction state information to the TRPC component for 
  2374. inclusion in transactional RPCs.  The TRPC component then takes care of sending 
  2375. and receiving the messages required to execute the two-phase protocol.  By 
  2376. separating communications and the transaction service, TRAN can be used with 
  2377. alternative communication facilities such as other RPCs or peer-to-peer 
  2378. implementations.  A single instance of TRAN can support multiple communication 
  2379. mechanisms simultaneously, meaning that a transaction can send server requests 
  2380. in a number of different ways and yet still offer implicit two-phase commit 
  2381. over all participants. TRAN provides similar support for integrating 
  2382. multiple-recovery services, each of which provides the roll-forward and 
  2383. roll-back services for recoverable data. 
  2384.  
  2385.  
  2386. ΓòÉΓòÉΓòÉ 5.4.2. Encina Server APIs ΓòÉΓòÉΓòÉ
  2387.  
  2388. The Encina Server provides for the management of recoverable data, which offers 
  2389. transactional integrity. 
  2390.  
  2391. The Encina Server comprises the following components: 
  2392.  
  2393. o   Transactional Manager/XA (TM/XA) 
  2394. o   Lock Service 
  2395. o   Recovery Service 
  2396. o   Volume Service 
  2397. o   Log Service 
  2398.  
  2399.  
  2400. ΓòÉΓòÉΓòÉ 5.4.2.1. Transactional Manager/XA (TM/XA) ΓòÉΓòÉΓòÉ
  2401.  
  2402. The TM/XA interface permits transactional access to XA-compliant databases 
  2403. (resource managers) to be accessed within Encina applications. Although client 
  2404. applications may use TM-XA, it must be used in conjunction with the Recovery 
  2405. service and the Log service.  The XA interface is an X/Open standard for 
  2406. initiating and coordinating subordinate database transactions. 
  2407.  
  2408.  
  2409. ΓòÉΓòÉΓòÉ 5.4.2.2. Lock Service ΓòÉΓòÉΓòÉ
  2410.  
  2411. The Lock service (LOCK) module of the Encina Server service provides a logical 
  2412. locking package to implement the serializability property of transactions. 
  2413. Acquired locks are transactional and by default are held until a transaction 
  2414. either committed or aborted.  In addition to the standard shared (read) and 
  2415. exclusive (write) locks, the Lock Service supports hierarchical intention 
  2416. locks, whereby an entire file can be locked for either exclusive or shared 
  2417. access.  For shared access, individual read and write locks are then granted 
  2418. for access to particular records. 
  2419.  
  2420.  
  2421. ΓòÉΓòÉΓòÉ 5.4.2.3. Recovery Service ΓòÉΓòÉΓòÉ
  2422.  
  2423. The Recovery service (REC) module of the Encina Server service provides the 
  2424. undo and redo logic required to implement roll-back after an abort and 
  2425. roll-forward after a system failure.  It also supports a recoverable memory 
  2426. abstraction that is realized by logging data updates.  Before a transaction is 
  2427. committed, these log records are flushed to stable storage.  By replaying this 
  2428. log, recoverable memory can be restored after system failure.  Since the 
  2429. Recovery Service must support the Encina Structured File Server (SFS), it is 
  2430. essential that the Recovery service scale to represent very large address 
  2431. spaces of recoverable memory. 
  2432.  
  2433.  
  2434. ΓòÉΓòÉΓòÉ 5.4.2.4. Volume Service ΓòÉΓòÉΓòÉ
  2435.  
  2436. The Volume service (VOL) module of the Encina Server service functions on top 
  2437. of the AIX Logical Volume Manager (LVM).  The Volume service ensures that 
  2438. applications are more portable among versions of Encina on different platforms. 
  2439. To use the Recovery Service, the Volume service must be present, because REC 
  2440. calls the underlying VOL functions. 
  2441.  
  2442.  
  2443. ΓòÉΓòÉΓòÉ 5.4.2.5. Log Service ΓòÉΓòÉΓòÉ
  2444.  
  2445. The Log service (LOG) module of the Encina Server service provides a 
  2446. write-ahead log for storing transaction outcomes and updates to recoverable 
  2447. data.  Flexible archiving allows separate crash and media recovery logs to be 
  2448. produced from a single stream of log records.  This service implements a common 
  2449. log, in that a single log may be shared among many participants for 
  2450. substantially better performance.  An individual application, however, can view 
  2451. only its own log records. 
  2452.  
  2453.  
  2454. ΓòÉΓòÉΓòÉ 5.4.3. Encina General APIs ΓòÉΓòÉΓòÉ
  2455.  
  2456. The following services are used throughout Encina but are not part of the Base 
  2457. or Service systems: 
  2458.  
  2459. o   Trace 
  2460. o   Administrative 
  2461.  
  2462.  
  2463. ΓòÉΓòÉΓòÉ 5.4.3.1. Trace ΓòÉΓòÉΓòÉ
  2464.  
  2465. The Encina trace facility allows programmers to obtain various information 
  2466. about components and products.  Components are modules such as TRAN, REC, and 
  2467. TRPC, whereas products are defined as lists of components.  Products are full 
  2468. systems, such as the Encina Base and Encina Server, and SFS.  Tracing can be 
  2469. turned on for a single component, an entire product, or any combination of 
  2470. components and products. 
  2471.  
  2472. The trace facility is a system observation tool that captures a sequential flow 
  2473. of time-stamped system events, providing a fine level of detail on system 
  2474. activity.  Events are shown in time sequence and in the context of other 
  2475. events. It is a valuable tool for observing system and application execution. 
  2476. Where other tools provide high-level statistics, such as CPU utilization or I/O 
  2477. wait time, the trace facility is useful in expanding the information into 
  2478. detailed statistics. 
  2479.  
  2480. Encina uses AIX/6000 trace hook 0x294. 
  2481.  
  2482.  
  2483. ΓòÉΓòÉΓòÉ 5.4.3.2. Administrative ΓòÉΓòÉΓòÉ
  2484.  
  2485. Encina servers rely heavily on DCE; consequently, DCE must be configured before 
  2486. Encina is.  Encina is configured with the System Management Interface Tool 
  2487. (SMIT).  SMIT uses interactive menus instead of command-line interfaces to 
  2488. guide administrators through configuration and other system management tasks. 
  2489. To begin basic Encina configuration with SMIT, enter the smit encina command at 
  2490. a command prompt.  Each component of Encina may require configuration beyond 
  2491. the scope of basic configuration.  This additional configuration can be 
  2492. accomplished through SMIT as well. 
  2493.  
  2494. For information about the administrative functions actually provided by the 
  2495. various modules of the Encina Server, refer to the Encina for AIX/6000 Base 
  2496. Reference or Encina for AIX/6000 Server Reference 
  2497.  
  2498.  
  2499. ΓòÉΓòÉΓòÉ 5.4.4. Encina Monitor APIs ΓòÉΓòÉΓòÉ
  2500.  
  2501. The Encina Monitor extends the Encina Base and Server functions by offering a 
  2502. complete solution for open, distributed online transaction processing (OLTP). 
  2503. The features of the Encina Monitor can be separated into three areas of 
  2504. transaction processing application support: a development environment, an 
  2505. execution environment, and an administration environment. 
  2506.  
  2507. The Monitor libraries provide the following types of calls: 
  2508.  
  2509. Diagnostic facilities     The diagnostic facilities of the Monitor allow 
  2510.                           application programs to report errors and other 
  2511.                           related information in a manner that is integrated 
  2512.                           with Monitor reporting mechanisms.  The information 
  2513.                           is collected and then written to a file.  Both 
  2514.                           clients and servers can use the diagnostic 
  2515.                           facilities. 
  2516.  
  2517. Environment retrieval     The environment retrieval functions allow an 
  2518.                           application program to determine various 
  2519.                           characteristics of its execution environment.  These 
  2520.                           functions primarily provide mechanisms for an 
  2521.                           application to construct an audit trail to ensure 
  2522.                           application integrity. 
  2523.  
  2524. Transaction control       The transaction control functions provide a mechanism 
  2525.                           outside of Tran-C to initiate and control 
  2526.                           transactions.  Transaction control only provides a 
  2527.                           subset of the features available to the Tran-C user; 
  2528.                           for instance, nested transactions are not supported. 
  2529.  
  2530.                           Transactional-C is the preferred mechanism for C 
  2531.                           programs to specify transactions.  The transaction 
  2532.                           control functions allow transactional semantics to be 
  2533.                           bound to languages other than C. 
  2534.  
  2535. Server shared memory allocation and locking The server shared memory allocation 
  2536.                           and locking facility provides a mechanism for 
  2537.                           multiple application threads in an application server 
  2538.                           to share data and lock resources in a transactional 
  2539.                           manner.  Some calls allocate shared memory areas, 
  2540.                           while others acquire and relinquish the right to read 
  2541.                           and write these areas.  The shared memory functions 
  2542.                           primarily provide a performance boost in situations 
  2543.                           where transactional integrity is not necessary. 
  2544.  
  2545.                           The locking mechanism can be used without necessarily 
  2546.                           referencing shared memory.  For instance, if an 
  2547.                           application server wishes to use a serially reusable 
  2548.                           device such as a tape drive or printer, concurrence 
  2549.                           can be controlled by locking a shared memory area 
  2550.                           that was never actually accessed. 
  2551.  
  2552. Timer Support             Timer Support provides the ability to initiate an 
  2553.                           asynchronous local procedure call at a time 
  2554.                           designated by the calling program.  Options provide 
  2555.                           the flexibility needed to satisfy various application 
  2556.                           needs. 
  2557.  
  2558. For more information on Encina Monitor APIs, see Messaging and Queuing. 
  2559.  
  2560.  
  2561. ΓòÉΓòÉΓòÉ 5.4.4.1. Messaging and Queuing ΓòÉΓòÉΓòÉ
  2562.  
  2563. The IBM MQSeries Message Queue Interface (MQI) provides an interface for 
  2564. message-driven processing (such as asynchronous communications between 
  2565. programs).  MQI also provides message forwarding between systems, message 
  2566. driven-processing through triggering facilities, and isolation from vendor 
  2567. queue service interfaces and data formats. 
  2568.  
  2569. Encina Recoverable Queuing Service (RQS) servers support transactional 
  2570. applications that must offload all or part of a task for later processing.  The 
  2571. RQS enables data related to a task to be stored in queues and subsequently 
  2572. processed by client programs.  This offloading may be desirable when use of a 
  2573. resource incurs an unacceptable time penalty during peak usage hours or when a 
  2574. resource is temporarily unavailable. 
  2575.  
  2576. The Encina RQS APIs are divided into the following categories: 
  2577.  
  2578. o   Element type 
  2579. o   Element 
  2580. o   Locking 
  2581. o   IDs 
  2582. o   Queues 
  2583. o   Queue set 
  2584. o   Key 
  2585. o   Cursor 
  2586. o   RQS allocated memory 
  2587. o   Batch 
  2588. o   RQS server 
  2589. o   RQS client 
  2590.  
  2591.  
  2592. Element type 
  2593. rqs_ElementTypeCreate            Defines a new element type. 
  2594. rqs_ElementTypeDestroy           Destroys an element type. 
  2595. rqs_ElementTypeRetrieve          Retrieves an element type specification 
  2596.  
  2597.  
  2598. Element 
  2599. rqs_ElementDelete                Deletes an identified element from its queue. 
  2600. rqs_ElementModify                Modifies a specified value in an element. 
  2601. rqs_ElementRead                  Reads an identified element. 
  2602.  
  2603.  
  2604. Locking 
  2605. rqs_ElementDropLock              Drops a lock held on the specified element. 
  2606. rqs_ElementListDropLocks         Drops a lock held on each of the specified 
  2607.                                  elements. 
  2608.  
  2609.  
  2610. ID 
  2611. rqs_ElementIdCmp                 Compares two element IDs. 
  2612. rqs_ElementIdToString            Translates an element ID to a string. 
  2613. rqs_StringToElementId            Translates a string into an element ID. 
  2614.  
  2615.  
  2616. Queue 
  2617. rqs_AcquireExclusiveAccess       Obtains exclusive access to a queue. 
  2618. rqs_CallbackOnCumulativeWork     Registers a callback dependent on the work 
  2619.                                  accumulation for the queue. 
  2620. rqs_CallbackOnElementCount       Registers a callback dependent on the number 
  2621.                                  of elements in a queue. 
  2622. rqs_CallbackOnQueueSize          Registers a callback dependent on the queue 
  2623.                                  size in kilobytes. 
  2624. rqs_DeleteAllElements            Removes all the elements from a queue. 
  2625. rqs_Dequeue                      Removes an element from a queue. 
  2626. rqs_EnableTransactionalAccess    Enables full exclusive access for the current 
  2627.                                  transaction. 
  2628. rqs_Enqueue                      Adds an element to a queue. 
  2629. rqs_QCreate                      Creates a new queue. 
  2630. rqs_QDestroy                     Destroys an existing queue. 
  2631. rqs_QStat                        Obtains information about a queue. 
  2632. rqs_ReleaseExclusiveAccess       Releases exclusive access to a queue. 
  2633. rqs_Requeue                      Adds an orphaned element to a queue. 
  2634. rqs_RequeueAndModify             Adds an orphaned element to a queue and 
  2635.                                  modifies it. 
  2636. rqs_ResetStatisticsPeriod        Resets the period of statistics collection for 
  2637.                                  a queue. 
  2638.  
  2639.  
  2640. Queue Set 
  2641. rqs_InsertQueue                  Inserts a queue into a queue set. 
  2642. rqs_QSCreate                     Creates a new queue set. 
  2643. rqs_QSDequeue                    Removes an element from a queue set. 
  2644. rqs_QSDestroy                    Destroys an existing queue set. 
  2645. rqs_QSStat                       Obtains information about a queue set. 
  2646. rqs_RemovePriorities             Removes specific priority classes from a queue 
  2647.                                  set. 
  2648. rqs_RemoveQueue                  Removes a queue from a queue set. 
  2649. rqs_SetInfiniteServiceLevels     Associates infinite service levels with all 
  2650.                                  priority classes in a queue set. 
  2651. rqs_SetQueuePriority             Associates a queue with a priority class with 
  2652.                                  a queue set. 
  2653. rqs_SetServiceLevels             Sets the service levels for priority classes 
  2654.                                  in a queue set. 
  2655.  
  2656.  
  2657. Key 
  2658. rqs_RetrieveByKey                Accesses elements by key value. 
  2659. rqs_RetrieveByKeys               Accesses elements by intersecting multiple key 
  2660.                                  retrievals. 
  2661.  
  2662.  
  2663. Cursor APIs 
  2664. rqs_CursorCopy                   Copies an existing cursor. 
  2665. rqs_CursorCreate                 Initializes a cursor for use on a queue. 
  2666. rqs_CursorDropLock               Drops the last element lock held for cursor 
  2667.                                  stability. 
  2668. rqs_CursorReadNext               Reads an element and advances the cursor past 
  2669.                                  it. 
  2670. rqs_CursorReadSequence           Reads a specified number of elements and 
  2671.                                  advances the cursor past them. 
  2672. rqs_CursorRelease                Releases ownership of a cursor. 
  2673. rqs_CursorReset                  Resets a cursor to the beginning of its queue. 
  2674.  
  2675.  
  2676. RQS allocated memory 
  2677. rqs_Free                         Frees memory allocated by the RQS. 
  2678.  
  2679.  
  2680. Batch 
  2681. rqs_BatchElementDelete           Appends an element-delete operation to a 
  2682.                                  batch-call object. 
  2683. rqs_BatchElementModify           Appends an element-modify operation to a 
  2684.                                  batch-call object. 
  2685. rqs_BatchElementRead             Appends an element-read operation to a 
  2686.                                  batch-call object. 
  2687. rqs_BatchExecute                 Submits a batch-call object for execution. 
  2688. rqs_BatchFinalize                Reclaims RQS internal structures associated 
  2689.                                  with a batch-call object. 
  2690. rqs_BatchGetEntryInfo            Describes the contents of a batch-call entry. 
  2691. rqs_BatchGetNumEntries           Returns the number of entries in the 
  2692.                                  batch-call object. 
  2693. rqs_BatchInitialize              Initializes a batch-call object. 
  2694. rqs_BatchRequeue                 Appends a requeue operation to a batch-call 
  2695.                                  object. 
  2696. rqs_BatchRequeueAndModify        Appends a requeue-and-modify operation to a 
  2697.                                  batch-call object. 
  2698.  
  2699.  
  2700. RQS server 
  2701. rqs_FreeServerHandle             Closes a connection to an RQS server. 
  2702. rqs_GetServerHandle              Obtains a binding handle to an RQS server. 
  2703. rqs_ServerStat                   Retrieves information about the status of an 
  2704.                                  RQS server. 
  2705. rqs_SetCallbackRefreshPeriod     Sets the client's maximum refresh period. 
  2706. rqs_SetCallbackRetentionPeriod   Sets the server's retention period for 
  2707.                                  callback registrations. 
  2708. rqs_SetClientTimeout             Sets a client-specific period for a timeout 
  2709.                                  class. 
  2710. rqs_SetServerTimeout             Sets a server-wide default period for a 
  2711.                                  timeout class. 
  2712. rqs_SetThreadTimeout             Sets a timeout class's period for the next RPC 
  2713.                                  in a thread. 
  2714.  
  2715.  
  2716. RQS client 
  2717. rqs_ClientInit                   Initializes an RQS client application. 
  2718.  
  2719.  
  2720. ΓòÉΓòÉΓòÉ 5.4.5. Conversations ΓòÉΓòÉΓòÉ
  2721.  
  2722. The X/Open Common Programming Interface for Communications (CPI-C) provides an 
  2723. interface for applications  to utilize peer programming. X/Open CPI-C was 
  2724. derived from the IBM System Application Architecture (SAA) CPI-C interface and 
  2725. modified to map to the OSI/TP, and therefore reflects OSI terminology and 
  2726. semantics. For more information on X/Open CPI-C, see X/Open Mainframe Data 
  2727. Access - CPI-C. 
  2728.  
  2729. Encina Peer-to-Peer Communications (PPC) Services extends the X/Open CPI-C 
  2730. interface by adding support for transaction processing with the support for the 
  2731. IBM SAA Common Programming Interface for Resource Recovery (CPI-RR).  Encina 
  2732. PPC also offers the ability to operate between X/Open-based transaction 
  2733. processing systems and those systems that have System Network Architecture 
  2734. (SNA) LU-Type 6.2 SyncPoint Service support. 
  2735.  
  2736.  
  2737. ΓòÉΓòÉΓòÉ 5.4.6. Record-Oriented File Services ΓòÉΓòÉΓòÉ
  2738.  
  2739. X/Open Indexed Sequential Access Method (ISAM) provides an interface for 
  2740. record-oriented operations.  The interface provides operations that create and 
  2741. manipulate indexed data files.  For more information on X/Open ISAM, refer to 
  2742. X/Open Data Management - Indexed Sequential Access Method (ISAM). 
  2743.  
  2744. The Encina Structured File Server (SFS) offers an X/Open-compliant ISAM 
  2745. interface called the Encina Transactional Indexed Sequential Access Method 
  2746. (T-ISAM).  In addition to providing transactional data integrity for 
  2747. record-oriented operations, the Encina SFS also offers a virtual storage access 
  2748. method (VSAM)-style API with additional functionality for relative record 
  2749. operations.  These capabilities also provide compatibility with the Informix 
  2750. C-ISAM interface. 
  2751.  
  2752. The Encina SFS provides the capability to use the SFS with Microfocus COBOL 
  2753. programs by supplying the Microfocus COBOL External File Handler (EXTFH) 
  2754. interface. 
  2755.  
  2756.  
  2757. ΓòÉΓòÉΓòÉ 6. Communication Services ΓòÉΓòÉΓòÉ
  2758.  
  2759. Communication services provide mechanisms for parts of a distributed 
  2760. application or resource manager to talk to each other. 
  2761.  
  2762. For more information about communication services APIs, see: 
  2763.  
  2764. o   Messaging and Queuing 
  2765. o   Named Pipes 
  2766. o   Event Notification 
  2767. o   Remote Procedure Calls 
  2768. o   Object Request Broker 
  2769.  
  2770.  
  2771. ΓòÉΓòÉΓòÉ 6.1. Messaging and Queuing ΓòÉΓòÉΓòÉ
  2772.  
  2773. Messaging and queuing allows for general-purpose messages to be exchanged in a 
  2774. client-server system using message queues.  Applications communicate over 
  2775. networks by placing and receiving messages in queues. Messaging and queuing 
  2776. allows clients and servers to communicate across a network without being linked 
  2777. by a private, dedicated, logical connection. 
  2778.  
  2779. For more information about messaging and queuing APIs, see: 
  2780.  
  2781. o   LAN Server Mailslot APIs 
  2782. o   Hints for Messaging and Queuing 
  2783.  
  2784.  
  2785. ΓòÉΓòÉΓòÉ 6.1.1. LAN Server Mailslot APIs ΓòÉΓòÉΓòÉ
  2786.  
  2787. Data can be sent to either local or remote applications on a network through 
  2788. LAN Server mailslots.  The Mailslot functions create and delete mailslots, 
  2789. retrieve information about either a mailslot or the message in it, and write 
  2790. messages to mailslots. 
  2791.  
  2792. Any application can write messages to any mailslot on any computer on the 
  2793. network by calling the Dos32WriteMailslot function.  This function accepts 
  2794. mailslot names both in a local and remote format.  Two classes of messages, 
  2795. first-class and second-class, can be sent to mailslots.  First-class messages, 
  2796. limited to mailslots on local computers and remote servers, are guaranteed; the 
  2797. message is delivered or the sender is notified.  Second-class messages are sent 
  2798. without any return code informing the sender of delivery. This simpler delivery 
  2799. system tends to make second-class messages faster than first-class messages. 
  2800.  
  2801. The following APIs are in the Messaging category: 
  2802.  
  2803. Dos32DeleteMailslot     Deletes a mailslot.  This API discards all read and 
  2804.                         unread messages. 
  2805. Dos32MailslotInfo       Retrieves information about a specified mailslot. 
  2806. Dos32MakeMailslot       Creates a mailslot and returns its handle. 
  2807. Dos32PeekMailslot       Reads the next available message in a mailslot without 
  2808.                         removing it. 
  2809. Dos32ReadMailslot       Reads and then discards the next available message of a 
  2810.                         mailslot. 
  2811. Dos32WriteMailslot      Writes a message to a specified mailslot. 
  2812.  
  2813.  
  2814. ΓòÉΓòÉΓòÉ 6.1.2. Hints for Messaging and Queuing ΓòÉΓòÉΓòÉ
  2815.  
  2816. Messaging and queuing allows applications to communicate with each other 
  2817. asynchronously through queue managers so that after the delivery is guaranteed, 
  2818. all the routing details are encapsulated inside queue managers and transparent 
  2819. to applications.  The MQSeries family of products (IBM Messaging and Queuing 
  2820. Series), enable programs to talk to each other across a heterogeneous network 
  2821. using a simple and consistent API (MQI) that hides all the difficult work of 
  2822. communication. MQPUT, MQGET are the main functions that get and put messages in 
  2823. the queue.  An application developer who develops a parallel distributed 
  2824. application should take advantage of the load balancing capabilities of 
  2825. messaging and queuing.  For queue managers, IBM MQSeries provide generic 
  2826. message queue manager (MQM) functions: 
  2827.  
  2828. o   Queue name-to-address resolution 
  2829. o   Message routing 
  2830. o   Message Channel Agent (MCA) 
  2831. o   Administration 
  2832. o   Sync point 
  2833.  
  2834. For more information on the IBM MQSeries of products, refer to the IBM An 
  2835. Introduction to Messaging and Queuing, GC33-0805. 
  2836.  
  2837.  
  2838. ΓòÉΓòÉΓòÉ 6.2. Named Pipes ΓòÉΓòÉΓòÉ
  2839.  
  2840. A named pipe is a bidirectional IPC facility that allows two processes, either 
  2841. local or remote, to communicate with each other over a network. A process that 
  2842. creates a named pipe is known as a server process; a client process establishes 
  2843. a connection to a named pipe. 
  2844.  
  2845. An inbound or outbound named pipe (also known as anonymous pipes in some other 
  2846. multitasking operating systems) allows a process only to read or write by way 
  2847. of one handle.  A full-duplex named pipe allows a process to read and write 
  2848. data by way of one handle. 
  2849.  
  2850. The following named pipes APIs are provided by the OS/2 base operating system 
  2851. and supported by LAN Server across the network: 
  2852.  
  2853. DosResetBuf               Resets a specified buffer. 
  2854. DosCallNPipe              Calls a named pipe. 
  2855. DosClose                  Closes a file or pipe. 
  2856. DosConnectNPipe           Prepares a named pipe for a client process by placing 
  2857.                           the pipe into the listening state. 
  2858. DosDisConnectNPipe        Acknowledges that a client process has closed a named 
  2859.                           pipe. 
  2860. DosDupHandle              Copies a handle 
  2861. DosCreateNPipe            Creates a named pipe. 
  2862. DosOpen                   Opens a file or pipe for reading or writing 
  2863. DosPeekNPipe              Examines the data in a named pipe without removing 
  2864.                           the data. 
  2865. DosQueryFHState           Determines whether a handle can be inherited and 
  2866.                           whether write-behind is allowed. 
  2867. DosQueryHType             Returns the type of handle. 
  2868. DosQueryNPHState          Returns the low-level parameters associated with a 
  2869.                           handle and the operating mode of the pipe.  It also 
  2870.                           declares the instance count. 
  2871. DosQNPipeInfo             Returns the size of buffers and the number of 
  2872.                           instances currently available. 
  2873. DosRead                   Reads from a file or pipe. 
  2874. DosReadAsync              Reads from a file or pipe asynchronously. 
  2875. DosSetFHState             Sets whether a handle of a named pipe can be 
  2876.                           inherited and whether write-behind is allowed. 
  2877. DosSetNPHState            Sets low-level parameters associated with pipes such 
  2878.                           as reading and writing mode. 
  2879. DosSetNPipeSem            Sets the association of a semaphore to a named pipe. 
  2880. DosWaitNPipe              Waits for an instance of a named pipe to become 
  2881.                           available. 
  2882. DosWrite                  Writes to a file or pipe. 
  2883. DosWriteAsync             Writes to a file or pipe asynchronously. 
  2884.  
  2885.  
  2886. ΓòÉΓòÉΓòÉ 6.3. Event Notification ΓòÉΓòÉΓòÉ
  2887.  
  2888. The Event Notification APIs provide a system for notifying network server 
  2889. programs and applications of network events. 
  2890.  
  2891. See LAN Server Event Notification APIs for more information. 
  2892.  
  2893.  
  2894. ΓòÉΓòÉΓòÉ 6.3.1. LAN Server Event Notification APIs ΓòÉΓòÉΓòÉ
  2895.  
  2896. An event is a particular instance of a process or state of hardware defined by 
  2897. an application or by the LAN Server software.  LAN Server sends out an alert, 
  2898. in the form of a message or by the resetting of a semaphore, when certain 
  2899. events occur. 
  2900.  
  2901. The classes of events for the alerts include: 
  2902.  
  2903. o   A print job was completed. 
  2904. o   A user or application received a broadcast message. 
  2905. o   An entry was added to an error log file. 
  2906. o   A network event required administrative assistance. 
  2907. o   A user accessed or used certain applications or resources. 
  2908.  
  2909. Other classes of alerts can be defined for network applications as needed. For 
  2910. example, if an application routinely writes large amounts of data to a disk 
  2911. drive, running the risk of filling the disk, an administrator might want the 
  2912. event of no free disk space to trigger an alert that notifies the application 
  2913. to pause or end the process that is slowing the system. 
  2914.  
  2915. The following NetAlert APIs are part of the Alert Notification category: 
  2916.  
  2917. Net32AlertRaise         Notifies all clients registered as semaphores or 
  2918.                         mailslots in the alert table that a particular event 
  2919.                         has occurred. 
  2920. Net32Alert Start        Registers a client to be notified of a particular type 
  2921.                         of network event. 
  2922. Net32AlertStop          Removes a registered client from the alert table. 
  2923.  
  2924.  
  2925. ΓòÉΓòÉΓòÉ 6.4. Remote Procedure Calls ΓòÉΓòÉΓòÉ
  2926.  
  2927. Remote procedure calls (RPCs) hide the intricacies of a network by using an 
  2928. ordinary procedure call mechanism.  A client process calls a function on a 
  2929. remote server and waits until it receives the results.  An RPC passes 
  2930. parameters in the same manner as ordinary procedures. 
  2931.  
  2932. For more information on RPC-related APIs, see: 
  2933.  
  2934. o   LAN Server Remote Program Call API 
  2935. o   DCE RPC APIs 
  2936. o   Future Directions for SOM 
  2937.  
  2938.  
  2939. ΓòÉΓòÉΓòÉ 6.4.1. LAN Server Remote Program Call API ΓòÉΓòÉΓòÉ
  2940.  
  2941. The LAN Server Net32RemoteExec API provides for remotely running a program on a 
  2942. remote server, redirecting standard input and output back to the client to 
  2943. allow user interaction.  This API performs the same tasks as the DosExecPgm 
  2944. API, but on another network server. 
  2945.  
  2946.  
  2947. ΓòÉΓòÉΓòÉ 6.4.2. DCE RPC APIs ΓòÉΓòÉΓòÉ
  2948.  
  2949. The DCE RPC Runtime facility manages both communications operations for RPC 
  2950. applications and operations that bind information.  As part of server 
  2951. initialization, a server sets up its communications capabilities by a series of 
  2952. calls to the RPC Runtime facility.  These runtime calls register the server RPC 
  2953. interfaces, tell the RPC Runtime facility what combination of communications 
  2954. protocols to use for the server, and register the endpoints of the server for 
  2955. each of its interfaces.  After completing these and any other initialization 
  2956. tasks, the server tells the Runtime facility to begin listening for incoming 
  2957. calls. 
  2958.  
  2959. The Runtime facility also provides a variety of communications operations that 
  2960. allow servers to access and manipulate binding information.  In addition, a set 
  2961. of communications operations enables applications to manipulate string 
  2962. representations of binding information (string bindings). 
  2963.  
  2964. The DCE RPC development environment includes: 
  2965.  
  2966. o   UUID Generator 
  2967. o   RPC Interface Definition Language 
  2968. o   RPC Daemon 
  2969. o   RPC Control Program 
  2970. o   RPC Name Service Interface 
  2971. o   Runtime Services 
  2972.  
  2973.  
  2974. ΓòÉΓòÉΓòÉ 6.4.2.1. UUID Generator ΓòÉΓòÉΓòÉ
  2975.  
  2976. The DCE UUID generator is a utility that creates universal unique identifiers 
  2977. (UUIDs), hexadecimal numbers that contain information that make them unique 
  2978. from other UUIDs.  This information includes a timestamp of the UUID creation 
  2979. time and an identifier of the host of origin. 
  2980.  
  2981. The following list shows RPC APIs that are associated with the DCE UUID 
  2982. generator.  These routines are part of the DCE RPC Runtime facility, but are 
  2983. listed separately. 
  2984.  
  2985. uuid_compare            Compares two UUIDs and determines their order. 
  2986. uuid_create             Creates a new UUID. 
  2987. uuid_create_nil         Creates a nil UUID. 
  2988. uuid_equal              Determines whether two UUIDs are equal. 
  2989. uuid_from_string        Converts a string UUID to its binary representation. 
  2990. uuid_hash               Creates a hash value for a UUID. 
  2991. uuid_is_nil             Determines if a UUID is nil. 
  2992. uuid_to_string          Converts a UUID from a binary representation to a 
  2993.                         string representation 
  2994.  
  2995.  
  2996. ΓòÉΓòÉΓòÉ 6.4.2.2. RPC Interface Definition Language ΓòÉΓòÉΓòÉ
  2997.  
  2998. Developing an RPC application involves writing and compiling an interface 
  2999. definition for a specific RPC interface that is written in the DCE interface 
  3000. definition language (IDL).  The IDL is a high-level descriptive language whose 
  3001. syntax resembles that of ANSI C.  DCE RPC interface definitions contain two 
  3002. basic components: an interface header and an interface body. 
  3003.  
  3004. The DCE IDL compiler processes RPC interface definitions written in DCE IDL and 
  3005. generates header files and stub object code.  (The compiler can generate source 
  3006. code for the stubs written in ANSI C).  The code generated from an RPC 
  3007. interface definition by the compiler includes client and server stubs that 
  3008. contain the RPC interface. 
  3009.  
  3010. The following routines perform stub memory management and stub support: 
  3011.  
  3012. rpc_sm_allocate                   Allocates memory within the RPC stub memory 
  3013.                                   management scheme. 
  3014. rpc_sm_client_free                Frees memory returned from a client stub. 
  3015. rpc_sm_destroy_client_context     Reclaims the client memory resources for a 
  3016.                                   context handle. 
  3017. rpc_sm_disable_allocate           Releases resources and allocated memory in 
  3018.                                   the stub memory management scheme. 
  3019. rpc_sm_enable_allocate            Enables the allocation of memory by the 
  3020.                                   rpc_sm_allocate routine when not in use. 
  3021. rpc_sm_free                       Frees memory allocated by the rpc_sm_ 
  3022.                                   allocate routine. 
  3023. rpc_sm_get_thread_handle          Gets a thread handle for the stub memory 
  3024.                                   management environment. 
  3025. rpc_sm_set_client_alloc_free      Sets the memory allocation and freeing 
  3026.                                   mechanisms used by the client stubs. 
  3027. rpc_sm_set_thread_handle          Sets a thread handle for the stub memory 
  3028.                                   management environment. 
  3029. rpc_sm_swap_client_alloc_free     Exchanges the current memory allocation and 
  3030.                                   freeing mechanism used by the client stubs 
  3031.                                   with one supplied by the client. 
  3032. rpc_ss_allocate                   Allocates memory within the RPC stub memory 
  3033.                                   management scheme. 
  3034. rpc_ss_client_free                Frees memory from a client stub. 
  3035. rpc_ss_destroy_client_context     Reclaims the client memory resources for the 
  3036.                                   context handle and sets the context handle to 
  3037.                                   null. 
  3038. rpc_ss_disable_allocate           Releases resources and allocated memory. 
  3039. rpc_ss_enable_allocate            Enables the allocation of memory by the 
  3040.                                   rpc_ss_allocate routine when not in manager 
  3041.                                   code. 
  3042. rpc_ss_free                       Frees memory allocated by the rpc_ss_allocate 
  3043.                                   routine. 
  3044. rpc_ss_get_thread_handle          Gets a thread handle for either the manager 
  3045.                                   code before it spawns additional threads, or 
  3046.                                   for the client code when it becomes a server. 
  3047. rpc_ss_set_client_alloc_free      Sets the memory allocation and freeing 
  3048.                                   mechanism used by the client stubs, thereby 
  3049.                                   overriding the default routines the client 
  3050.                                   stub uses to manage memory for pointed-to 
  3051.                                   nodes. 
  3052. rpc_ss_set_thread_handle          Sets the thread handle for either a newly 
  3053.                                   created spawned thread or for a server that 
  3054.                                   was formerly a client and is ready to be a 
  3055.                                   client again. 
  3056. rpc_ss_swap_client_alloc_free     Exchanges the current memory allocation and 
  3057.                                   freeing mechanism used by the client stubs 
  3058.                                   with one supplied by the client. 
  3059.  
  3060.  
  3061. ΓòÉΓòÉΓòÉ 6.4.2.3. RPC Daemon ΓòÉΓòÉΓòÉ
  3062.  
  3063. The RPC daemon is a server that provides the endpoint map service. An endpoint 
  3064. is the address of a specific instance of a server executing in a particular 
  3065. address space on a given system (a server instance).  The endpoint map service 
  3066. maintains the local endpoint map for local RPC servers and looks up endpoints 
  3067. for RPC clients.  Each endpoint can be used on a system by only one server at a 
  3068. time. 
  3069.  
  3070.  
  3071. ΓòÉΓòÉΓòÉ 6.4.2.4. RPC Control Program ΓòÉΓòÉΓòÉ
  3072.  
  3073. The RPC control program is an interactive management utility for the 
  3074. administrators and users of RPC applications.  The control program provides a 
  3075. means of managing namespace entries and endpoint mapping.  Many operations of 
  3076. the RPC directory service interface are accessible using the control program. 
  3077. Individuals with the necessary permission can add entries to and remove them 
  3078. from a namespace, can add information to and remove it from these entries, and 
  3079. can retrieve information.  Also, the control program enables displaying and 
  3080. deregistering endpoint map elements (or mappings) from the local endpoint map 
  3081. and any remote endpoint map. 
  3082.  
  3083.  
  3084. ΓòÉΓòÉΓòÉ 6.4.2.5. RPC Name Service Interface ΓòÉΓòÉΓòÉ
  3085.  
  3086. The name service interface (NSI) routines perform on a namespace for RPC 
  3087. applications.  The fundamental operations include the following: 
  3088.  
  3089. o   Creating and deleting entries in namespaces. 
  3090.  
  3091. o   Exporting.  A server uses the NSI export operation to place binding 
  3092.     information associated with its RPC interfaces and objects into the 
  3093.     namespace used by the RPC application. 
  3094.  
  3095. o   Importing.  Clients can search for exported binding information associated 
  3096.     with an interface and object using the NSI import operation or lookup 
  3097.     operation. These two operations are collectively referred to as the NSI 
  3098.     search operations. 
  3099.  
  3100. o   De-exporting.  The de-export operation enables a server to remove some or 
  3101.     all of its binding information from a server entry. 
  3102.  
  3103. o   Managing information in a namespace.  Applications use the NSI interface to 
  3104.     place information about server entries into a namespace and to query and 
  3105.     manage that information. 
  3106.  
  3107. The following list shows RPC APIs that are associated with the name service 
  3108. interface.  These routines are part of the DCE RPC runtime, but are listed 
  3109. separately. 
  3110.  
  3111. rpc_ns_binding_export             Establishes a name service database entry 
  3112.                                   with binding handles or object UUIDs for a 
  3113.                                   server. 
  3114. rpc_ns_binding_import_begin       Creates an import context for the interface 
  3115.                                   and an object in the name service database. 
  3116. rpc_ns_binding_import_done        Deletes the import context for searching the 
  3117.                                   name service database. 
  3118. rpc_ns_binding_import_next        Returns a binding handle of a compatible 
  3119.                                   server from the name service database. 
  3120. rpc_ns_binding_inq_entry_name     Returns the name of an entry in the name 
  3121.                                   service database the server binding handle 
  3122.                                   came from. 
  3123. rpc_ns_binding_lookup_begin       Creates a lookup context for an interface and 
  3124.                                   an object in the name service database. 
  3125. rpc_ns_binding_lookup_done        Deletes the lookup context for searching the 
  3126.                                   name service database. 
  3127. rpc_ns_binding_lookup_next        Returns a list of binding handles of one or 
  3128.                                   more compatible servers from the name service 
  3129.                                   database. 
  3130. rpc_ns_binding_select             Returns a binding handle from a list of 
  3131.                                   compatible server binding handles. 
  3132. rpc_ns_binding_unexport           Removes the binding handles for an interface 
  3133.                                   or object UUIDs from an entry in the name 
  3134.                                   service database. 
  3135. rpc_ns_entry_expand_name          Expands the name of a name service database 
  3136.                                   entry. 
  3137. rpc_ns_entry_object_inq_begin     Creates an inquiry context for viewing the 
  3138.                                   objects of an entry in the name service 
  3139.                                   database. 
  3140. rpc_ns_entry_object_inq_done      Deletes the inquiry context created by the 
  3141.                                   rpc_ns_entry_object_inq_begin routine. 
  3142. rpc_ns_entry_object_inq_next      Returns one object at a time from an entry in 
  3143.                                   the name service database. 
  3144. rpc_ns_group_delete               Deletes a group attribute. 
  3145. rpc_ns_group_mbr_add              Adds an entry name to a group.  If necessary, 
  3146.                                   it creates the group entry. 
  3147. rpc_ns_group_mbr_inq_begin        Creates an inquiry context for viewing group 
  3148.                                   members. 
  3149. rpc_ns_group_mbr_inq_done         Deletes the inquiry context for a group. 
  3150. rpc_ns_group_mbr_inq_next         Returns one member name at a time from a 
  3151.                                   group. 
  3152. rpc_ns_group_mbr_remove           Removes a member from a group. 
  3153. rpc_ns_mgmt_binding_unexport      Removes multiple binding handles or object 
  3154.                                   UUIDs from an entry in the name service 
  3155.                                   directory. 
  3156. rpc_ns_mgmt_entry_create          Creates an entry in the name service 
  3157.                                   database. 
  3158. rpc_ns_mgmt_entry_delete          Deletes an entry from the name service 
  3159.                                   database. 
  3160. rpc_ns_mgmt_entry_inq_if_ids      Returns the list of interfaces exported to an 
  3161.                                   entry in the name service database. 
  3162. rpc_ns_mgmt_handle_set_exp_age    Sets a handle expiration age for local copies 
  3163.                                   of name service data. 
  3164. rpc_ns_mgmt_inq_exp_age           Returns the application global expiration age 
  3165.                                   for local copies of name service data. 
  3166. rpc_ns_mgmt_set_exp_age           Modifies the global expiration age for local 
  3167.                                   copies of name service data. 
  3168. rpc_ns_profile_delete             Deletes a profile attribute. 
  3169. rpc_ns_profile_elt_add            Adds an element to a profile.  If necessary, 
  3170.                                   this routine creates the profile entry. 
  3171. rpc_ns_profile_elt_inq_begin      Creates an inquiry context for viewing 
  3172.                                   elements in a profile. 
  3173. rpc_ns_profile_elt_inq_done       Deletes the inquiry context for a profile. 
  3174. rpc_ns_profile_elt_inq_next       Returns one element at a time from a profile. 
  3175. rpc_ns_profile_elt_remove         Removes an element from a profile. 
  3176. rpc_string_binding_compose        Combines the components of a string binding 
  3177.                                   into a string binding. 
  3178. rpc_string_binding_parse          Returns the components of a string binding as 
  3179.                                   separate strings. 
  3180. rpc_string_free                   Frees a character string allocated by the 
  3181.                                   runtime facility. 
  3182.  
  3183.  
  3184. ΓòÉΓòÉΓòÉ 6.4.2.6. Runtime Services ΓòÉΓòÉΓòÉ
  3185.  
  3186. Every RPC server or client must be linked with the RPC runtime facility that is 
  3187. part of the DCE runtime facility.  The DCE RPC runtime facility manages 
  3188. communications for RPC applications.  In addition, the DCE RPC runtime facility 
  3189. provides a library of routines to support RPC applications.  An API enables 
  3190. server application code and client application code to call RPC routines to 
  3191. access runtime operations.  The basic classes of runtime operations include the 
  3192. following: 
  3193.  
  3194. o   Communications operations that establish communications links, transmit and 
  3195.     receive remote procedure calls, and affect how data is transmitted. 
  3196.  
  3197. o   Name service interface (NSI) operations that access namespace databases for 
  3198.     RPC applications. 
  3199.  
  3200. o   Endpoint operations that allow servers to add server addressing information 
  3201.     to and remove it from the local endpoint map. 
  3202.  
  3203. o   Authentication operations that affect the type of authentication, 
  3204.     protection level, and type of authorization used for communications between 
  3205.     a client and server. 
  3206.  
  3207. o   Miscellaneous classes of operations, such as the UUID operations, with 
  3208.     which applications manipulate UUIDs, and the management operations, which 
  3209.     include a number of management operations such as stopping servers and 
  3210.     diagnostics operations that assist error diagnosis. 
  3211.  
  3212. The following lists show which RPC APIs belong to the various classes of RPC 
  3213. runtime operations: 
  3214.  
  3215.  
  3216. ΓòÉΓòÉΓòÉ 6.4.2.6.1. Communications operations ΓòÉΓòÉΓòÉ
  3217.  
  3218. rpc_network_inq_protseqs          Returns all protocol sequences supported by 
  3219.                                   the RPC runtime facility as well as the 
  3220.                                   operating system client and server 
  3221.                                   applications. 
  3222. rpc_network_is_protseq_valid      Indicates whether the specified protocol 
  3223.                                   sequence is supported by both the RPC runtime 
  3224.                                   facility and the operating system. 
  3225. rpc_server_inq_bindings           Returns binding handles for communication 
  3226.                                   with a server. 
  3227. rpc_server_inq_if                 Returns the manager entry point vector 
  3228.                                   registered for an interface. 
  3229. rpc_server_listen                 Tells the runtime to listen for RPCs. 
  3230. rpc_server_use_all_protseqs       Tells the runtime to use all supported 
  3231.                                   protocol sequences for receiving RPCs. 
  3232. rpc_server_use_all_protseqs_if    Tells the runtime facility to use all the 
  3233.                                   protocol sequences and endpoints specified in 
  3234.                                   the interface specification for receiving 
  3235.                                   RPCs. 
  3236. rpc_server_use_protseq            Tells the runtime facility to use the 
  3237.                                   specified protocol sequence for receiving 
  3238.                                   RPCs. 
  3239. rpc_server_use_protseq_ep         Tells the runtime facility to use the 
  3240.                                   specified protocol sequence combined with the 
  3241.                                   specified endpoint for receiving RPCs. 
  3242. rpc_server_use_protseq_if         Tells the runtime facility to use the 
  3243.                                   specified protocol sequence combined with the 
  3244.                                   endpoints in the interface specification for 
  3245.                                   receiving RPCs. 
  3246.  
  3247.  
  3248. ΓòÉΓòÉΓòÉ 6.4.2.6.2. Endpoint operations ΓòÉΓòÉΓòÉ
  3249.  
  3250. rpc_ep_register                   Adds to or replaces server address 
  3251.                                   information in the local endpoint map. 
  3252. rpc_ep_register_no_replace        Adds to server address information in the 
  3253.                                   local endpoint map. 
  3254. rpc_ep_resolve_binding            Resolves a partially-bound server binding 
  3255.                                   handle into a fully-bound server binding 
  3256.                                   handle. 
  3257. rpc_ep_unregister                 Removes server address information from the 
  3258.                                   local endpoint map. 
  3259. rpc_if_id_vector_free             Frees a vector and the interface identifier 
  3260.                                   structures it contains. 
  3261. rpc_if_inq_id                     Returns the interface identifier for an 
  3262.                                   interface specification. 
  3263. rpc_mgmt_ep_elt_inq_begin         Creates an inquiry context for viewing the 
  3264.                                   elements in a local or remote endpoint map. 
  3265. rpc_mgmt_ep_elt_inq_done          Deletes the inquiry context created by the 
  3266.                                   rpc_mgmt_ep_elt_inq_begin routine. 
  3267. rpc_mgmt_ep_elt_inq_next          Returns an element from a local or remote 
  3268.                                   endpoint map. 
  3269. rpc_mgmt_ep_elt_unregister        Removes server address information from a 
  3270.                                   local or remote endpoint map. 
  3271.  
  3272.  
  3273. ΓòÉΓòÉΓòÉ 6.4.2.6.3. Authentication operations ΓòÉΓòÉΓòÉ
  3274.  
  3275. rpc_binding_copy                  Returns a copy of a binding handle. 
  3276. rpc_binding_free                  Releases binding handle resources. 
  3277. rpc_binding_from_string_binding   Returns a binding handle from a string 
  3278.                                   representation of a binding handle. 
  3279. rpc_binding_inq_auth_client       Returns authentication and authorization 
  3280.                                   information from the client binding handle 
  3281.                                   for an authenticated client. 
  3282. rpc_binding_inq_auth_info         Returns authentication and authorization 
  3283.                                   information from a server binding handle. 
  3284. rpc_binding_inq_object            Returns the object UUID from a binding 
  3285.                                   handle. 
  3286. rpc_binding_reset                 Resets a server binding handle so the host 
  3287.                                   remains specified, but the server instance on 
  3288.                                   that host is unspecified. 
  3289. rpc_binding_server_from_client    Converts a client binding handle to a server 
  3290.                                   binding handle. 
  3291. rpc_binding_set_auth_info         Sets authentication and authorization 
  3292.                                   information for a server binding handle. 
  3293. rpc_binding_set_object            Sets the object UUID value into a server 
  3294.                                   binding handle. 
  3295. rpc_binding_to_string_binding     Returns a string representation of a binding 
  3296.                                   handle. 
  3297. rpc_binding_vector_free           Frees the memory used to store a vector and 
  3298.                                   binding handles. 
  3299. rpc_server_register_auth_info     Registers authentication information with the 
  3300.                                   RPC runtime facility. 
  3301. rpc_server_register_if            Registers an interface with the RPC runtime 
  3302.                                   facility. 
  3303. rpc_server_unregister_if          Removes an interface from the RPC runtime 
  3304.                                   facility. 
  3305.  
  3306.  
  3307. ΓòÉΓòÉΓòÉ 6.4.2.6.4. Miscellaneous operations ΓòÉΓòÉΓòÉ
  3308.  
  3309. rpc_mgmt_inq_com_timeout          Returns the communication timeout value in a 
  3310.                                   binding handle. 
  3311. rpc_mgmt_inq_dflt_protect_level   Returns the default protection level for an 
  3312.                                   authentication service. 
  3313. rpc_mgmt_inq_if_ids               Returns a vector of interface identifiers of 
  3314.                                   the interfaces a server offers. 
  3315. rpc_mgmt_inq_server_prince_name   Returns a server principal name. 
  3316. rpc_mgmt_inq_stats                Returns RPC runtime statistics. 
  3317. rpc_mgmt_is_server_listening      Indicates whether a server is listening for 
  3318.                                   RPCs. 
  3319. rpc_mgmt_set_authorization_fn     Establishes an authorization function for 
  3320.                                   processing remote calls to the server 
  3321.                                   management routines. 
  3322. rpc_mgmt_set_cancel_timeout       Sets a minimum time to wait before timing out 
  3323.                                   after forwarding a cancel. 
  3324. rpc_mgmt_set_com_timeout          Sets the communications timeout value in a 
  3325.                                   binding handle. 
  3326. rpc_mgmt_set_server_stack_size    Specifies the stack size for each server 
  3327.                                   thread. 
  3328. rpc_mgmt_stats_vector_free        Frees a statistics vector. 
  3329. rpc_mgmt_stop_server_listening    Tells a server to stop listening for RPCs. 
  3330. rpc_object_inq_type               Returns the type of an object. 
  3331. rpc_object_set_inq_fn             Registers an object inquiry function. 
  3332. rpc_object_set_type               Registers the type of an object with the RPC 
  3333.                                   runtime. 
  3334. rpc_protseq_vector_free           Frees the memory used by a vector and its 
  3335.                                   protocol sequences. 
  3336.  
  3337.  
  3338. ΓòÉΓòÉΓòÉ 6.5. Object Request Broker ΓòÉΓòÉΓòÉ
  3339.  
  3340. Note to Kim  Update with specific classes. 
  3341.  
  3342. An object request broker (ORB) allows objects to communicate transparently with 
  3343. each other locally or across a network. 
  3344.  
  3345. o   Distributed SOM 
  3346. o   SOM-based Frameworks 
  3347. o   Future Directions for SOM 
  3348.  
  3349.  
  3350. ΓòÉΓòÉΓòÉ 6.5.1. Distributed System Object Model ΓòÉΓòÉΓòÉ
  3351.  
  3352. The system object model (SOM) handles the transparent distribution of objects. 
  3353. That is, application programs can access objects in other processes and across 
  3354. networks.  SOM provides this transparent access to remote objects through its 
  3355. ORB. The location and implementation of the object are hidden from the client, 
  3356. and the client accesses the object as if it were local.  The object management 
  3357. group (OMG) consortium defines an ORB as a mechanism that supports access to 
  3358. remote objects in a distributed environment.  SOM complies with the OMG 
  3359. specification of common object request broker architecture (CORBA).  The CORBA 
  3360. specification defines the components and interfaces that must be present in an 
  3361. ORB, including: 
  3362.  
  3363. o   Interface definition language (IDL) for defining classes 
  3364. o   C language usage bindings (procedure-call formats) for invoking methods on 
  3365.     objects 
  3366. o   Dynamic invocation interface and an interface repository, which support the 
  3367.     construction of requests (method calls) at run time 
  3368. o   ORB run-time programming interfaces. 
  3369.  
  3370.  
  3371. ΓòÉΓòÉΓòÉ 6.5.2. SOM-based Frameworks ΓòÉΓòÉΓòÉ
  3372.  
  3373. To exploit this object-oriented paradigm in a more general way, frameworks are 
  3374. built to encapsulate the aspects of models and achieve the plug-in capability 
  3375. (replaceability) at the component level.  Each component can be a single SOM 
  3376. object or more generally, an encapsulated set of SOM objects (including class 
  3377. objects) which: 
  3378.  
  3379. o   Serves as a unit (object model) 
  3380. o   Contains external interfaces, (dynamic model) 
  3381. o   Contains internal interfaces, (functional model) 
  3382.  
  3383. In a framework, the single component itself can be distributed across the 
  3384. network and developers should ensure that the interfaces correctly encapsulate 
  3385. the component.  Frameworks are usually packaged as sets of (dynamic or static) 
  3386. class libraries for particular capabilities, and application classes can be 
  3387. derived from them to acquire the behavior through (multiple) inheritance. The 
  3388. following SOM-based frameworks are available from IBM: 
  3389.  
  3390. o   Distributed SOM (DSOM).  DSOM allows application programs to access SOM 
  3391.     objects across address spaces.  This transparent access to remote objects 
  3392.     is provided through its ORB; the location and implementation of the object 
  3393.     are hidden from the client and the client accesses the object as though it 
  3394.     were local. 
  3395.  
  3396. o   Interface repository framework.  The interface repository is a database 
  3397.     that can hold all of the information contained in the IDL description of a 
  3398.     class of objects. The interface repository framework consists of the 11 
  3399.     classes defined in the CORBA standard for accessing the interface 
  3400.     repository. 
  3401.  
  3402. o   Persistence framework.  The persistence framework is a collection of SOM 
  3403.     classes that provide methods for saving objects (either in a file or in a 
  3404.     more specialized repository) and later restoring them.  This means that the 
  3405.     state of an object can be preserved beyond the termination of the process 
  3406.     that creates it. 
  3407.  
  3408. o   Replication framework.  The replication framework is a collection of SOM 
  3409.     classes that allows a replica (copy) of an object to exist in multiple 
  3410.     address spaces while maintaining a single-copy image.  Updates to any copy 
  3411.     are propagated immediately to all other copies.  This framework handles 
  3412.     locking, synchronization, and update propagation, and guarantees mutual 
  3413.     consistency among the replicas. 
  3414.  
  3415. o   Emitter framework.  The emitter framework is a collection of SOM classes 
  3416.     that allows programmers to write their own emitters. Emitter is a general 
  3417.     term used to describe a back-end output component of the SOM Compiler. Each 
  3418.     emitter takes as input information about an interface and produces output 
  3419.     organized in a different format. SOM provides a set of emitters that 
  3420.     generate the binding for C and C++ language programming (header files and 
  3421.     implementation templates). 
  3422.  
  3423. With SOM, IBM also provides a large group of classes and methods called the 
  3424. Collection Classes (sometimes called Foundation Classes).  The purpose of the 
  3425. Collection Classes is to contain other objects. These classes can be used in 
  3426. client code "as is," or they can be used as the basis for deriving new classes. 
  3427.  
  3428. To exploit all of the benefits of the object management interfaces and 
  3429. services, application developers should choose programming tools that support 
  3430. SOM/DSOM.  An example is VisualAge from IBM.  IBM also provides the Direct to 
  3431. SOM compiler, which generates SOM-bindings from C++ language code, and SOM's 
  3432. Emitter framework, which can generate bindings from multiple languages.  Also, 
  3433. the Microsoft-COM emitter for SOM is available allowing application developers 
  3434. building applications on SOM to achieve SOM-COM interoperability. 
  3435.  
  3436.  
  3437. ΓòÉΓòÉΓòÉ 6.5.3. Future Directions for SOM ΓòÉΓòÉΓòÉ
  3438.  
  3439. SOM will evolve to address client/server scalability issues associated with 
  3440. naming, security, and interoperability for peer, workgroup, and enterprise 
  3441. environments: 
  3442.  
  3443. o   Naming 
  3444.  
  3445.     SOMobjects will provide an implementation of the OMG naming service based 
  3446.     on DCE/CDS.  This will give distributed SOM applications the ability to 
  3447.     register objects that can be located by name and accessed from anywhere in 
  3448.     the network.  The benefits that CDS already offers can be exploited: a 
  3449.     reliable, consistent, location-independent method for naming and accessing 
  3450.     resources inside a cell.  And if the CDS already contains objects such as 
  3451.     RPC bindings to a server, those non-OO objects can still be accessed 
  3452.     through the object-oriented services provided by SOMobjects. 
  3453.  
  3454.     It is expected that the OMG naming services will be implemented on top of a 
  3455.     number of directory services.  At that point, multiple directories can be 
  3456.     linked into a single name space. 
  3457.  
  3458.     See Joint Object Services Submission; Naming Service Specification 
  3459.     (Document 93.5.2), Object Management Group (OMG), Revised May 14, 1993, for 
  3460.     more information on OMG Naming Services.  This and other OMG documents can 
  3461.     be obtained from OMG at: 
  3462.  
  3463.         Object Management Group, Inc. Headquarters
  3464.         492 Old Connecticutt  Path
  3465.         Framingham, MA 01701
  3466.  
  3467. o   Security 
  3468.  
  3469.     DSOM will integrate the DCE Kerberos-based security services to support 
  3470.     authenticated method-requests.  The get_principal operation will reliably 
  3471.     and securely identify who made the request.  If the user could not be 
  3472.     authenticated, the method request will not be passed to the object. 
  3473.     Because DSOM will use the DCE registry, users have to be defined only once 
  3474.     to the system.  Users have to sign-on only once to use both RPC requests as 
  3475.     well as DSOM requests.  And because authentication is handled under the 
  3476.     covers, applications do not have to be changed to run it securely. 
  3477.  
  3478. o   Interoperability 
  3479.  
  3480.     Version 2.0 of the SOMobjects product implements remote method calls using 
  3481.     a native protocol, which includes simple data translation and object 
  3482.     location services.  The native protocol implementation is sufficient for 
  3483.     the workgroup environments for which SOMobjects 2.0 was intended: small to 
  3484.     medium size LANs of AIX, OS/2, and Windows systems. 
  3485.  
  3486.     Future versions of DSOM will use DCE RPC to achieve a higher degree of 
  3487.     scaleability and interoperability.  In fact, IBM and a number of other 
  3488.     companies (Hewlett-Packard, DEC, NEC, HyperDesk, and OSF) have proposed a 
  3489.     standard protocol for interoperability among CORBA-compliant ORBs based on 
  3490.     DCE RPC. 
  3491.  
  3492.     See Joint Submission on Interoperability and Initialization (Document 
  3493.     94.3.5), Object Management Group (OMG), for more information on this 
  3494.     proposal. 
  3495.  
  3496. Hint: 
  3497.  
  3498. It is important to understand that SOMobjects will not require DCE. All of the 
  3499. services previously described will also be available in a future version of 
  3500. SOMobjects without DCE.  However, to enable an environment for scaleability and 
  3501. interoperability, DSOM will exploit the presence of DCE to achieve the desired 
  3502. quality of service. 
  3503.  
  3504.  
  3505. ΓòÉΓòÉΓòÉ 7. Network Services ΓòÉΓòÉΓòÉ
  3506.  
  3507. Communications and networking are at the heart of the infrastructure for a 
  3508. distributed system.  In today's world of heterogeneous, distributed computing, 
  3509. the higher level services and resource managers of the distributed system must 
  3510. support multiple operating system platforms and a variety of networking 
  3511. environments.  At the same time, the higher level resource managers need 
  3512. program-to-program communication services that are suitable for their 
  3513. particular distribution model, but they cannot afford to be tied to specific 
  3514. networking protocols or data link protocols.  This led to the structural 
  3515. separation of communication services and other transport users from network 
  3516. services. 
  3517.  
  3518. In 1992, IBM introduced the Networking Blueprint, its road map for networking 
  3519. in open, distributed systems, which focuses on the networking services, 
  3520. distributed services, and systems management portion of the Open Blueprint. 
  3521. The Networking Blueprint recognizes the need for structurally unifying network 
  3522. services by providing a common view of transport semantics, to make 
  3523. higher-level distributed systems services and application enabling services 
  3524. independent of the underlying transport network.  This leads to the structure 
  3525. consisting of: 
  3526.  
  3527. o   Common Transport Semantics 
  3528. o   Transport Network Services 
  3529. o   Telephony 
  3530.  
  3531.  
  3532. ΓòÉΓòÉΓòÉ 7.1. Common Transport Semantics ΓòÉΓòÉΓòÉ
  3533.  
  3534. Transports provide reliable end-to-end communications across wide area networks 
  3535. (WANs) and local area networks (LANs) across various protocols, such as network 
  3536. basic input output system (NetBIOS), transmission control protocol/internet 
  3537. protocol (TCP/IP), and internet packet exchange/sequenced packet exchange 
  3538. (IPX/SPX). Common transport semantics support protocol-independent 
  3539. communication in the distributed network. 
  3540.  
  3541. For more information about common transport semantics, see: Socket API. 
  3542.  
  3543.  
  3544. ΓòÉΓòÉΓòÉ 7.1.1. Socket API ΓòÉΓòÉΓòÉ
  3545.  
  3546. The socket API provides a standard interface to the transport and internetwork 
  3547. layer interfaces of Multi-Protocol Transport Services (MPTS).  A socket is an 
  3548. endpoint for communication that can be named and addressed in a network.  From 
  3549. an application program perspective, it is a resource allocated by the operating 
  3550. system.  It is represented by an integer called a socket descriptor. 
  3551.  
  3552. Using the socket API model, applications can be written in a 
  3553. protocol-independent manner.  By using the AF (address_family) option and by 
  3554. specifying a protocol-specific address, applications can choose a specific 
  3555. network protocol for communicating with remote transport applications. 
  3556. (Protocol-specific addresses are usually acquired from an application-level 
  3557. directory service such as DCE Cell Directory Service.) The remote transport 
  3558. application can be written to sockets, X/Open Transport Interface (XTI), or 
  3559. other transport protocol-specific APIs to communicate with NetBIOS. 
  3560.  
  3561. Sockets are supported on most operating system platforms: 
  3562.  
  3563. o   Sockets (AF_OS2, AF_UNIX) for local domain is available on OS/2 and AIX. 
  3564. o   Sockets (AF_INET) for TCP/IP is available for DOS, Windows (called 
  3565.     Winsock), OS/2, and AIX. 
  3566. o   Sockets (AF_NB) for NetBIOS is available on OS/2. 
  3567. o   Sockets (AF_INET) over NetBIOS is available on OS/2. 
  3568. o   Sockets (AF_INET) of SNA is available on OS/2, AIX, and MVS. 
  3569.  
  3570. The socket API supports four socket types: 
  3571.  
  3572. SOCK_STREAM               Provides sequenced, two-way byte streams that are 
  3573.                           reliable and connection-oriented.  They support a 
  3574.                           mechanism for out-of-band data. SOCK_STREAM is 
  3575.                           supported in the AF_OS2 (or AF_UNIX) and AF_INET 
  3576.                           domains. 
  3577.  
  3578. SOCK_SEQPACKET            Provides sequenced, two-way byte records that are 
  3579.                           reliable and connection-oriented.  SOCK_SEQPACKET is 
  3580.                           supported for protocols such as NetBIOS and 
  3581.                           AF_NETBIOS domains.  When the NBPROTO protocol is 
  3582.                           specified, a socket application can be used to 
  3583.                           communicate with a remote application using the 
  3584.                           NetBIOS network control block (NCB) interface. 
  3585.  
  3586. SOCK_DGRAM                Provides datagrams, which are connectionless messages 
  3587.                           of a fixed maximum length whose reliability is not 
  3588.                           guaranteed.  Datagrams can be corrupted, received out 
  3589.                           of order, lost, or delivered multiple times. 
  3590.                           SOCK_DGRAM is supported in AF_OS2 (or AF_UNIX), 
  3591.                           AF_NETBIOS, and AF_INET domain. 
  3592.  
  3593. SOCK_RAW                  Provides the interface to internal protocols such as 
  3594.                           internet protocol (IP) and internet control message 
  3595.                           protocol (ICMP).  SOCK_RAW is supported in the 
  3596.                           AF_INET domain. 
  3597.  
  3598. Stream, sequence packet, and datagram sockets interface to the transport layer 
  3599. protocols, and raw sockets interface to the TCP/IP network layer protocols. 
  3600.  
  3601. The following socket calls are protocol-independent: 
  3602.  
  3603. accept               Accepts a connection request from a client on a server. 
  3604. bind                 Binds a unique local name to the socket. 
  3605. connect              For stream or sequenced packet sockets, establishes a 
  3606.                      connection between two sockets.  For datagram sockets, 
  3607.                      specifies the peer for a socket. 
  3608. getpeername          Returns the name of the peer connected to a specified 
  3609.                      socket. 
  3610. getsockname          Stores the current name for a socket into a structure. 
  3611. getsockopt           Returns the values of socket options at various protocol 
  3612.                      levels. 
  3613. ioctl                Controls operating characteristics. 
  3614. listen               Completes the binding necessary for a stream socket. 
  3615. psock_errno          Writes short error messages to the standard error display. 
  3616. readv                Reads data on a socket and stores it in a set of buffers. 
  3617.                      This call applies only to connected sockets. 
  3618. recv                 Receives data on a socket and stores it in a buffer.  This 
  3619.                      call applies only to connected sockets. 
  3620. recvfrom             Receives data on any datagram socket and stores it in a 
  3621.                      buffer. 
  3622. recvmsg              Receives messages on a socket and stores them in an array 
  3623.                      of message headers. 
  3624. select               Monitors activity on a set of sockets to see whether any 
  3625.                      sockets are ready for reading or writing, or whether any 
  3626.                      exceptional conditions are pending. 
  3627. send                 Sends packets on a specified connected socket. 
  3628. sendmsg              Sends messages on a specified socket passed in an array of 
  3629.                      message headers. 
  3630. sendto               Sends packets on any datagram socket. 
  3631. setsockopt           Sets options associated with a socket.  This call can be 
  3632.                      called only for sockets in the AF_INET domain. 
  3633. shutdown             Shuts down all or part of a duplex connection. 
  3634. sock_errno           Returns the error code set by socket calls. 
  3635. sock_init            Initializes the socket data structures. 
  3636. socket               Creates an endpoint for communication and returns a socket 
  3637.                      descriptor representing the endpoint. 
  3638. soclose              Closes the specified socket and frees the resources that 
  3639.                      were allocated to that socket. 
  3640. writev               Writes data on a specified socket. 
  3641.  
  3642.  
  3643. ΓòÉΓòÉΓòÉ 7.2. Transport Network Services ΓòÉΓòÉΓòÉ
  3644.  
  3645. The Open Blueprint supports a variety of network protocols for transporting 
  3646. information over both wide area and local area networks. These include: 
  3647.  
  3648. o   Systems network architecture/advanced peer-to-peer networking (SNA/APPN) 
  3649. o   Transmission control protocol/internet protocol (TCP/IP) 
  3650. o   Open systems interconnection (OSI) 
  3651. o   NetBIOS 
  3652. o   Internet packet exchange (IPX) 
  3653.  
  3654.  
  3655. ΓòÉΓòÉΓòÉ 7.2.1. NetBIOS API ΓòÉΓòÉΓòÉ
  3656.  
  3657. NetBIOS is a protocol for LAN-based program-to-program communications. It 
  3658. provides a naming service that allows a LAN adapter card to have multiple 
  3659. logical names.  Through NetBIOS, applications can be written that exchange 
  3660. information between named entities on the network.  The NetBIOS APIs are 
  3661. protocol-dependent; the socket APIs are protocol-independent. 
  3662.  
  3663. There are two types of NetBIOS APIs: 
  3664.  
  3665. o   NetBIOS (NB30) 
  3666. o   LAN Server NetBIOS Submit API 
  3667.  
  3668.  
  3669. ΓòÉΓòÉΓòÉ 7.2.1.1. NetBIOS (NB30) ΓòÉΓòÉΓòÉ
  3670.  
  3671. NetBIOS (NB30) is available with MPTS, which is currently shipped with OS/2 DCE 
  3672. and LAN Server 4.0. 
  3673.  
  3674. NetBIOS provides a consistent API for applications to exchange information 
  3675. across a network so that applications themselves do not rely on a particular 
  3676. network and protocol.  However, for NetBIOS actually to move the information 
  3677. through the network, it must use an underlying protocol, and applications 
  3678. wanting to communicate must use NetBIOS over an underlying protocol.  For 
  3679. example, NetBIOS over TCP/IP uses TCP/IP as the transport mechanism. 
  3680.  
  3681. NetBIOS applications use names as the basis of addressing communication. An 
  3682. application registers the name by which it is known on the network, and NetBIOS 
  3683. maintains a table of names for all the applications on its host.  A NetBIOS 
  3684. name can be unique, or it can be a group name.  When an application registers a 
  3685. unique name, NetBIOS checks the network to verify that the name is not already 
  3686. in use; a group name can be used by several hosts simultaneously.  For two 
  3687. applications to communicate, each must know the other's name. 
  3688.  
  3689. When an application knows the name of the application with which it wants to 
  3690. communicate, NetBIOS provides two basic types of data transfer: 
  3691.  
  3692. o   Sessions 
  3693. o   Datagrams 
  3694.  
  3695. A session is a reliable, full-duplex, guaranteed-delivery connection between 
  3696. two applications.  If data is lost or corrupted, NetBIOS signals an error. 
  3697. Datagrams are a form of one-way communication that does not involve a 
  3698. connection.  Datagrams can be lost or duplicated.  With this type of data 
  3699. transfer, the receipt of the data is not guaranteed. 
  3700.  
  3701. Application programs communicate with NetBIOS using a control block called the 
  3702. network control block (NCB).  The following parameters are included in the NCB: 
  3703.  
  3704. NCB_COMMAND             Specifies the command to be performed by the adapter. 
  3705. NCB_RETCODE             Indicates the completion status of the command. 
  3706. NCB_LSN                 Indicates the local session number. 
  3707. NCB_NUM                 Indicates a 1-byte number provided by the NetBIOS. 
  3708. NCB_BUFFER@             Contains the address of the buffer area as signed by 
  3709.                         the application program. 
  3710. NCB_LENGTH              Indicates the length in bytes of the data buffer. 
  3711. NCB_CALLNAME            Specifies the name of an adapter the application 
  3712.                         program wants to communicate with. 
  3713. NCB_NAME                Specifies a node name on a network. 
  3714. NCB_RTO                 Specifies a timeout period for all receives associated 
  3715.                         with that session. 
  3716. NCB_STO                 Specifies a timeout period for all sends associated 
  3717.                         with that session. 
  3718. NCB_POST@               Indicates the presence of a post routine. 
  3719. NCB_DD_ID               Indicates the identification number of the device 
  3720.                         driver. 
  3721. NCB_ADPRT_NUM           Defines the adapter that is to be used. 
  3722. NCB_CMD_CMPL            Indicates the completion status of the command. 
  3723. NCB_RESERVE             A 14-byte reserved field that is used as a work area by 
  3724.                         NetBIOS applications. 
  3725.  
  3726.  
  3727. ΓòÉΓòÉΓòÉ 7.2.1.2. LAN Server NetBIOS Submit API ΓòÉΓòÉΓòÉ
  3728.  
  3729. The NetBIOS functions may be needed when an application has already written 
  3730. directly to previous versions of a network interface. Application programmers 
  3731. should use mailslots and pipes, which are less dependent on the transport 
  3732. implementation, for network communications. 
  3733.  
  3734. The following NetBIOS Submit APIs are in the transport category: 
  3735.  
  3736. NetBios32Close       Closes a handle to a network device driver. 
  3737. NetBios32Enum        Returns information on all network device drivers 
  3738.                      installed on a computer. 
  3739. NetBios32GetInfo     Returns information about a particular network device 
  3740.                      driver installed on a computer. 
  3741. NetBios32Open        Opens a handle to a specified network device driver. 
  3742. NetBios32Submit      Passes a NCB packet to a network device driver. 
  3743.  
  3744.  
  3745. ΓòÉΓòÉΓòÉ 7.3. Telephony ΓòÉΓòÉΓòÉ
  3746.  
  3747. Note to Kim  See if you can find into on CallPath 
  3748.  
  3749. Telephony is the use of systems for the transmission of voice or data 
  3750. communications between separate points. 
  3751.  
  3752. See LAN Distance API for more information about telephony-related APIs. 
  3753.  
  3754.  
  3755. ΓòÉΓòÉΓòÉ 7.3.1. LAN Distance API ΓòÉΓòÉΓòÉ
  3756.  
  3757. The dial services interface (DSI) is an API that allows calls to be established 
  3758. across a network using the IBM LAN Distance program.  An application using DSI 
  3759. can initiate, receive, and terminate connections between the LAN Distance 
  3760. Connection Server and LAN Distance Remote workstations. 
  3761.  
  3762. The connection can be over a switched line or leased line, using a synchronous, 
  3763. asynchronous, or integrated services digital network (ISDN) link.  The remote 
  3764. workstations connected in this way communicate as though they were attached to 
  3765. the same LAN.  DSI supports OS/2 32-bit and DOS Windows interfaces. 
  3766.  
  3767. Dial Services makes considerable use of the multitasking capabilities of IBM 
  3768. OS/2.  When first started by an application, Dial Services allocates a work 
  3769. thread under the same process as the application. 
  3770.  
  3771. Dial Services receives subsequent requests on the thread of the application 
  3772. that issues the request and handed off to the work thread. The thread on which 
  3773. the request was made is then returned to the application, usually before the 
  3774. work associated with that request is complete. 
  3775.  
  3776. Changes in conditions caused by the DSI requests or events are generated on the 
  3777. work thread as they occur.  When Dial Services is started, the application must 
  3778. specify an entry point in the application to be called by the work thread 
  3779. whenever an event occurs.  These event calls run on the work thread and are 
  3780. serially submitted.  The application event handler can be written assuming that 
  3781. one event is processed completely before the next event is received. 
  3782.  
  3783. Because events are processed on a separate thread that made the associated 
  3784. request, applications must treat events and requests as asynchronous. 
  3785.  
  3786. The DSI for DOS Windows is similar to DSI for OS/2, except that the event 
  3787. processor entry point is not 32-bit.  Because of the architecture of DOS, an 
  3788. application using the DSI in DOS Windows can ensure that requests and events 
  3789. perform synchronously.  Thus, an application designed for DOS may not work in 
  3790. OS/2.  A design that handles events asynchronously as in the OS/2 environment 
  3791. should also work in DOS.  The handling of multitasking differs, but the basic 
  3792. design is acceptable. 
  3793.  
  3794. Application writers should consider the features of the intended operating 
  3795. system carefully from the earliest stages of development. 
  3796.  
  3797. The following APIs are part of the DSI: 
  3798.  
  3799. DS_REQUEST_START_SERVICES                Initiates the Dial Services Interface. 
  3800. DS_REQUEST_MAKE_CALL                     Makes a call to a remote computer. 
  3801. DS_REQUEST_HANGUP_CALL                   Completes a call either started by the 
  3802.                                          DS_REQUEST_MAKE_CALL API or received 
  3803.                                          on an autoanswer session. 
  3804. DS_REQUEST_START_AUTOANSWER              Starts an autoanswer session. 
  3805. DS_REQUEST_STOP_AUTOANSWER               Stops an autoanswer session. 
  3806. DS_START_QUERY                           Starts a query session. 
  3807. DS_STOP_QUERY                            Stops a query session. 
  3808. DS_DIAL_EVENT                            Enables an application to receive 
  3809.                                          events pertaining to outstanding calls 
  3810.                                          or autoanswer sessions as they occur. 
  3811. DS_QUERY_EVENT                           Enables an application to receive 
  3812.                                          events pertaining to outstanding 
  3813.                                          queries as they occur. 
  3814.  
  3815.  
  3816. ΓòÉΓòÉΓòÉ 8. Application Enabling Services ΓòÉΓòÉΓòÉ
  3817.  
  3818. Application enabling services provide presentation services, application 
  3819. services, and data access services.  For more information see: 
  3820.  
  3821. o   Presentation Services 
  3822. o   Application Services 
  3823.  
  3824.  
  3825. ΓòÉΓòÉΓòÉ 8.1. Presentation Services ΓòÉΓòÉΓòÉ
  3826.  
  3827. Presentation services define the mechanism for interaction between applications 
  3828. and the user, using such graphical user interface elements as dialogs, icons, 
  3829. and menus.  For more information see: 
  3830.  
  3831. o   User Interface 
  3832. o   Print/View 
  3833.  
  3834.  
  3835. ΓòÉΓòÉΓòÉ 8.1.1. User Interface ΓòÉΓòÉΓòÉ
  3836.  
  3837. The graphical user interface (GUI) has become the focus for the presentation of 
  3838. information between the network and the user. The goal is to provide the 
  3839. information in a form that most closely matches objects that users deal with in 
  3840. the real world.  This "look and feel" is accomplished by an object-oriented 
  3841. user interface in which the user manipulates objects with "point-and-click" and 
  3842. "drag-and-drop" actions. 
  3843.  
  3844. While today there are no common presentation services across desktop 
  3845. environments, IBM expects Taligent object frameworks to provide a rich set of 
  3846. presentation support controls (such as common desktop, window management, input 
  3847. event management, and multimedia) on all the major desktop platforms.  For more 
  3848. information, see More about Objects. 
  3849.  
  3850.  
  3851. ΓòÉΓòÉΓòÉ 8.1.2. Print/View ΓòÉΓòÉΓòÉ
  3852.  
  3853. Printing services enable users to print jobs and to manage print resources. A 
  3854. central goal for printing is to provide users with a single system image of the 
  3855. printing environment.  This means that applications are written to APIs that 
  3856. hide the complexity of the printing environment.  The result is a single system 
  3857. image that hides the following: 
  3858.  
  3859. o   The physical location of the print objects accessed through the print APIs. 
  3860.  
  3861. o   The specific print service providers that are processing the APIs and 
  3862.     implementing the print objects. 
  3863.  
  3864. o   The protocols used by a service provider to communicate print requests to 
  3865.     and receive status from print services in response to the APIs. 
  3866.  
  3867. Today, the print APIs and the corresponding print objects supported by those 
  3868. APIs are based on the print service providers for the operating systems an 
  3869. application runs on.  Print objects typically supported include job, queue, and 
  3870. printer, where: 
  3871.  
  3872. o   A job is a printable entity with options, such as number of copies and 
  3873.     print quality. 
  3874.  
  3875. o   A queue is a repository for jobs that are scheduled for one or more 
  3876.     printers supported by the queue. 
  3877.  
  3878. o   A printer is a physical device a job is printed on. 
  3879.  
  3880. On OS/2, the single-system image is provided by the procedural print framework. 
  3881. This framework enables applications written to the APIs for OS/2 Presentation 
  3882. Manager (PM), OS/2 (non-PM), DOS, and Windows to transparently print on locally 
  3883. or remotely attached printers.  Furthermore, applications can manage print 
  3884. objects through APIs, regardless of the physical location of these print 
  3885. objects.  This single-system image is accomplished through print service 
  3886. providers, such as the local OS/2 print service and the remote print services 
  3887. of OS/2 LAN Server and Novell NetWare, that are installed below the procedural 
  3888. print framework and, as a result, map the APIs supported by the framework to 
  3889. the specific operations and protocols supported by the respective print 
  3890. services. 
  3891.  
  3892. On AIX/6000, the single-system image is provided by the AIX/6000 print 
  3893. subsystem.  Print queues can be assigned to locally attached or remotely 
  3894. attached printers and accessed transparently by applications through the 
  3895. command line interfaces (CLIs) supported by AIX/6000.  Because these CLIs serve 
  3896. as the programming interfaces for printing in AIX/6000, these CLIs are listed 
  3897. in the inventory of print APIs. 
  3898.  
  3899. AIX/6000 supports CLIs from the Berkeley Software Distribution (BSD) and ATT 
  3900. UNIX systems to enable users and applications to continue to use those 
  3901. commands.  These commands are so noted in the inventory.  However, AIX/6000 
  3902. supports more printing function than either the BSD and ATT UNIX system. 
  3903. Therefore, the AIX/6000 CLIs should be used in order to fully utilize the 
  3904. printing capabilities of AIX/6000. 
  3905.  
  3906. For more information about print APIs, see: 
  3907.  
  3908. o   Job Submission 
  3909. o   Print Object Management 
  3910. o   Future Directions for Print 
  3911.  
  3912.  
  3913. ΓòÉΓòÉΓòÉ 8.1.2.1. Job Submission ΓòÉΓòÉΓòÉ
  3914.  
  3915. An application submits a print job to a queue.  The job consists of print 
  3916. service options, job properties, and data that is printable (for example, 
  3917. PostScript) by the target printer.  The data can be printed on the target 
  3918. printer supported by the queue or the data can be translated by the print 
  3919. service that processes the data on behalf of the target printer. 
  3920.  
  3921. OS/2 (non-PM) applications use the following APIs to submit print jobs: 
  3922.  
  3923. SplEnumQueue            Returns a list of queues. 
  3924. SplQmAbort              Stops the generation of a spool file. 
  3925. SplQmAbortDoc           Aborts a print job. 
  3926. SplQmClose              Closes a spool file for a print job. 
  3927. SplQmEndDoc             Ends a print job. 
  3928. SplQmOpen               Opens a spool file for generating a print job. 
  3929. SplQmStartDoc           Starts a print job. 
  3930. SplQmWrite              Writes data to a spool file for a job. 
  3931. SplQueryQueue           Retrieves the job properties of a queue. 
  3932.  
  3933. OS/2 PM applications use the following APIs to submit print jobs: 
  3934.  
  3935. DevCloseDC                               Closes a device context for a print 
  3936.                                          job. 
  3937. DevEscape DEVESC_ABORTDOC                Aborts a print job. 
  3938. DevEscape DEVESC_ENDDOC                  Ends a print job. 
  3939. DevEscape DEVESC_NEWFRAME                Starts a new page in a print job. 
  3940. DevEscape DEVESC_STARTDOC                Starts a print job. 
  3941. DevOpenDC                                Opens a device context for a print 
  3942.                                          job. 
  3943. DevPostDeviceModes                       Displays the job properties of a queue 
  3944.                                          so the user can view or change these 
  3945.                                          properties for a print job.  The 
  3946.                                          user's choices are returned to the 
  3947.                                          application. 
  3948. Gpi*                                     Draws the desired output. 
  3949. SplEnumQueue                             Returns a list of queues. 
  3950. SplQueryQueue                            Retrieves the job properties of a 
  3951.                                          queue. 
  3952.  
  3953. AIX/6000 applications use the following CLIs to submit print jobs: 
  3954.  
  3955. enq                     Submits a print job. 
  3956. lpr                     Submits a print job (BSD UNIX). 
  3957. lp                      Submits a print job (ATT UNIX). 
  3958. lsallq                  Returns a list of queues. 
  3959. qprt                    Submits a print job. 
  3960.  
  3961.  
  3962. ΓòÉΓòÉΓòÉ 8.1.2.2. Print Object Management ΓòÉΓòÉΓòÉ
  3963.  
  3964. An application enables a user or administrator to create, delete, modify, list, 
  3965. and control print objects.  Most applications do not need to manage print 
  3966. objects. 
  3967.  
  3968. OS/2 PM and non-PM applications use the following APIs to manage print objects: 
  3969.  
  3970. SplControlDevice               Cancels, holds, releases, or restarts a device. 
  3971. SplCopyJob                     Copies a job in a queue. 
  3972. SplCreateDevice                Creates a device. 
  3973. SplCreateQueue                 Creates a queue. 
  3974. SplDeleteDevice                Deletes a device. 
  3975. SplDeleteJob                   Deletes a job from a queue. 
  3976. SplDeleteQueue                 Deletes a queue. 
  3977. SplEnumDevice                  Lists devices on the local workstation or on a 
  3978.                                remote server. 
  3979. SplEnumDriver                  Lists printer drivers on the local workstation 
  3980.                                or on a remote server. 
  3981. SplEnumJob                     Lists jobs in a queue. 
  3982. SplEnumPort                    Lists ports (for example, LPT1) on the local 
  3983.                                workstation or on a remote server. 
  3984. SplEnumQueue                   Lists queues on the local workstation or on a 
  3985.                                remote server. 
  3986. SplEnumQueueProcessor          Lists queue processors on the local workstation 
  3987.                                or on a remote server. 
  3988. SplHoldJob                     Holds a job in a queue. 
  3989. SplHoldQueue                   Holds a queue. 
  3990. SplPurgeQueue                  Deletes all jobs in a queue. 
  3991. SplQueryDevice                 Retrieves information about a device. 
  3992. SplQueryJob                    Retrieves information about a job. 
  3993. SplQueryQueue                  Retrieves information about a queue. 
  3994. SplReleaseJob                  Releases a held job. 
  3995. SplReleaseQueue                Releases a held queue. 
  3996. SplSetDevice                   Modifies the configuration of a device. 
  3997. SplSetJob                      Modifies the settings for a job. 
  3998. SplSetQueue                    Modifies the configuration of a queue. 
  3999.  
  4000. AIX/6000 applications use the following CLIs to manage print objects: 
  4001.  
  4002. cancel                         Deletes a job from a queue (ATT UNIX). 
  4003. chque                          Modifies the name and attributes of a queue. 
  4004. chquedev                       Modifies the name and attributes of a queue 
  4005.                                device. 
  4006. chvirprt                       Modifies the attributes of a virtual printer. 
  4007. disable                        Disables a print queue (ATT UNIX). 
  4008. enable                         Enables a print queue (ATT UNIX). 
  4009. enq                            Manages print server functions. 
  4010. lpq                            Retrieves information about a job (BSD UNIX). 
  4011. lprm                           Deletes a job from a queue (BSD UNIX). 
  4012. lpstat                         Retrieves information about a queue (ATT UNIX). 
  4013. lsallq                         Lists all queues. 
  4014. lsallqdev                      Lists devices on a queue. 
  4015. lsattr                         Lists attributes of a device. 
  4016. lsque                          Lists attributes of a queue. 
  4017. lsquedev                       List devices and device information for a queue. 
  4018. lsvirprt                       Lists attributes of a virtual printer. 
  4019. mkque                          Creates a queue. 
  4020. mkquedev                       Creates a device. 
  4021. mkvirprt                       Creates a virtual printer. 
  4022. qadm                           Specifies printers or queuing systems to be 
  4023.                                brought down or up. 
  4024. qcan                           Deletes a job from a queue. 
  4025. qchk                           Retrieves information about a job. 
  4026. qpri                           Sets and modifies the priority for a job. 
  4027. rmque                          Deletes a queue. 
  4028. rmquedev                       Deletes a device. 
  4029. rmvirprt                       Deletes a virtual printer. 
  4030. splp                           Lists or modifies printer driver settings. 
  4031.  
  4032. DOS applications use the following APIs to manage print objects: 
  4033.  
  4034. DosPrintDestAdd                Creates a device. 
  4035. DosPrintDestControl            Cancels, holds, releases, or restarts a device. 
  4036. DosPrintDestDel                Deletes a device. 
  4037. DosPrintDestEnum               Lists devices on the local workstation or on a 
  4038.                                remote server. 
  4039. DosPrintDestGetInfo            Retrieves information about a device. 
  4040. DosPrintDestSetInfo            Modifies the configuration of a device. 
  4041. DosPrintDriverEnum             Lists printer drivers on the local workstation 
  4042.                                or on a remote server. 
  4043. DosPrintJobContinue            Releases a held job. 
  4044. DosPrintJobDel                 Deletes a job from a queue. 
  4045. DosPrintJobEnum                Lists jobs in a queue. 
  4046. DosPrintJobGetInfo             Retrieves information about a job. 
  4047. DosPrintJobPause               Holds a job in a queue. 
  4048. DosPrintJobSetInfo             Modifies the settings for a job. 
  4049. DosPrintPortEnum               Lists ports on the local workstation or on a 
  4050.                                remote server. 
  4051. DosPrintQAdd                   Creates a queue. 
  4052. DosPrintQContinue              Releases a held queue. 
  4053. DosPrintQDel                   Deletes a queue. 
  4054. DosPrintQEnum                  Lists queues on the local workstation or on a 
  4055.                                remote server. 
  4056. DosPrintQGetInfo               Retrieves information about a queue. 
  4057. DosPrintQPause                 Holds a queue. 
  4058. DosPrintQProcessorEnum         Lists queue processors on the local workstation 
  4059.                                or a remote server. 
  4060. DosPrintQPurge                 Deletes all jobs in a queue. 
  4061. DosPrintQSetInfo               Modifies the configuration of a queue. 
  4062.  
  4063.  
  4064. ΓòÉΓòÉΓòÉ 8.1.2.3. Future Directions for Print ΓòÉΓòÉΓòÉ
  4065.  
  4066. The IBM distributed print management framework (DPMF), based on Palladium 
  4067. Version 2, will support distributed printing and print systems management 
  4068. across a multi-vendor environment by supporting emerging open systems standards 
  4069. such as the ISO document printing application (DPA) 10175, IEEE POSIX 1387.4 
  4070. and the X/Open print interoperability standard.  DPMF will also support a 
  4071. selected set of programming interfaces that are available today in OS/2 and 
  4072. AIX. This will enable applications written to those interfaces to transparently 
  4073. access printers and manage print resources supported by DPMF.  In short, DPMF 
  4074. will be a print service provider on OS/2 and AIX. 
  4075.  
  4076. In addition, application developers who write to the object-oriented print APIs 
  4077. supported by the Taligent application environment (TalAE) will print on 
  4078. printers supported by the print service providers in OS/2 and AIX, because the 
  4079. TalAE uses the print APIs of OS/2 and AIX for printing.  The TalAE APIs will be 
  4080. defined using IBM SOM. 
  4081.  
  4082. In the future, the print APIs and the corresponding print objects supported by 
  4083. the APIs will be standardized across OS/2 and AIX to enable true application 
  4084. portability across a multi-system environment.  Application developers will be 
  4085. able to use a single set of object-oriented APIs for end-user and systems 
  4086. management functionality, regardless of the physical location of the printer 
  4087. and print resources being used and managed.  These APIs will be defined using 
  4088. IBM SOM and will work in the Taligent environment.  Applications written to the 
  4089. printing APIs in the TalAE will continue to run. 
  4090.  
  4091. Hints: 
  4092.  
  4093. To preserve customers' current investments in software applications, a 
  4094. specified set of legacy programming interfaces will be supported on each 
  4095. operating system. 
  4096.  
  4097. o   The following sets of APIs in OS/2 will be supported on future releases of 
  4098.     OS/2 systems to enable applications written to these APIs today to run in 
  4099.     the future: 
  4100.  
  4101.     Dev*                           OS/2 PM applications 
  4102.     SplQm*                         OS/2 applications 
  4103.     Spl*                           OS/2 and PM applications 
  4104.     Dos*                           DOS and Windows applications 
  4105.  
  4106. o   The DosPrint* APIs will not be supported in future versions of OS/2. 
  4107.     Application developers should use the equivalent 32-bit Spl APIs to deliver 
  4108.     applications that are portable across OS/2 on Intel. 
  4109.  
  4110. o   The following sets of CLIs in AIX will be supported on future releases of 
  4111.     AIX systems to enable applications written to these CLIs today to run in 
  4112.     the future: 
  4113.  
  4114.     lp                             BSD UNIX applications 
  4115.     lpr                            ATUNIX applications 
  4116.     qprt and related AIX CLIs      AIX applications 
  4117.     enq                            AIX applications 
  4118.  
  4119.  
  4120. ΓòÉΓòÉΓòÉ 8.2. Application Services ΓòÉΓòÉΓòÉ
  4121.  
  4122. Application services are common functions, such as mail, which are available 
  4123. for use by all applications. 
  4124.  
  4125.  
  4126. ΓòÉΓòÉΓòÉ 8.3. Mail ΓòÉΓòÉΓòÉ
  4127.  
  4128. Mail is an electronic mechanism for users to exchange a wide variety of forms 
  4129. such as text, rich text, graphics images, and video.  Mail can be modeled as 
  4130. User Agents(clients) which interact with Message Transfer Agents(servers). 
  4131.  
  4132. User Agents (UAs) provide user and application access to the mail system in the 
  4133. form of send,  compose, and reply functions.  In addition several industry wide 
  4134. programatic APIs have emerged, see (Mail APIS). 
  4135.  
  4136. Message Transfer Agents receive mail requests from User agents, and typically 
  4137. are responsible for "executing" the appropriate tranformation, routing, and 
  4138. message store functions. These Message Transfer agents typically interoperate 
  4139. with a variety of "backbone" protocols such as X.400, SMTP, and SNADS. 
  4140.  
  4141. There are many other aspects to this model as well; typically a mail system has 
  4142. enterprise address books which support multiple "mail types" as well as 
  4143. synchronization with other mail system address books. Additonally, the message 
  4144. transfer agents also sup port or have support for gateways to other mail 
  4145. systems which are not supported natively. 
  4146.  
  4147. Also, the user agents, are required to support a disconnected mode of 
  4148. operation; which allow a user's folders and in-baskets to be stored on a 
  4149. disconnected client, allow a disconnected user to operate on mail as if 
  4150. connected, and then perform a connect and resynchronization function with the 
  4151. message transfer agent (server). 
  4152.  
  4153. Mail Versus Messaging 
  4154.  
  4155. Mail is distinguised from Messaging, such as MQSERIES, by the fact that mail is 
  4156. "non-real time", store and forward delivery, whereas messaging provides 
  4157. assured, queued once only delivery as well as the capability to support 
  4158. transaction type processing. Many companys today, when referring to their 
  4159. emerging enterprise messaging servers, are really referring to mail servers 
  4160. described above. 
  4161.  
  4162. Shared File Versus Client-Server Mail 
  4163.  
  4164. Many of the original LAN based E-MAIL systems, consisted of only user agents. 
  4165. Mail forwarding was really only the clients "pushing" the messages into passive 
  4166. shared files (called "postoffices"). These systems work fine for relatively 
  4167. small numbers of LAN based users, but attempts to scale these systems to 
  4168. enterprise level have been unsuccessful; as a result much of the industry had 
  4169. announced intent to provide enterprise mail products using the user agent 
  4170. (client) to message transfer agent(server) model described above. 
  4171.  
  4172. For more information on mail-related APIs, see: 
  4173.  
  4174. o   LAN Server NetMessage API 
  4175. o   Mail APIs 
  4176. o   Future Directions for Mail and Messaging 
  4177.  
  4178.  
  4179. ΓòÉΓòÉΓòÉ 8.3.1. LAN Server NetMessage API ΓòÉΓòÉΓòÉ
  4180.  
  4181. The LAN Server NetMessage API provides simple messaging services that allow 
  4182. users to send, log, and forward messages.  A message is any file or buffer of 
  4183. data sent to a messaging name on the network.  A message name is either a user 
  4184. or an application.  To receive a message, a user or application must register a 
  4185. messaging name in the message name table.  A message name table contains a list 
  4186. of registered messaging names permitted to receive messages and a list of users 
  4187. and applications to which a message can be forwarded. 
  4188.  
  4189. The following APIs are in the Message category: 
  4190.  
  4191. Net32MessageBufferSend           Sends a buffer of information to a registered 
  4192.                                  messaging name. 
  4193. Net32MessageFileSend             Sends a file to a registered messaging name. 
  4194. Net32MessageLogFileGet           Retrieves the name of the message log file as 
  4195.                                  well as the current logging status. 
  4196. Net32MessageLogFileSet           Specifies the file where messages are to be 
  4197.                                  logged on a particular server.  This API also 
  4198.                                  enables or disables the logging process. 
  4199. Net32MessageNameAdd              Registers a name in a message name table. 
  4200. Net32MessageNameDel              Deletes names from a message name table. 
  4201. Net32MessageNameEnum             Lists all the name entries stored in a message 
  4202.                                  name table. 
  4203. Net32MessageNameFwd              Modifies the message name table to forward 
  4204.                                  messages to another messaging name. 
  4205. Net32MessageNameGetInfo          Retrieves information about a specified user 
  4206.                                  listed in the message name table. 
  4207. Net32MessageNameUnFwd            Cancels message forwarding. 
  4208.  
  4209.  
  4210. ΓòÉΓòÉΓòÉ 8.3.2. Mail APIs ΓòÉΓòÉΓòÉ
  4211.  
  4212. Several Open Interface Mail APIs have emerged in the industry for providing 
  4213. programatic access to mail functions directly to applications. Several 
  4214. companys, including IBM, were members of the Vendor Independent Messaging 
  4215. Consortium, and produced the VIM 1.0 specification. VIM is intended to be a 
  4216. multiplatform standard that can be implemented by a variety of products running 
  4217. in different environments. Microsoft produced the MAPI messaging interface for 
  4218. Windows environments.  As a result, and in order to ac hieve an industry goal 
  4219. of one set of mail API specifications, the VIM consortia, along with others, 
  4220. worked within the context of the X/OPEN API Association to produce the Common 
  4221. Messaging Calls Version 1.0 specification. This CMC specification is a basic 
  4222. set of messaging API functions, providing a subset of both the VIM and MAPI 
  4223. specifications. 
  4224.  
  4225. Currently XAPIA is working on a "richer" version of CMC, CMC 2.0. This 
  4226. specification is expected to be out of XAPIA in the first half of 1995. As this 
  4227. specification gains ISV acceptance, the need for continued support for multiple 
  4228. APIs should diminish. 
  4229.  
  4230.  
  4231. ΓòÉΓòÉΓòÉ 8.3.3. Future Directions for Mail and Messaging ΓòÉΓòÉΓòÉ
  4232.  
  4233. At the November 1994 COMDEX, IBM announced  its IBM Workgoup Mail-Messaging 
  4234. strategy. A brief summary of this strategy is listed here: 
  4235.  
  4236. 1.  Provide an Open customizable framework for a comprehensive messaging 
  4237.     solution that allows for a mix and match of messaging components from IBM 
  4238.     and other vendors. 
  4239. 2.  Provide a fully scaleable, client server(see above), information structure 
  4240.     that encompasses messaging and extends to other vital areas of information 
  4241.     management. 
  4242. 3.  Provide a messaging transport layer that transcends the differences between 
  4243.     transport protocols such as X.400, SMTP/MIME,  SNADS, and others. 
  4244. 4.  Integrate this solution with ISV and IBM workgroup applications via 
  4245.     industry standard APIs/SPIs such as VIM, MAPI and CMC. 
  4246. 5.  Provide and easy path for both coexistence and/or migration from other 
  4247.     E-mail systems. 
  4248. 6.  Deliver this solution across multiple hardware and software platforms. 
  4249.  
  4250. Hint 
  4251.  
  4252. A version of the mail component of IBM Workgroup, (UltiMail Lite), recently 
  4253. shipped as a part of the Bonus Pak of OS/2 Warp. 
  4254.  
  4255.  
  4256. ΓòÉΓòÉΓòÉ 9. System Management Services ΓòÉΓòÉΓòÉ
  4257.  
  4258. In the distributed environment, the need for system management has become a 
  4259. high customer priority.  Customer requirements include the ability to manage 
  4260. both local and remote systems using basic system administration skills.  System 
  4261. management requirements are defined for applications so that, when the 
  4262. applications are shipped, a common set of management functions and applications 
  4263. allows customers to manage their systems. 
  4264.  
  4265. For more information on system management APIs, see: 
  4266.  
  4267. o   Installation and Distribution 
  4268. o   Configuration 
  4269. o   Network Operating System Management 
  4270. o   Reliability/Availability/Serviceability 
  4271. o   Licensing 
  4272.  
  4273.  
  4274. ΓòÉΓòÉΓòÉ 9.1. Installation and Distribution ΓòÉΓòÉΓòÉ
  4275.  
  4276. Installation makes an application executable on the workstation.  Feature 
  4277. selection can determine what code is actually installed on the workstation. 
  4278. Distribution enables management of code servers, code packages, customer 
  4279. workstations, and groups of workstations. 
  4280.  
  4281. For more information, on installation and distribution APIs, see : 
  4282.  
  4283. o   CID 
  4284. o   Hints for Installation and Distribution 
  4285.  
  4286.  
  4287. ΓòÉΓòÉΓòÉ 9.1.1. CID ΓòÉΓòÉΓòÉ
  4288.  
  4289. The Configuration, Installation, and Distribution (CID) utility, a product for 
  4290. OS/2, DOS, and Windows, helps to consolidate the resources needed for 
  4291. workstation administration and to eliminate the need for installation expertise 
  4292. at the client workstation.  CID allows installation of software at client 
  4293. machines from code residing at a central server, freeing support personnel from 
  4294. the tedious, repetitive, and time-consuming tasks of inserting diskettes and 
  4295. responding to installation dialogs at each client workstation.  CID minimizes 
  4296. and often eliminates the need for human intervention at the client machine. 
  4297.  
  4298. To be CID-enabled, products must support: 
  4299.  
  4300. Diskette image transfer        The product should have a documented method for 
  4301.                                storing the images of product diskettes to a 
  4302.                                hard disk so that the images can be used by both 
  4303.                                a software distribution manager (SDM), such as 
  4304.                                NetView DM/2, and the product CID program. 
  4305.  
  4306. Command line parameters        A product operation (installation, 
  4307.                                configuration, and maintenance updates) should 
  4308.                                be able to be run from the command line with 
  4309.                                parameters that are defined by the product or 
  4310.                                program.  The SDM uses information entered by an 
  4311.                                administrator to interface to the product or 
  4312.                                program at a command line. 
  4313.  
  4314. Redirected drives              A CID-enabled product must be able to be 
  4315.                                installed or updated from any drive or any 
  4316.                                device that can be represented by a disk drive 
  4317.                                letter. Products that support being installed or 
  4318.                                updated only from the A: or B: drives must 
  4319.                                expand their support to cover any logical drive. 
  4320.                                Global drive support allows software to be 
  4321.                                distributed by using file redirection to a code 
  4322.                                server. 
  4323.  
  4324. Return codes to the SDM        A CID-enabled product must be able to pass the 
  4325.                                status of its installation, configuration, or 
  4326.                                maintenance processes to a software distribution 
  4327.                                manager through the use of return codes. 
  4328.  
  4329. CID enablement may also require: 
  4330.  
  4331. Generation of response files   Response file support is required if a user 
  4332.                                dialog is required during a non-CID 
  4333.                                installation.  During a product installation, 
  4334.                                configuration, or maintenance update, users are 
  4335.                                typically required to answer questions that 
  4336.                                affect the outcome of the process.  A 
  4337.                                CID-enabled product operation must be able to 
  4338.                                access predefined user responses or configure 
  4339.                                the product operational after installation from 
  4340.                                a response file (for example, the CONFIG.SYS 
  4341.                                file updates). 
  4342.  
  4343. Progress information           A CID-enabled product should define log files to 
  4344.                                be used to store information about the progress 
  4345.                                of the product installation, configuration, or 
  4346.                                maintenance.  These files contain information 
  4347.                                such as installation, configuration, or 
  4348.                                maintenance update history and error 
  4349.                                information. 
  4350.  
  4351.  
  4352. ΓòÉΓòÉΓòÉ 9.1.2. Hints for Installation and Distribution ΓòÉΓòÉΓòÉ
  4353.  
  4354. AIX/6000 provides a software management tool called the installp command. 
  4355. Documentation on how to package AIX/6000 applications to use this facility is 
  4356. in the AIX/6000 General Programming Concepts, Vol. 1: Writing Programs.  A 
  4357. software distribution product, NetView Distribution Manager (NVDM)/6000, 
  4358. available on AIX/6000 can distribute and install software to AIX/6000, OS/2, 
  4359. DOS, and Windows workstations. 
  4360.  
  4361. For OS/2 and Windows applications, IBM provides Software Installer for OS/2 and 
  4362. Software Installer for Windows.  IBM also publishes CID guidelines that 
  4363. describe how to develop an OS/2, DOS, or Windows install program that can be 
  4364. run remotely on an unattended workstation.  By following these guidelines, a 
  4365. software developer can produce an application that can be distributed and 
  4366. installed by NVDM/2 or by NVDM/6000. 
  4367.  
  4368. Future Directions 
  4369.  
  4370. POSIX draft standard, P1378.2 Draft 12, March 1994, Software Administration 
  4371. describes software management utilities that will be available in future 
  4372. releases of AIX and OS/2.  When the POSIX software administration utilities are 
  4373. available, applications will be able to package software so it can be installed 
  4374. easily and managed consistently.  The IBM Software Installer for OS/2 product 
  4375. will provide migration for its application install programs to the POSIX 
  4376. software administration utilities. 
  4377.  
  4378.  
  4379. ΓòÉΓòÉΓòÉ 9.2. Configuration ΓòÉΓòÉΓòÉ
  4380.  
  4381. Configuration changes can be made during installation or after installation is 
  4382. complete, either locally or remotely. 
  4383.  
  4384. For more information on configuration-related APIs, see: 
  4385.  
  4386. o   LAN Server NetConfig APIs 
  4387. o   DCE Configuration APIs 
  4388.  
  4389.  
  4390. ΓòÉΓòÉΓòÉ 9.2.1. LAN Server NetConfig APIs ΓòÉΓòÉΓòÉ
  4391.  
  4392. The functions in the Configuration category retrieve network configuration 
  4393. information from the IBMLAN.INI file and are defined as follows: 
  4394.  
  4395. Net32ConfigGet2         Retrieves a single parameter value for a specified 
  4396.                         network component. 
  4397. Net32ConfigGetAll2      Returns all the parameters for the specified component. 
  4398.  
  4399. The IBMLAN.INI file is an ASCII file containing the configuration information 
  4400. for LAN Server services.  User-defined services and applications also store 
  4401. network configuration information in this file. 
  4402.  
  4403.  
  4404. ΓòÉΓòÉΓòÉ 9.2.2. DCE Configuration APIs ΓòÉΓòÉΓòÉ
  4405.  
  4406. The DCE configuration APIs return information based on the contents of the 
  4407. local DCE configuration file, which is created during the DCE cell- or 
  4408. machine-configuration process.  A configuration file is located on each DCE 
  4409. machine.  The file contains the host name, as well as the name of the cell in 
  4410. which the host is located.  The configuration APIs can also be used to get 
  4411. additional information corollary to the host name, such as the host principal 
  4412. name and the binding information to the host. 
  4413.  
  4414. The following are the DCE configuration APIs: 
  4415.  
  4416. dce_cf_binding_entry_from_host    Returns the host binding entry name. 
  4417. dce_cf_find_name_by_key           Returns a string tagged by key. 
  4418. dce_cf_get_cell_name              Returns local cell names. 
  4419. dce_cf_get_host_name              Returns the hostname relative to the local 
  4420.                                   cell. 
  4421. dce_cf_prin_name_from_host        Returns the host principal name. 
  4422. dce_cf_profile_entry_from_host    Returns the host profile entry. 
  4423.  
  4424.  
  4425. ΓòÉΓòÉΓòÉ 9.3. Network Operating System Management ΓòÉΓòÉΓòÉ
  4426.  
  4427. Network operating system management enables the monitoring and administration 
  4428. of network resources, such as servers, printers, and gateways. 
  4429.  
  4430. For more information, see: 
  4431.  
  4432. o   LAN Server Network Management APIs 
  4433. o   Hints for NOS Management 
  4434.  
  4435.  
  4436. ΓòÉΓòÉΓòÉ 9.3.1. LAN Server Network Management APIs ΓòÉΓòÉΓòÉ
  4437.  
  4438. LAN Server network management APIs enable for local and remote administration 
  4439. of network resources, such as printers, files, serial devices and network 
  4440. services, such as requester, server, and alerter. 
  4441.  
  4442. The following categories of LAN Server APIs provide network management 
  4443. functions: 
  4444.  
  4445. o   NetServer 
  4446. o   NetService 
  4447. o   NetCharDev 
  4448. o   NetConnection 
  4449. o   NetHandle 
  4450. o   NetFile 
  4451. o   NetSession 
  4452. o   NetShare 
  4453. o   NetWksta 
  4454. o   HPFS Disk Control 
  4455. o   NetUse 
  4456. o   NetRemote 
  4457.  
  4458.  
  4459. ΓòÉΓòÉΓòÉ 9.3.1.1. NetServer ΓòÉΓòÉΓòÉ
  4460.  
  4461. With the APIs in the Server category, an application can perform remote 
  4462. administrative tasks on a local or remote server.  The following APIs are in 
  4463. the Server category: 
  4464.  
  4465. Net32GetDCName               Returns the domain controller name associated with 
  4466.                              a specified domain name. 
  4467. Net32ServerAdminCommand      Remotely executes a command on a server. 
  4468. Net32ServerDiskEnum          Retrieves a list of disk drivers on a workstation. 
  4469. Net32ServerEnum2             Lists the set of all servers being browsed on the 
  4470.                              network. The results can be filtered by type or 
  4471.                              domain. 
  4472. Net32ServerGetInfo           Retrieves information about a specified server. 
  4473. Net32ServerSetInfo           Changes information about a specified server. 
  4474.  
  4475.  
  4476. ΓòÉΓòÉΓòÉ 9.3.1.2. NetService ΓòÉΓòÉΓòÉ
  4477.  
  4478. The functions in the Service category start and control network service 
  4479. programs.  A service is a program of any size and function that other 
  4480. applications can use to perform some set of tasks on the network.  An 
  4481. application starts and controls the operation of services with the functions in 
  4482. the Service category. 
  4483.  
  4484. The two most important services provided by LAN Server are Requester and 
  4485. Server, which provide the majority of the software required to operate a LAN. 
  4486. When the LAN Server software starts, it in turn starts the Requester service, 
  4487. followed by the Server service. 
  4488.  
  4489. The following APIs are in the Service category: 
  4490.  
  4491. Net32ServiceControl     Controls the operations of network services that have 
  4492.                         been started. 
  4493. Net32ServiceEnum        Retrieves information about all started network 
  4494.                         services. 
  4495. Net32ServiceGetInfo     Retrieves information about a particular started 
  4496.                         network service. 
  4497. Net32ServiceInstall     Starts a network service. 
  4498. Net32ServiceStatus      Sets status and code information for a network service. 
  4499.  
  4500.  
  4501. ΓòÉΓòÉΓòÉ 9.3.1.3. NetCharDev ΓòÉΓòÉΓòÉ
  4502.  
  4503. The NetCharDev APIs control shared serial devices and their associated queues. 
  4504.  
  4505. A character device, also known as a serial device, is a device that performs 
  4506. functions sequentially.  This definition is not limited to devices attached to 
  4507. hardware serial ports. 
  4508.  
  4509. The LAN Server software can pool serial devices of the same type into a serial 
  4510. device queue, which a requesting application makes its connection to.  A serial 
  4511. device queue can contain one or more serial devices and simultaneously allow 
  4512. multiple applications to connect to one of the available serial devices. 
  4513. Serial device queues can pool serial devices only on a server. 
  4514.  
  4515. Note:  Serial device queues exist only while they are being shared.  In 
  4516.        contrast, a spooled device queue (as for a printer) exists from the time 
  4517.        it is created (by calling the appropriate Add function) until the time 
  4518.        it is removed. 
  4519.  
  4520. The following APIs are in the Character Device category: 
  4521.  
  4522. Net32CharDevControl          Forces a serial device closed when the process 
  4523.                              that opened the device cannot close it with the 
  4524.                              DosClose function. 
  4525. Net32CharDevEnum             Provides information on all available serial 
  4526.                              devices pooled in shared serial device queues on a 
  4527.                              server. 
  4528. Net32CharDevGetInfo          Retrieves information about a specified serial 
  4529.                              device in a shared serial device queue on a 
  4530.                              server. 
  4531. Net32CharDevQEnum            Enumerates all serial device queues on a server. 
  4532. Net32CharDevQGetInfo         Retrieves information about a particular serial 
  4533.                              device queue on a server. 
  4534. Net32CharDevQPurge           Deletes all pending requests on a serial device 
  4535.                              queue.  This API only deletes requests that have 
  4536.                              not been assigned to a device. 
  4537. Net32CharDevQPurgeSelf       Deletes all pending requests waiting in a serial 
  4538.                              device queue that were submitted by a specified 
  4539.                              computer. 
  4540. Net32CharDevQSetInfo         Modifies the state of a serial device queue on a 
  4541.                              server. 
  4542.  
  4543.  
  4544. ΓòÉΓòÉΓòÉ 9.3.1.4. NetConnection ΓòÉΓòÉΓòÉ
  4545.  
  4546. The Net32ConnectionEnum API is the only API of the Connection category.  This 
  4547. API lists all connections made to a server by a client or all connections made 
  4548. to a shared resource of a server. A client accesses a shared resource of a 
  4549. server by means of a connection.  Thus, a connection is the path between a 
  4550. redirected local device name of a client and a shared resource of a server. 
  4551.  
  4552.  
  4553. ΓòÉΓòÉΓòÉ 9.3.1.5. NetHandle ΓòÉΓòÉΓòÉ
  4554.  
  4555. The APIs in this category operate on the handles of remote serial devices and 
  4556. remote named pipes.  The Handle category has two APIs: 
  4557.  
  4558. NetHandleGetInfo        Retrieves handle-specific information about a serial 
  4559.                         device or named pipe. 
  4560. NetHandleSetInfo        Sets handle-specific information. 
  4561.  
  4562.  
  4563. ΓòÉΓòÉΓòÉ 9.3.1.6. NetFile ΓòÉΓòÉΓòÉ
  4564.  
  4565. The APIs in the File category provide a system for monitoring the file, device, 
  4566. and pipe resources that are opened on a server and for closing one of these 
  4567. resources, if necessary.  The File category has three APIs: 
  4568.  
  4569. Net32FileGetInfo2       Returns information about a specific opening of a 
  4570.                         resource.  Two levels of detail are available.  Level 2 
  4571.                         provides the identification number assigned to the 
  4572.                         resource when it was opened.  Level 3 provides 
  4573.                         additional data about permissions, file locks, and who 
  4574.                         opened the resource. 
  4575. Net32FileEnum2          Supplies information about some or all open files on 
  4576.                         the server, allowing the user to supply a key to get 
  4577.                         the required information through iterated calls to the 
  4578.                         API. 
  4579. Net32FileClose2         Forces a resource closed when a system error prevents 
  4580.                         normal closure by the DosClose function. 
  4581.  
  4582.  
  4583. ΓòÉΓòÉΓòÉ 9.3.1.7. NetSession ΓòÉΓòÉΓòÉ
  4584.  
  4585. The functions in the Session category control network sessions established 
  4586. between clients and servers. 
  4587.  
  4588. A session is literally a path between a client and a server.  A client begins a 
  4589. session with a server the first time the client tries to connect to a shared 
  4590. resource on the server.  Any further connections from the client to the other 
  4591. shared resources on the same server do not create another session; multiple 
  4592. connections can be serviced on one session. 
  4593.  
  4594. The Session category contains three APIs: 
  4595.  
  4596. Net32SessionDel         Ends a session and deletes all current connections 
  4597.                         between the client and the server. 
  4598. Net32SessionEnum        Returns information about all sessions established with 
  4599.                         a server. 
  4600. Net32SessionGetInfo     Obtains information about a session. 
  4601.  
  4602.  
  4603. ΓòÉΓòÉΓòÉ 9.3.1.8. NetShare ΓòÉΓòÉΓòÉ
  4604.  
  4605. The functions in the Share category control shared resources. 
  4606.  
  4607. Share is the term applied to the local device of a server (such as a disk 
  4608. drive, print device, or named pipe) that other applications on the network can 
  4609. access.  A unique netname is assigned to each shared resource to enable remote 
  4610. users and applications to refer to the share, rather than the local device name 
  4611. of the share. 
  4612.  
  4613. The following APIs are in the Share category: 
  4614.  
  4615. Net32ShareAdd           Adds a share to a server, allowing remote users and 
  4616.                         applications to access a server resource. 
  4617. Net32ShareCheck         Queries whether a server is sharing a device. 
  4618. Net32ShareDel           Deletes a netname from the list of shared resources of 
  4619.                         a server. As a result, all connections to the shared 
  4620.                         resource are disconnected. 
  4621. Net32ShareEnum          Retrieves share information about each shared resource 
  4622.                         on a server. 
  4623. Net32ShareGetInfo       Retrieves information about a particular shared 
  4624.                         resource on a server. 
  4625. Net32ShareSetInfo       Sets the parameters of a shared resource. 
  4626.  
  4627.  
  4628. ΓòÉΓòÉΓòÉ 9.3.1.9. NetWksta ΓòÉΓòÉΓòÉ
  4629.  
  4630. The Requester APIs enable applications to control the configuration of a 
  4631. requester.  The following APIs are in the Requester category: 
  4632.  
  4633. Net32WkstaGetInfo       Returns configuration information about a client. 
  4634. Net32WkstaSetInfo       Configures a client. 
  4635.  
  4636.  
  4637. ΓòÉΓòÉΓòÉ 9.3.1.10. HPFS Disk Control ΓòÉΓòÉΓòÉ
  4638.  
  4639. The APIs in the High Performance File System (HPFS) Disk Control category 
  4640. control HPFS-related administrative functions, such as Directory Limits. These 
  4641. functions can be implemented for redirected drives for Local Security, if it is 
  4642. installed.  These APIs are new for LAN Server 4.0. 
  4643.  
  4644. The following APIs are in the HPFS Disk Control category: 
  4645.  
  4646. HPFS386GetInfo          Retrieves information. 
  4647. Net32DASDAdd            Invokes the Directory Limits function, which places a 
  4648.                         limit on the amount of disk space that can be used 
  4649.                         within a shared-directory tree. 
  4650. Net32DASDCheck          Returns the amount of disk space available and the 
  4651.                         amount already taken in a particular directory tree. 
  4652. Net32DASDCtl            Prepares an HPFS386 drive for Directory Limits.  Before 
  4653.                         any other Directory Limits API can be used on a drive, 
  4654.                         that drive must be enabled for Directory Limits by 
  4655.                         using either this API, the NETDASD command, or the LAN 
  4656.                         Requester interface. 
  4657. Net32DASDDel            Deletes Directory Limits from a specified directory 
  4658.                         resource. 
  4659. Net32DASDEnum           Returns a list of directories that have had Directory 
  4660.                         Limits applied to them.  This API also returns other 
  4661.                         related information, such as the limit applied to each 
  4662.                         directory, the space used, and the space remaining for 
  4663.                         each directory. 
  4664. Net32DASDGetInfo        Retrieves Directory Limits information for a specific 
  4665.                         resource. 
  4666. Net32DASDSetInfo        Sets Directory Limits restrictions on a specific 
  4667.                         directory resource. 
  4668.  
  4669.  
  4670. ΓòÉΓòÉΓòÉ 9.3.1.11. NetUse ΓòÉΓòÉΓòÉ
  4671.  
  4672. The functions in the Use category examine or control connections (uses) between 
  4673. clients and servers.  Drives, printers, and serial devices can be redirected to 
  4674. shared resources on servers using the Net32Use APIs. 
  4675.  
  4676. The Net32UseAdd function establishes a connection between a local computer and 
  4677. a resource shared on a server by redirecting a null or local device name to a 
  4678. shared resource on that remote server.  The following types of connections can 
  4679. be made: 
  4680.  
  4681. o   Device name connections. 
  4682. o   Universal naming convention (UNC) connections. 
  4683.  
  4684. In addition to the Net32UseAdd API, the following APIs are part of the Use 
  4685. category: 
  4686.  
  4687. Net32UseDel             Ends a connection between a local or UNC device name 
  4688.                         and a shared resource. 
  4689. Net32UseEnum            Lists all current connections between the local 
  4690.                         workstation and resources on a remote server. 
  4691. Net32UseGetInfo         Retrieves information about a connection to a shared 
  4692.                         resource. 
  4693.  
  4694.  
  4695. ΓòÉΓòÉΓòÉ 9.3.1.12. NetRemote ΓòÉΓòÉΓòÉ
  4696.  
  4697. The APIs in the Remote Utility category enable applications to copy and move 
  4698. remote files, run a program remotely, and access the time-of-day information on 
  4699. a remote server. 
  4700.  
  4701. The following APIs in the Remote Utility category relate to file system 
  4702. functions: 
  4703.  
  4704. Net32RemoteCopy         Performs optimized file copying.  Files on a remote 
  4705.                         server are copied without physically moving the files 
  4706.                         to and from the local client.  The source and 
  4707.                         destination must be on the same server. 
  4708. Net32RemoteMove         If the source and destination are on the same drive, 
  4709.                         moves files or directories from one location to another 
  4710.                         on a remote server without physically moving the data. 
  4711.                         If the source and destination are on different drives, 
  4712.                         the move does not require shuffling the data to and 
  4713.                         from the local client. 
  4714.  
  4715.  
  4716. ΓòÉΓòÉΓòÉ 9.3.2. Hints for NOS Management ΓòÉΓòÉΓòÉ
  4717.  
  4718. LAN NetView and NetView/6000 provide remote management of network as well as 
  4719. system resources through the use of the simple network management protocol 
  4720. (SNMP).  Operating system and machine resources are being created using the 
  4721. host resource management information base (MIB) (RFC-1514 of Internet 
  4722. Engineering Task Force).  Applications can also be managed by LAN Netview and 
  4723. NetView/6000 by writing subagents that instrument enterprise-specific 
  4724. application MIBs to these management applications. 
  4725.  
  4726. Either LAN NetView or NetView/6000 can be the managing system for the network. 
  4727. Applications that run on OS/2, AIX/6000, DOS, or any system that provides a 
  4728. TCP/IP protocol stack and an SNMP agent can be managed by these applications. 
  4729.  
  4730. AIX/6000 provides the SNMP multiplexing protocol (SMUX) to allow an application 
  4731. to create subagents to the system MIB.  OS/2 TCP/IP Version 2.0 provides the 
  4732. distributed program interface (DPI) for OS/2 applications to similarly enable 
  4733. resources for remote management. 
  4734.  
  4735. Future Directions 
  4736.  
  4737. o   Communications protocols supported by SNMP agents will be expanded to 
  4738.     include NetBIOS, IPX, and SNA transports.  This will allow applications 
  4739.     with SNMP agents to be managed in these additional environments. 
  4740.  
  4741. o   The desktop management task force (DMTF) desktop management interface (DMI) 
  4742.     will be provided for application instrumentation.  This will allow the 
  4743.     application developer to write to the DMI and not have to construct an SNMP 
  4744.     subagent. 
  4745.  
  4746. o   The X/Open proposed Object Management Framework will be available and 
  4747.     managed object base classes will be defined for remote system management. 
  4748.     Applications will be able to subclass these managed object base classes to 
  4749.     create their own managed object classes.  For example, the mailserver 
  4750.     objects for people and destinations could be monitored and managed from a 
  4751.     management application that uses distributed SOM.  This will allow 
  4752.     applications to easily enable objects for management and will provide a 
  4753.     consistent object view of the network and all the systems and resources for 
  4754.     the administrator. 
  4755.  
  4756. o   The LAN Server NOS APIs will be maintained for backward compatability with 
  4757.     existing LAN Server environments. 
  4758.  
  4759.  
  4760. ΓòÉΓòÉΓòÉ 9.4. Reliability/Availability/Serviceability ΓòÉΓòÉΓòÉ
  4761.  
  4762. RAS refers to reliability, availability and serviceability.  The reliability is 
  4763. the ability of a system to recover from detected errors and to avoid an 
  4764. unrecoverable error.  Availability is how often a functional unit or 
  4765. applications can used when required. Serviceability is the ability to identify 
  4766. and repair system failures in the least amount of time with the least 
  4767. disruption to the customer operation. 
  4768.  
  4769. For more information, see LAN Server RAS APIs. 
  4770.  
  4771.  
  4772. ΓòÉΓòÉΓòÉ 9.4.1. LAN Server RAS APIs ΓòÉΓòÉΓòÉ
  4773.  
  4774. The following APIs should be used for accessing LAN server log information. 
  4775.  
  4776. o   NetStatistics 
  4777. o   NetErrorLog 
  4778.  
  4779.  
  4780. ΓòÉΓòÉΓòÉ 9.4.1.1. NetStatistics ΓòÉΓòÉΓòÉ
  4781.  
  4782. LAN Server accumulates operating statistics for requesters and servers from the 
  4783. time that a Requester or Server service is started. The Net32StatisticsGet2 API 
  4784. retrieves these statistics and can optionally clear the statistics. 
  4785.  
  4786.  
  4787. ΓòÉΓòÉΓòÉ 9.4.1.2. NetErrorLog ΓòÉΓòÉΓòÉ
  4788.  
  4789. The functions in the Error Logging category control the error log file, which 
  4790. contains information about the following types of errors: 
  4791.  
  4792. o   LAN Server software internal errors 
  4793. o   OS/2 internal errors 
  4794. o   Network service errors 
  4795.  
  4796. Error log entries are stored as ASCII text.  The default error log file name is 
  4797. \IBMLAN\LOGS\NET.ERR.  All error logging APIs perform their operations on this 
  4798. file. 
  4799.  
  4800. When FFST/2 support is active, selected LAN Server error log entries are also 
  4801. sent to FFST/2 for logging in the OS/2 error log. 
  4802.  
  4803. The following APIs are part of the Error Logging category: 
  4804.  
  4805. Net32ErrorLogClear      Clears (and optionally saves) the error log file of a 
  4806.                         computer. 
  4807. Net32ErrorLogRead       Reads from a specified computer error log. 
  4808. Net32ErrorLogWrite      Writes an entry file to the error log file of a local 
  4809.                         computer. 
  4810.  
  4811.  
  4812. ΓòÉΓòÉΓòÉ 9.5. Licensing ΓòÉΓòÉΓòÉ
  4813.  
  4814. Licensing is the runtime enforcement of a selected license policy using 
  4815. electronic keys for software execution control, asset management, and 
  4816. protection of intellectual rights.  The APIs associated with licensing are 
  4817. currently not available in the LAN Systems Toolkit. 
  4818.  
  4819. For more information on licensing, see iFOR/LS. 
  4820.  
  4821.  
  4822. ΓòÉΓòÉΓòÉ 9.5.1. iFOR/LS ΓòÉΓòÉΓòÉ
  4823.  
  4824. iFOR/LS is a license manager product that implements technical licensing 
  4825. technology.  iFOR/LS is a new architecture based on NetLS, which is becoming an 
  4826. industry standard.  iFOR/LS has been chosen as the OSF licensing technology and 
  4827. is either used by or has been selected as a standard by IBM (AIX and OS/2), 
  4828. Hewlett Packard (HP/UX), and Novell (NetWare). 
  4829.  
  4830. iFOR/LS code is embedded in the client application, the remote service (in this 
  4831. case, the iFOR/LS license server), and the location-broker system.  All three 
  4832. are transparent to end users in a properly configured system.  Application 
  4833. developers use the iFOR/LS application developer's toolkit administrator 
  4834. runtime kit (ARK) for AIX to install and maintain the license server and the 
  4835. location broker system.