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