AcknowIedgements Part 1 Chapter 1 Getting Around in the NetWorking Services Library How the NetWorking Services Library is Structured How the NetWorking Services Library is Designed Chapter 2 Whats In This Volume? Microsoft RPC Model lnstalling The RPC Programming Environment Building RPC Applications Connecting the Client and the Server Tutorial IDL and ACF Files Data and Language Features Arrays and Pointers Pipes Binding and Handles Memory Management Serialization Services Security Installing and Configuring RPC Applications Asynchronous RPC RPC Message Queuing Remote Procedure Calls Using HTTP Samples RPC Reference Chapter 3 Using Microsoft Reference Resources The Microsoft Developer NetWork Comparing MSDN with MSDN Online MSDN Subscriptions MSDN Library Subscription MSDN ProfessionaI Subscription MSDN UnivorRal RllhRnrintinn Purchasing an MSDN Subscription Using MSDN Navigating MSDN Quick Tips Using MSDN Online Navigating MSDN Online MSDN Online Features MSDN Online Registered Users The Windows Programming Reference Series Chapter 4 Finding the Developer Resources You Ned Developer Support Online Resources Intemet Standards Learning Products Conferences Other Resources Chapter 5 Avoiding Common RPC Programming Errors Solution Summary Common RPC Programming Errors Pointerdefault(unique) and embedded pointers A valid switch--is vaIue in an RPC-capabIe structure doesnt ensure a non-NULL pointer A NULL DACL affords no protection CalI RpclmpersonateCIient() before any security-reIevant operation Starting and stopping imperson8tion Strings are only zero-terminated when declared with string in the .idl Dont copy arbitrary Iength d8ta into independentIy sized buffers Size--is may result in a zero-length structure CaIculations in a size--is or Iength--is specification are susceptible to overflow Strict context handles Part 2 Chapter 6 Microsoft RPC Model The Programming Model The Client-Server Model The Compute-Server Model How RPC Works OSF Standards for RPC Microsoft RPC Components RPC Extends Client-Server Computing Chapter 7 InStalling the RPC Programming Environment Developing 32-Bit Windows Applications Developing Macintosh Client AppIications Chapter 8 BuiIding RPC AppIications GeneraI Build Procedure Developing the Interface Generating Interface UUlDs Using MIDL Developing the Server Developing the CIient Environment CompiIer and APl Set Choices Exception Handling Chapter 9 Connecting the CIient and the Server Essential RPC Binding TerminoIogy How the Server Prepares for a Connection Registering the Interface Creating Bingding information Advertisiting the Server Program Registering Endpoints Listening for client Calls How the Client Establishes a Connection Making a Remote Procedure Call Finding the Server Host Computer Finding the Server Program Creating a Binding Chapter 10 An RPC Tutorlal The Stand-AIone Application Defining the Interface Genefating the UUlD The IDL File The ACF File Genefating the Stub Files The Client Application The Server ApplicatiOn Stopping the Server Application Compiling and Linking Running the Application Chapter 11 The IDL and ACF Files The lnterface Definition Language (IDL) File The IDL Interface Header The IDL Interface Body The Application Configuration FiIe (ACF) The ACF Header The ACF Body MIDL CompiIer Output Chapter 12 Data and Language Features Strong Typing Base Types Signed and Unsigned Types Wide-Character Types Structures Unions Enumerated Types Arrays Function Attributes Field Attributes Three Pointer Types Type Attributes Directional (Parameter) Attributes Data Representation The transmicas and representas Attributes The transmitas Attribute The typeJo--xmit Function The typeJrom--xmit Function The typeJree--Xmit Function The typeJree--inst Function The represenuss Attribute The namedmpeJrom--local Function The namedJypeJo--local Function The namedMpeJree--locaI Function The namedMpeJree--inst Function The wire--marshaI and useFmarshaI Attributes The wire--marshaI Attribute The useFmarshal Attribute The type--UserSize Function The type--UserMarshal Function The type--UserUnmarshaI Function The type--UserFree Function Marshaling Rules for usermarshal and wire--marshal Chapter 13 Arrays and Pointers Arrays and RPC Kinds of Arrays Fixed Arrays Varying Arrays Conformant Arrays Array Attributes MlDL Array Attributes Used in RPC The [size--is] Attribute The [length--is] Attribute The [firstis] and [last--is] Attributes The [maXis] Attribute Combining Array Attributes The [stringJ Attribute in Arrays MuItidimensional Arrays Pointers and RPC Kinds of Pointers Reference Pointerg Unique Pointers Full Pointers Pointers and Memory Allocation Default Pointer Types Pointer-Attribute Type Inheritance Using Arrays Strings and Pointers Counted Character Arrays [in out size--is] Prototype [in size--is and out size--is] Prototype Strings [in Out string] Prototype [in string] and [out string] Prototype MultiDIe Levels of Pointor Chapter 14 Pipes Essential Pipe Terminology The Pipe State Defining Pipes in IDL Files CIient-Side Pipe lmplementation ImpIementing lnput Pipes on the Client ImpIementing Output Pipes on the Client Server-Side Pipe Implementation lmpIementing Input Pipes on the Server Implementing Output Pipes on the Server Rules for Multiple Pipes Combining Pipe and Nonpipe Parameters Chapter 15 Binding and HandIes Binding Handles Types of Binding Handles Automatic Binding Handles lmplicit Binding Handles Explicit Binding Handles Primitive and Custom Binding Handles Client-Side Binding Selecting a Protocol Sequence Finding Server HoSt Systems Finding Endpoints Server-Side Binding Registering Interfaces Specifying Protocol Sequences Specifying Endpoints Advertising Server Interfaces Listening for Remote Procedure Calls Fully and Partially Bound Handles Interpreting Binding Information Microsott RPC Binding-HandIe Extensions Binding-Handle Functions The RPC Name-Service Database Name-Service Application Guidelines An Overview of the Name Service Entry Criteria for Name Service Entries Name Service Entrv CleanUD What Happens During a Query Using Microsoft Locator Using the Cell Directory Service (CDS) Name Syntax Context Handles Interface Development Using Context Handles Server Development Using Context Handles Client Development Using Context Handles Server Context Rundown Routine Client Context Reset Mufti-Threaded Clients and Context Handles Chapter 16 Memory Management Introduction to RPC Memory Management How Memory Is Allocated and Deallocated The midi--useFallocate Function The midl--useFfree Function Rpcss Memory Management Package Memory-Management Models Node-by-Node Allocation and Deallocation Stub-Allocated Buffers Application-Allocated Buffer Persistent Storage on the Server Who Manages Memory? Top-LeveI and Embedded Pointers DirectionaI Attributes Applied to the Parameter Length Size and DirectionaI Attributes Pointer Attributes Applied to the Parameter Combining Pointer and DirectionaI Attributes Embedded Out-Only Reference Pointers Out-Only Unique or Full Pointer Parameters Not Accepted Function Return Values Memory Orphaning Summary of Memory AlIocation Rules Chapter 17 SeriaIization Services Using Serialization Services Procedure Serialization Type Serialization Serialization Handles lmpIicit Versus Explicit Handles Serialization Styles Fixed Buffer Serialization Dynamic Buffer Serialization IncrementaI SeriaIization Obtaining an Encoding ldentity Chapter 18 Security RPC Security Essentials Principal Names Authentication Levels Authentication Services Client Authentication Credentials Authorization Services Quality of Service Authorization Functions Key Acquisition Functions Client Impersonation Security Methods Security Support Provider Interface (SSPI) SSPI Architectural Overview Security Support Providers (SSPs) Writing an Authenticated SSPl Client Writing an Authenticated SSPl Server Windows NT and Windows 2000 Transport Security Using Transport-Level Security on the Server Using Transport-LeveI Security on the Client Chapter 19 InstaIling and Configuring RPC AppIications Configuring the Name Service Provider Configuring the Name Service for Windows 95 Editing the Windows 95 Registry Configuring the Name Service for Windows NT or Windows 2000 Configuring the Name Service for Windows 3x or MS-DOS Starting and Stopping Microsoft Locator Registry Information Using RPC Registry Entries Configuring the Windows NT and Windows 2000 Registry for Port Allocations and Selective Binding Using RPC with Winsock Proxy SPX/IPX lnstallation Configuring RPC for SPX/IPX Configuring SAP and RPC Configuring the Security Server Chapter 20 AsynchFOnous RPC Declaring Asynchronous Functions CIient-Side Asynchronous RPC Making the Asynchronous Call Waiting for the Asynchronous Reply Receiving the Asynchronous Reply ServerSide Asynchronous RPC Handling Asynchronous Calls Receiving Cancellations Sending the Asynchronous Reply Asynchronous I/O and Asynchronous RPC CausaI Ordering of Asynchronous Calls Error Handling Asynchronous RPC Over the Named-Pipe Protools Using Asynchronous RPC with DCE Pipes Asynchronous Pipes Declaring Asynchronous Pipes Client-Side Asynchronous Pipe Handling Server-Side Asynchronous Pipe Handling Asynchronous DCOM Chapter 21 RPC Message 0ueuing Overview of Message Queuing Services Architecture Message and Message Queue Properties Using MSMQ as an RPC Transport System Requirements for RPC-MQ Applications Developing RPC-MQ Applications MSMQ Security Services Chapter 22 Remote Procedure Calls Using HTTP Using HTTP as an RPC Transport HTTP RPC Security System Requirements for HTTP RPC Configuring Computers for HTTP RPC Chapter 23 RPC Samples Chapter 24 RPC Data Types Structures and Constants RPC Structures RPC Enumerated Types Other RPC Types RPC Constants RPC Return Values Chapter 25 RPC Function Reference RPC Functions Chapter 26 RPC Callback and Notification Functions Chapter 27 RPC Macros Chapt6r 28 Windows Networking (WNet) About Windows NetWorking WNet Functions Windows NetWorking Operations Using Windows NetWorking Using the Connections Dialog Box Enumerating NetWork Resources Adding a NetWork Connection Assigning a Drive to a Share Determining the Location of a Share Retrieving the Connection Name Retrieving the User Name Canceling a NetWork Connection Retrieving Network Errors Windows Networking Reference Windows Networking Functions Obsolete Functions Windows Networking Structures Part 3 Glossary Index:Networking Services Programming Elements-Alphabetical Listing