Compartir a través de


Descriptor de encabezado de procedimiento

El encabezado se ha extendido varias veces a lo largo de la vida del motor NDR. El compilador actual sigue generando encabezados diferentes en función del modo del compilador. Sin embargo, los encabezados más recientes son un superconjunto de los más antiguos.

Encabezado –Oi antiguo

El encabezado tiene el siguiente formato:

handle_type<1> 
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>  
stack_size<2>
[explicit_handle_description<>]

Donde handle_type<1> puede ser uno de los valores que se muestran en la tabla siguiente.

Hex Handle
31 FC_BIND_GENERIC
32 FC_BIND_PRIMITIVE
33 FC_AUTO_HANDLE
34 FC_CALLBACK_HANDLE
0 (identificador explícito)

 

Si el campo handle_type<1> es distinto de cero, el procedimiento usa un identificador implícito del tipo indicado. Consulte el tema Handles (Identificadores ) para obtener más información. Si el campo handle_type<1> es cero, el identificador usado para el enlace es uno de los parámetros del procedimiento.

Los identificadores explícitos pueden ser primitivos, genéricos y de contexto; el último tiene el siguiente token de FC.

Hex Handle
30 FC_BIND_CONTEXT

 

Por convención, el tipo de identificador de las interfaces DCOM es FC_AUTO_HANDLE.

El campo Oi_flags<1> es una máscara de 8 bits de las marcas siguientes.

Hex Marca Significado
01 Oi_FULL_PTR_USED Usa el paquete de puntero completo.
02 Oi_RPCSS_ALLOC_USED Usa el paquete de memoria RpcSs.
04 Oi_OBJECT_PROC Procedimiento en una interfaz de objeto.
08 Oi_HAS_RPCFLAGS El procedimiento tiene marcas Rpc que no son cero.
10 Oi_* Sobrecargado.
20 Oi_* Sobrecargado.
40 Oi_USE_NEW_INIT_ROUTINES Usa rutinas de inicialización de Windows NT3.5 Beta2+.
80 Sin usar.

 

Las marcas siguientes están sobrecargadas.

Hex Marca Significado
10 ENCODE_IS_USED Solo se usa en el selector.
20 DECODE_IS_USED Solo se usa en el selector.
10 Oi_IGNORE_OBJECT_EXCEPTION_HANDLING Ya no se usa (OLE antiguo).
20 Oi_HAS_COMM_OR_FAULT Solo en RPC sin formato, [comm _, fault_status].
20 Oi_OBJ_USE_V2_INTERPRETER Solo en DCOM, use el intérprete –Oif .

 

El campo rpc_flags<4> describe cómo establecer el campo RpcFlags de la estructura RPC_MESSAGE . Este campo solo está presente si el campo Oi_flags<1> tiene Oi_HAD_RPCFLAGS establecido. Si este campo no está presente, las marcas RPC para el procedimiento remoto son cero.

Nota

Para el rendimiento, los intérpretes asincrónicos siempre tienen el campo rpc_flags<4> presente.

 

El campo proc_num<2> proporciona el número de procedimiento del procedimiento.

El stack_size<2> proporciona el tamaño total de todos los parámetros de la pila, incluido cualquier puntero o valor devuelto.

El campo explicit_handle_description<> se describe más adelante en este documento. Este campo no está presente si el procedimiento usa un identificador implícito.