RpcServerUseAllProtseqsIfEx

The RpcServerUseAllProtseqsIfEx function tells the RPC run-time library to use all the specified protocol sequences and endpoints in the interface specification for receiving remote procedure calls. For a list of Microsoft RPC's supported protocol sequences, see the reference topic String Binding in RPC Data Types and Structures.

This function is supported only on Windows NT 4.0.

#include <rpc.h>
RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIfEx( 
  unsigned int  MaxCalls,   
  RPC_IF_HANDLE  IfSpec,   
  void *  SecurityDescriptor,  
  PRPC_POLICY Policy       
);
 

Parameters

MaxCalls
Specifies the maximum number of concurrent remote procedure call requests the server can accept.

The RPC run-time library guarantees that the server can accept at least this number of concurrent call requests. The actual number can be greater and can vary for each protocol sequence. Use RPC_C_PROTSEQ_MAX_REQS_DEFAULT to specify the default value.

IfSpec
Specifies the interface containing the protocol sequences and corresponding endpoint information to use in creating binding handles.
SecurityDescriptor
Points to an optional parameter provided for the Microsoft Windows NT security subsystem.
Policy
Points to the RPC_POLICY structure, which contains flags to restrict port allocation for dynamic ports and which allow multihomed machines to selectively bind to network interface cards.

Remarks

The parameters and effects of RpcServerUseAllProtseqsIfEx subsume those of RpcServerUseAllProtseqsIf. The difference is the Policy field, which allows you to restrict port allocation for dynamic ports and allows multihomed machines to selectively bind to network interface cards.

Setting the NICFlags field of the RPC_POLICY structure to zero makes this extended function functionally equivalent to the original RpcServerUseAllProtseqsIf, and the server will bind to NICs based on the settings in the system registry. For information on how the registry settings define the available Internet and intranet ports, see Configuring the Windows NT Registry for Port Allocations and Selective Binding.

Note  The flag settings in the Policy field are effective only when the ncacn_ip_tcp or ncadg_ip_udp protocol sequence is in use. For all other protocol sequences, the RPC run time ignores these values.

A server application calls the RpcServerUseAllProtseqsIfEx routine to register with the RPC run-time library all the protocol sequences and associated endpoint-address information provided in the IDL file.

To receive remote procedure call requests, a server must register at least one protocol sequence with the RPC run-time library.

For each protocol sequence registered by a server, the RPC run-time library creates one or more binding handles through which the server receives remote procedure call requests. The RPC run-time library creates different binding handles for each protocol sequence.

The MaxCalls argument allows the server to specify the maximum number of concurrent remote procedure call requests the server wants to handle.

To register selected protocol sequences specified in the IDL file, a server calls the RpcServerUseProtseqIfEx routine.

Return Values

Value Meaning
RPC_S_OK Success
RPC_S_NO_PROTSEQS No supported protocol sequences
RPC_S_INVALID_ENDPOINT_FORMAT Invalid endpoint format
RPC_S_OUT_OF_MEMORY Out of memory
RPC_S_DUPLICATE_ENDPOINT Endpoint is a duplicate
RPC_S_INVALID_SECURITY_DESC Security descriptor is invalid
RPC_S_INVALID_RPC_PROTSEQ RPC protocol sequence is invalid

See Server Application RPC API Calls for a description of the routines that a server will typically call after registering protocol sequences.

QuickInfo

  Windows NT: Yes
  Windows CE: Unsupported.
  Header: Declared in rpcdce.h.
  Import Library: Link with rpcrt4.lib.

See Also

Configuring the Windows NT Registry for Port Allocations and Selective Binding, RpcServerUseAllProtseqsEx, RpcServerUseProtseqEx, RpcServerUseProtseqEpEx, RpcServerUseProtseqIfEx