Beskrivning av procedurrubrik
Rubriken har utökats flera gånger under NDR-motorns livslängd. Den aktuella kompilatorn genererar fortfarande olika rubriker beroende på kompilatorns läge. Senare rubriker är dock en superuppsättning av de äldre.
Den gamla -Oi-rubriken
Rubriken har följande format:
handle_type<1>
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>
stack_size<2>
[explicit_handle_description<>]
Där handle_type<1> kan vara ett av värdena som visas i följande tabell.
Hex | Handtag |
---|---|
31 | FC_BIND_GENERIC |
32 | FC_BIND_PRIMITIVE |
33 | FC_AUTO_HANDLE |
34 | FC_CALLBACK_HANDLE |
0 | (explicit handtag) |
Om fältet handle_type<1> inte är noll använder proceduren ett implicit handtag av den angivna typen. Mer information finns i avsnittet Handles . Om fältet handle_type<1> är noll är handtaget som används för bindning en av procedurens parametrar.
Explicita referenser kan vara primitiva, generiska och kontext; den sista har följande FC-token.
Hex | Handtag |
---|---|
30 | FC_BIND_CONTEXT |
Enligt konventionen är referenstypen för DCOM-gränssnitt FC_AUTO_HANDLE.
Fältet Oi_flags<1> är en 8-bitars mask av följande flaggor.
Hex | Flagga | Betydelse |
---|---|---|
01 | Oi_FULL_PTR_USED | Använder det fullständiga pekarpaketet. |
02 | Oi_RPCSS_ALLOC_USED | Använder RpcSs-minnespaketet. |
04 | Oi_OBJECT_PROC | En procedur i ett objektgränssnitt. |
08 | Oi_HAS_RPCFLAGS | Proceduren har nonzero Rpc-flaggor. |
10 | Oi_* | Överbelastad. |
20 | Oi_* | Överbelastad. |
40 | Oi_USE_NEW_INIT_ROUTINES | Använder Windows NT3.5 Beta2+ init-rutiner. |
80 | Oanvänd. |
Följande flaggor är överbelastade.
Hex | Flagga | Betydelse |
---|---|---|
10 | ENCODE_IS_USED | Används endast i pickling. |
20 | DECODE_IS_USED | Används endast i pickling. |
10 | Oi_IGNORE_OBJECT_EXCEPTION_HANDLING | Används inte längre (gammal OLE). |
20 | Oi_HAS_COMM_OR_FAULT | Endast i rå RPC, [comm _, fault_status]. |
20 | Oi_OBJ_USE_V2_INTERPRETER | Använd endast –Oif tolk i DCOM. |
Fältet rpc_flags<4> beskriver hur du anger RpcFlags fältet i RPC_MESSAGE-strukturen. Det här fältet finns bara om fältet Oi_flags<1> har Oi_HAD_RPCFLAGS angivet. Om det här fältet inte finns är RPC-flaggorna för fjärrproceduren noll.
Not
För prestanda har asynkrona tolkar alltid fältet rpc_flags<4> närvarande.
Fältet proc_num<2> innehåller procedurens procedurnummer.
Stack_size<2> ger den totala storleken på alla parametrar i stacken, inklusive den här pekaren och/eller returvärdet.
Fältet explicit_handle_description<> beskrivs senare i det här dokumentet. Det här fältet finns inte om proceduren använder ett implicit handtag.