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.