MIDL_STUB_DESC structure (rpcndr.h)

The MIDL_STUB_DESC structure is a MIDL-generated structure that contains information about the interface stub regarding RPC calls between the client and server.

Syntax

typedef struct _MIDL_STUB_DESC {
  void                                 *RpcInterfaceInformation;
  void * )(size_t)                                 *(pfnAllocate;
  void()(void *)                                * pfnFree;
  union {
    handle_t              *pAutoHandle;
    handle_t              *pPrimitiveHandle;
    PGENERIC_BINDING_INFO pGenericBindingInfo;
  } IMPLICIT_HANDLE_INFO;
  const NDR_RUNDOWN                    *apfnNdrRundownRoutines;
  const GENERIC_BINDING_ROUTINE_PAIR   *aGenericBindingRoutinePairs;
  const EXPR_EVAL                      *apfnExprEval;
  const XMIT_ROUTINE_QUINTUPLE         *aXmitQuintuple;
  const unsigned char                  *pFormatTypes;
  int                                  fCheckBounds;
  unsigned long                        Version;
  MALLOC_FREE_STRUCT                   *pMallocFreeStruct;
  long                                 MIDLVersion;
  const COMM_FAULT_OFFSETS             *CommFaultOffsets;
  const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
  const NDR_NOTIFY_ROUTINE             *NotifyRoutineTable;
  ULONG_PTR                            mFlags;
  const NDR_CS_ROUTINES                *CsRoutineTables;
  void                                 *ProxyServerInfo;
  const NDR_EXPR_DESC                  *pExprInfo;
} MIDL_STUB_DESC;

Members

RpcInterfaceInformation

For a nonobject RPC interface on the server-side, it points to an RPC server interface structure. On the client-side, it points to an RPC client interface structure. It is null for an object interface.

pfnAllocate

Memory allocation function to be used by the stub. Set to midl_user_allocate for nonobject interface and NdrOleAllocate for object interface.

pfnFree

Memory-free function to be used by the stub. Set to midl_user_free for nonobject interface and NdrOleFree for object interface.

IMPLICIT_HANDLE_INFO

The union contains one of the following handles.

IMPLICIT_HANDLE_INFO.pAutoHandle

Pointer to the implicit auto handle for the RPC call.

IMPLICIT_HANDLE_INFO.pPrimitiveHandle

Pointer to the implicit primitive handle for the RPC call.

IMPLICIT_HANDLE_INFO.pGenericBindingInfo

Pointer to the information about the implicit generic handle.

apfnNdrRundownRoutines

Array of context handle rundown functions.

aGenericBindingRoutinePairs

Array of function pointers to bind and unbind function pairs for the implicit generic handle.

apfnExprEval

Array of function pointers to expression evaluator functions used to evaluate MIDL complex conformance and varying descriptions. For example, size_is(param1 + param2).

aXmitQuintuple

Array of an array of function pointers for user-defined transmit_as and represent_as types.

pFormatTypes

Pointer to the type format description.

fCheckBounds

Flag describing the user-specified /error MIDL compiler option.

Version

NDR version required for the stub.

pMallocFreeStruct

Pointer to the MALLOC_FREE_STRUCT structure which contains the allocate and free function pointers. Use if the enable_allocate MIDL attribute is specified.

MIDLVersion

Version of the MIDL compiler used to compile the .idl file.

CommFaultOffsets

Array of stack offsets for parameters with comm_status or fault_status attributes.

aUserMarshalQuadruple

Array of an array of function pointers for user-defined user_marshal and wire_marshal types.

NotifyRoutineTable

Array of notification function pointers for methods with the notify or notify_flag attribute specified.

mFlags

Flag describing the attributes of the stub

Value Meaning
RPCFLG_HAS_MULTI_SYNTAXES
Set if the stub supports multiple transfer syntaxes.
RPCFLG_HAS_CALLBACK
Set if the interface contains callback functions.
RPC_INTERFACE_HAS_PIPES
Set if the interface contains a method that uses pipes.

CsRoutineTables

Unused.

ProxyServerInfo

pExprInfo

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Header rpcndr.h (include Rpc.h)