1、INTERNATIONAL STANDARD ISO/IEC 11578 First edition 1996-l 2-l 5 Information technology - Open Systems Interconnection - Remote Procedure Call WC) Technologies de Iinformation - lnterconnexion de syst&mes ouverts (OSI) - Appel de pro&dues 2 distance (UPC) Reference number ISO/IEC 1157&l 996(E) ISO/IE
2、C 11578:1996(E) Contents Section 1 General 1.1 Scope 1.2 Normative references 1.3 Informative References 1.4 Definitions 1.4.1 Reference model definitions 1.4.2 Application Layer Structure definitions 1.4.3 Service conventions definitions 1.5 Abbreviations 1.6 Portability 1.7 Services and Protocols
3、1 .a Conformance Requirements Section 2 Introduction to the RPC API 2.1 RPC Programming Model Overview 2.1.1 Client/Server Model 2.1.1.1 Interfaces 2.1.1.2 Remoteness 2.1.1.3 Binding 2.1 .1.4 Name Services 2.1 .1.5 Resource Models 2.1 .1.6 Security Services 2.1 .1.7 Server Implementation 2.1.2 Appli
4、cation/Stub/Run-time System 2.1.2.1 RPC Run Time 2.1.2.2 Stubs 2.1.2.3 Application Code 2.2 API Operations 2.2.1 Binding-related Operations 2.2.2 Name Service Operations 2.2.3 Endpoint Operations 2.2.4 Security Operations 2.2.5 Stub Memory Management Operations 2.2.6 Management Operations 2.2.7 UUID
5、 Operations 2.3 Binding 2.3.1 Binding Handles 2.3.1 .l Client and Server Binding Handles 2.3.1.2 Obtaining Binding Handles 2.3.2 String Bindings 2.3.3 Binding Steps 2.3.3.1 Server Binding Steps 2.3.3.2 Client Binding Steps 2.3.3.3 Call Routing Algorithms 2.3.4 Binding Methods 0 ISO/IEC 1996 All righ
6、ts reserved. Unless otherwise specified, no part of thus publication may be repro- duced or utilized in any form or by any means, erectrontc or mechanrcal. Including photo- copying and microfilm, without permrsaon rn wntlng from the publisher. ISO/IEC Copyright Office l Case postale 56 l CH-1211 Gen
7、eve 20 l Swrtzerland Printed in Switzerland ii 1 2 3 4 5 5 5 5 6 8 9 10 13 14 14 14 14 15 15 15 16 16 16 16 16 17 18 18 18 18 19 19 19 19 20 21 21 21 21 22 22 26 26 29 0 ISOAEC ISO/IEC 11578:1996(E) 2.4 Name Service Interface 2.4.1 Name Service Model 2.4.2 Name Syntax Tags 2.4.3 Name Service Attribu
8、tes 2.4.3.1 Server Entries 2.4.3.2 Group Entries 2.4.3.3 Profiles 2.4.4 Binding Searches 2.4.5 Search Algorithm 2.4.6 Name Service Caching 2.5 Server Model 2.5.1 Server Concurrency and Request Buffering 2.5.2 Management Interface 2.6 Server Resource Models 2.6.1 The Server-Oriented Model 2.6.2 The S
9、ervice-Oriented Model 2.6.3 The Object-Oriented Model 2.7 Security 2.8 Error Handling 2.9 Cancel Notification 2.10 Stubs 2.10.1 IDL to Stub Data Type Mappings 2.10.2 Manager EPVs 2.10.3 Interface Handles 2.10.4 Stub Memory Management 2.11 RPC API Routine Taxonomy 2.11 .l Binding Operations 2.11.2 In
10、terface Operations 2.11.3 Protocol Sequence Operations 2.11.4 Local Endpoint Operations 2.11.5 Object Operations 2.11.6 Name Service Interface Operations 2.11.6.1 NSI Binding Operations 2.11.6.2 NSI Entry Operations 2.11.6.3 NSI Group Operations 2.11.6.4 NSI Profile Operations 2.11.7 Authentication
11、Operations 2.11.8 The Server Listen Operation 2.11.9 The String Free Operation 2.11.10 UUID Operations 2.11 .ll Stub Memory Management 2.11.12 Endpoint Management Operations 2.11.13 Name Service Management Operations 2.11.14 Local Management Services 2.11.15 Local/Remote Management Services 2.11.16
12、Error Messages Section 3 RPC API Manual Pages 3.1 RPC Data Types 3.1.1 Unsigned Integer Types 3.1.2 Signed Integer Type 3.1.3 Unsigned Character String 3.1.4 Binding Handle 3.1.5 Binding Vector 3.1.6 Boolean Type 3.1.7 Endpoint Map Inquiry Handle 3.1 .a Interface Handle 3.1.9 Interface Identifier 3.
13、1.10 Interface Identifier Vector 30 30 30 31 31 31 31 32 33 34 35 35 35 36 36 36 36 37 37 37 39 39 39 39 39 40 40 40 41 41 41 42 42 42 42 43 43 43 43 43 44 44 44 45 45 45 47 47 47 47 47 48 49 49 49 50 50 51 51 3.1.11 Manager Entry Point Vector . . III ISOAEC 11578:1996(E) 0 ISOAEC 3.1.12 Name Servic
14、e Handle 51 3.1.13 Protocol Sequence String 52 3.1.14 Protocol Sequence Vector 52 3.1.15 Statistics Vector 53 3.1.16 String Binding 53 3.1.17 String UUID 54 3.1.18 UUlDs 54 3.1.19 UUID Vector 54 rpc-binding-copy() 56 rpc-binding-free ( ) 57 rpc-binding-from-string-binding() 58 rpc-binding-inq-auth-c
15、lient ( ) 59 rpc-binding-inq-auth-info() 61 rpc-binding-inq-object() 63 rpc-binding-reset ( ) 64 rpc-binding-server-from-client() 65 rpc-binding-set-auth-info() 66 rpc-binding-set-object ( ) 68 rpc-binding-to-string-binding() 69 rpc-binding-vector-free() 70 rpc-ep-register ( ) 71 rpc-ep-register-no-
16、replace( ) 74 rpc-ep-resolve-binding ( ) 76 rpc-ep-unregister ( ) 78 rpc-if-id-vector-free ( ) 79 rpc-if-inq-id ( ) 80 rpcmgmtepeltinqbegin ( ) 81 rpcmgmtepeltinqdone() 84 rpcmgmtepeItinqnext( ) 85 rpc-mgmt-ep-unregister () 87 rpcmgmtinqcomtimeout ( ) 89 rpcmgmtinqdfltprotectlevel( ) 90 rpcmgmtinqif
17、ids ( ) 91 rpcmgmtinqserverprinc_name() 93 rpc-mgmt-inq-stats() 95 rpc-mgmt-is-server-listening() 97 rpc-mgmt-set-authorization-fn ( ) 99 rpcmgmtsetcanceltimeout ( ) 101 rpcmgmtsetcomtimeout ( ) 102 rpc-mgmt-set-server-stack-size() 104 rpcmgmtstatsvectorfree () 105 rpcmgmtstopserverlistening ( ) 106
18、 rpc-network-inq-protseqs ( ) 107 rpc-network-is-protseq-valid ( ) 108 rpc-ns-binding-export ( ) 110 rpc-ns-binding-import-begin ( ) 112 rpc-ns-binding-import_done() 114 rpc-ns-binding-import-next ( ) 115 rpc-ns-binding-inq-entry_name( ) 118 rpccns-binding-lookup-begin () 120 rpc-ns-bindingglookup_d
19、one( ) 122 rpccns-binding-lookup-next ( ) 123 rpc-ns-binding-select ( ) 126 rpc-ns-binding-unexport() 127 rpc-ns-entry-expand-name ( ) 129 rpc-ns-entry-inq-resolution() 130 rpccns-entry-object&q-begin ( ) 132 rpc-nssentry-object-inq_done() 133 rpc-ns-entry-object-inq-next ( ) 134 iv 0 ISO/IEC ISO/IE
20、C 11578:1996(E) rpc-ns-group-delete() 136 rpc-ns-group-mbr-add ( ) 137 rpc-ns-group-mbr-inq-begin ( ) 139 rpc-ns-group-mbr-inq_done() 141 rpc. -ns-group-mbr-inq-next ( ) 142 rpc-ns-group-mbr-remove( ) 144 rpc-ns-mgmt-binding-unexport() 146 rpc-ns-mgmt-entry-create() 149 rpc-ns-mgmt-entry-delete() 15
21、0 rpcnsmgmtentryinqifids ( ) 151 rpc-ns-mgmt-handle-set_exp_age() 153 rpc-ns-mgmt-inq-exp-age() 154 rpc-ns-mgmt-set-exp-age( ) 156 rpc-ns-profile-delete( ) 158 rpc-ns-profile-elt-add ( ) 159 rpc-ns-profile-elt-inq-begin () 161 rpcnsprofileeltinqdone() 164 rpcnsprofileeItinqnext( ) 165 rpcnsprofileel
22、tremove() 167 rpc-object-inq-type() 169 rpc-object-set-inq-fn ( ) 171 rpc-object-set-type( ) 172 rpc-protseq-vector-free ( ) 174 rpc-server-inq-bindings ( ) 175 rpc-server-inq-if ( ) 177 rpc-server-listen ( ) 178 rpc-server-register-auth-info ( ) 180 rpc-server-register-if ( ) 182 rpc-server-unregis
23、ter-if () 185 rpc-server-use-all-protseqs( ) 187 rpcserveruseallprotseqsif ( ) 189 rpc-server-use-protseq ( ) 191 rpc-server-use-protseq-ep ( ) 193 rpc-server-use-protseq-if ( ) 195 rpc-sm-allocate() 197 rpc-sm-client-free() 198 rpc-sm-destroy-client-context ( ) 199 rpcsmenableallocate() 200 rpccsm-
24、free( ) 201 rpc-sm-get-thread-handle( ) 202 rpcsmsetclientallocfree() 203 rpc-sm-set-thread-handle() 204 rpcsmswapclientaIlocfree( ) 205 rpc-string-binding-compose() 206 rpc-string-binding-parse ( ) 207 rpc-string-free( ) 209 uuid-compare ( ) 211 uuid-create() 212 uuid-create-nil( ) 213 uuid-equal(
25、) 214 uuid-from-string ( ) 215 uuid-is-nil() 216 uuid-to-string ( ) 217 Section 4 Interface Definition Language 219 4.1 Notation 219 4.2 IDL Language Specification 220 4.2.1 IDLLexemes 220 4.2.1.1 Keywordsand Reserved Words 220 4.2.1.2 Identifiers 220 V ISOAEC 11578:1996(E) 0 ISO/IEC 4.2.1.3 IDL Pun
26、ctuation 220 4.2.1.4 Alternate Representation of Braces 221 4.2.1.5 White Space 221 4.2.2 Comments 221 4.2.3 Interface Definition Structure 221 4.2.4 Interface Header 221 4.2.4.1 The uuid Attribute 222 4.2.4.2 The version Attribute 222 4.2.4.3 The endpoint Attribute 222 4.2.4.4 The local Attribute 2
27、22 4.2.4.5 The pointer-default Attribute 222 4.2.5 Interface Body 223 4.2.6 Import Declaration 223 4.2.7 Constant Declaration 223 4.2.7.1 Syntax 223 4.2.7.2 Semantics and Restrictions 224 4.2.8 Type Declarations and Tagged Declarations 224 4.2.9 Base Types 225 4.2.9.1 Syntax 225 4.2.9.2 Integer Type
28、s 225 4.2.9.3 The char Types 226 4.2.9.4 The boolean Type 226 4.2.9.5 The byte Type 226 4.2.9.6 The void Type 226 4.2.9.7 The handle-t Type 226 4.2.10 Constructed Types 226 4.2.11 Structures 226 4.2.12 Unions 226 4.2.12.1 Syntax 226 4.2.12.2 Semantics and Restrictions 227 4.2.13 Enumerated Types 228
29、 4.2.14 Pipes 228 4.2.14.1 Syntax 228 4.2.14.2 Semantics and Restrictions 228 4.2.15 Arrays 228 4.2.15.1 Syntax 228 4.2.15.2 Semantics and Restrictions 229 4.2.15.3 Arrays of Arrays 229 4.2.16 Type Attributes 229 4.2.16.1 Syntax 229 4.2.16.2 Semantics and Restrictions 229 4.2.16.3 The transmit-as At
30、tribute 229 4.2.16.4 The handle Attribute 230 4.2.16.5 The string Attribute 230 4.2.16.6 The context-handle Attribute 230 4.2.17 Field Attributes 230 4.2.17.1 Syntax 231 4.2.17.2 Semantics and Restrictions 231 4.2.17.3 The ignore Attribute 231 4.2.18 Field Attributes in Array Declarations 231 4.2.18
31、.1 Conformant Arrays 231 4.2.18.2 Varying and Conformant Varying Arrays 232 4.2.18.3 Relationships Between Attributes 233 4.2.18.4 Negative Size and Length Specifications 233 4.2.19 Field Attributes in String Declarations 233 4.2.19.1 The first-is, last-is and length-is Attributes 233 4.2.19.2 The m
32、ax-is Attribute 233 4.2.19.3 The size-is Attribute 234 4.2.20 Pointers 234 0 ISO/IEC lSO/lEC 11578:1996(E) 4.2.20.1 Syntax 234 4.2.20.2 Semantics and Restrictions 234 4.2.20.3 Attributes Applicable to Pointers 235 4.2.20.4 Varying Arrays of Pointers 235 4.2.20.5 Restrictions on Pointers 236 4.2.21 P
33、ointers as Arrays 237 4.2.21 .l Pointers with the string Attribute 237 4.2.21.2 Possible Ambiguity Resolved 237 4.2.22 Operations 237 4.2.22.1 The idempotent Attribute 238 4.2.22.2 The broadcast Attribute 238 4.2.22.3 The maybe Attribute 238 4.2.23 Parameter Declarations 238 4.2.23.1 Syntax 238 4.2.
34、23.2 Semantics and Restrictions 238 4.2.23.3 Directional Attributes 238 4.2.23.4 Aliasing in Parameter Lists 239 4.2.24 Predefined Types 239 4.2.25 The error-status-t Type 239 4.2.26 International Character Types 239 4.2.27 Anonymous Types 240 4.3 The Attribute Configuration Source 241 4.3.1 Comment
35、s 241 4.3.2 Identifiers 241 4.3.3 Syntax 241 4.3.4 tnclude Declaration 242 4.3.5 Specifying Binding Handles 243 4.3.5.1 The explicit-handle Attribute 243 4.3.5.2 The implicit-handle Attribute 243 4.3.5.3 The auto-handle Attribute 243 4.3.6 The represent-as Attribute 244 4.3.7 The code and nocode Att
36、ributes 244 4.3.8 The in-line and out-of-line Attributes 244 4.3.9 Return Statuses 245 4.3.9.1 The comm-status Attribute 245 4.3.9.2 The fault-status Attribute 245 4.3.9.3 Interaction of the comm-status and fault-status Attributes 246 4.3.10 The heap Attribute 246 4.3.11 The enable-allocate Attribut
37、e 246 4.4 IDL Grammar Synopsis 247 4.4.1 Grammar Synopsis 247 4.4.2 Alphabetic Listing of Productions 250 4.5 IDL Constructed Identifiers 253 4.6 IDL and ACS Reserved Words 254 Section 5 Stubs 255 5.1 The Application/Stub Interface 255 5.1 .l Parameters 255 5.1.1.1 Parameter Memory Management 255 5.
38、1.1.2 Client-side Allocation 256 5.1.1.3 Server-side Allocation 256 5.1.1.4 Aliasing 257 5.1.2 Default Manager EPVs 257 5.1.3 Interface Handle 257 5.1.4 Pipes 257 5.1.4.1 Processing of in Pipes 259 5.1.4.2 Processing of out Pipes 260 5.1.4.3 Processing of inout Pipes 261 5.1.5 IDL and ACS Type Attri
39、butes 261 5.1.5.1 The IDL transmit-as Attribute 261 vii lSO/lEC 11578:1996(E) 5.1.5.2 5.1.5.3 5.1.5.4 5.1.5.5 5.1.5.6 5.1.6 5.2 5.2.1 5.2.2 Section 6 6.1 6.1.1 6.1.1.1 6.1 .1.2 6.1.2 6.1.2.1 6.1.2.2 6.1.2.3 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.2 6.2.1 6.2.2 6.2.2.1 6.2.2.2 6.2.3 6.2.3.1 6.2.3.2 6.2
40、.3.3 6.2.3.4 6.2.3.5 6.2.3.6 6.2.3.7 6.3 Section 7 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 Section 8 8.1 8.2 8.3 8.4 8.4.1 8.4.2 8.4.3 8.5 8.5.1 8.5.2 The IDL handle Attribute Interaction of IDL transmit-as and IDL handle Attributes The ACS represent-as Attribute Interaction of the ACS represent-as At
41、tribute and the IDL handle Attribute Interaction of the ACS represent-as Attribute with the IDL transmit-as Attribute Context Handle Rundown Interoperability Requirements on Stubs Operation Numbers Error Handling During Floating-Point Unmarshalling Remote Procedure Call Model Client/Server Execution
42、 Model RPC Interface and RPC Object RPC Interfaces RPC Objects Interface Version Numbering Rules for Changing Version Numbers Definition of an Upwardly Compatible Change Non-upwardly Compatible Changes Remote Procedure Calls Nested RPCs Execution Semantics Context Handles Threads Cancels Binding, Ad
43、dressing and Name Services Binding Endpoints and the Endpoint Mapper Client Operation Server Operation NSI Interface Common Declarations Protocol Towers The server-name Object Attributes The group Object Attributes The profile Object Attributes Encoding Name Service Class Values Error Handling Model
44、 RPC Service Definition Call Representation Data Structure Service Primitives Invoke Result Cancel Error Reject Statechart Specification Language Semantics The Elements of Statecharts State Hierarchies Concurrency Graphical Expressions Default Entrances Conditional Connectors Terminal Connectors Sem
45、antics that Require Special Consideration Implicit Exits and Entrances (Scope of Transitions) Conflicting Transitions 0 ISOAEC 262 263 263 264 264 264 266 266 266 267 268 268 268 268 269 269 269 269 269 270 270 271 271 273 275 275 276 276 277 277 277 278 279 281 282 283 283 284 285 285 285 286 287 2
46、88 289 290 291 291 293 293 294 294 294 294 295 295 295 * VIII 0 ISOAEC ISO/IEC 11578: 1996(E) 8.5.3 Execution Steps and Time 295 8.5.4 Synchronisation and Race Conditions 296 8.6 Summary of Language Elements 297 8.6.1 Event Expressions 297 8.6.2 Condition Expressions 298 8.6.3 Action Expressions 298
47、 8.6.4 Data Item Expressions 300 8.6.4.1 Atomic Numeric Expressions 300 8.6.4.2 Compound Numeric Expressions 300 8.6.4.3 String Expressions 300 Section 9 RPC Protocol Definitions 301 9.1 Conformance 301 9.2 RPC Stub to Run-time Protocol Machine Interactions 302 9.2.1 Client Protocol Machines 302 9.2
48、.2 Server Protocol Machines 303 9.3 Connection-oriented Protocol 304 9.3.1 Client/Server 304 9.3.2 Association Group 304 9.3.3 Association 304 9.3.3.1 Association Management Policy 305 9.3.3.2 Primary and Secondary Endpoint Addresses 305 9.3.4 Call 305 9.3.5 Transport Service Requirements 305 9.4 Co
49、nnection-oriented Protocol Machines 306 9.4.1 CO-CLIENT-ALLOC 306 9.4.2 CO-CLIENT-GROUP 306 9.4.3 CO-CLIENT 306 9.4.3.1 ASSOCIATION 307 9.4.3.2 CONTROL 307 9.4.3.3 CANCEL 307 9.4.3.4 CALL 307 9.4.4 CO-SERVER-GROUP 307 9.4.5 CO-SERVER 307 9.4.5.1 ASSOCIATION 308 9.4.5.2 CONTROL 308 9.4.5.3 CANCEL 308 9.4.5.4 WORKING 308 9.5 Connectionless Protocol 309 9.5.1 Client/Server 309 9.5.2 Activity 309 9.5.3 Call 309 9.5.4 Maintaining Execution Context and Monitoring Liveness 309 9.5.5 Serial Numbers 310 9.5.6 Transp