Condividi tramite


Descrittore intestazione routine

L'intestazione è stata estesa più volte durante la durata del motore NDR. Il compilatore corrente genera comunque intestazioni diverse a seconda della modalità del compilatore. Tuttavia, le intestazioni più recenti sono un superset di quelle precedenti.

Intestazione -Oi precedente

L'intestazione ha il formato seguente:

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

Dove handle_type<1> può essere uno dei valori illustrati nella tabella seguente.

Hex Handle
31 FC_BIND_GENERIC
32 FC_BIND_PRIMITIVE
33 FC_AUTO_HANDLE
34 FC_CALLBACK_HANDLE
0 (handle esplicito)

 

Se il campo handle_type<1> è diverso da zero, la routine utilizza un handle implicito del tipo indicato. Per altre informazioni, vedere l'argomento Handle . Se il campo handle_type<1> è zero, l'handle utilizzato per l'associazione è uno dei parametri della routine.

Gli handle espliciti possono essere primitivi, generici e di contesto; l'ultimo ha il token fc seguente.

Hex Handle
30 FC_BIND_CONTEXT

 

Per convenzione, il tipo di handle per le interfacce DCOM è FC_AUTO_HANDLE.

Il campo Oi_flags<1> è una maschera a 8 bit dei flag seguenti.

Hex Flag Significato
01 Oi_FULL_PTR_USED Usa il pacchetto del puntatore completo.
02 Oi_RPCSS_ALLOC_USED Usa il pacchetto di memoria RpcSs.
04 Oi_OBJECT_PROC Routine in un'interfaccia oggetto.
08 Oi_HAS_RPCFLAGS La procedura include flag RPC diversi da zero.
10 Oi_* Di overload.
20 Oi_* Di overload.
40 Oi_USE_NEW_INIT_ROUTINES Usa routine init di Windows NT3.5 Beta2+.
80 Non utilizzato.

 

I flag seguenti sono in overload.

Hex Flag Significato
10 ENCODE_IS_USED Utilizzato solo nel pickling.
20 DECODE_IS_USED Utilizzato solo nel pickling.
10 Oi_IGNORE_OBJECT_EXCEPTION_HANDLING Non più usato (VECCHIO OLE).
20 Oi_HAS_COMM_OR_FAULT Solo in RPC non elaborato [comm _, fault_status].
20 Oi_OBJ_USE_V2_INTERPRETER Solo in DCOM usare l'interprete -Oif .

 

Il campo rpc_flags<4> descrive come impostare il campo RpcFlags della struttura RPC_MESSAGE . Questo campo è presente solo se il campo Oi_flags<1> ha Oi_HAD_RPCFLAGS impostato. Se questo campo non è presente, i flag RPC per la procedura remota sono zero.

Nota

Per le prestazioni, gli interpreti asincroni hanno sempre il campo rpc_flags<4> .

 

Il campo proc_num<2> fornisce il numero di routine della procedura.

Il stack_size<2> fornisce le dimensioni totali di tutti i parametri nello stack, inclusi qualsiasi puntatore e/o valore restituito.

Il campo explicit_handle_description<> viene descritto più avanti in questo documento. Questo campo non è presente se la routine utilizza un handle implicito.