Prozedurheaderdeskriptor
Der Header wurde während der Lebensdauer der NDR-Engine mehrmals erweitert. Der aktuelle Compiler generiert je nach Compilermodus weiterhin unterschiedliche Header. Neuere Header sind jedoch eine Übermenge der älteren Header.
Der alte –Oi-Header
Der Header hat das folgende Format:
handle_type<1>
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>
stack_size<2>
[explicit_handle_description<>]
Wobei handle_type<1> einer der in der folgenden Tabelle gezeigten Werte sein kann.
Hex | Handle |
---|---|
31 | FC_BIND_GENERIC |
32 | FC_BIND_PRIMITIVE |
33 | FC_AUTO_HANDLE |
34 | FC_CALLBACK_HANDLE |
0 | (explizites Handle) |
Wenn das Feld handle_type<1> nichtzero ist, verwendet die Prozedur ein implizites Handle der angegebenen Art. Weitere Informationen finden Sie im Thema Handles . Wenn das Feld handle_type<1 0> ist, ist das für die Bindung verwendete Handle einer der Parameter der Prozedur.
Explizite Handles können primitive, generische und Kontexte sein. die letzte verfügt über das folgende FC-Token.
Hex | Handle |
---|---|
30 | FC_BIND_CONTEXT |
Gemäß der Konvention ist der Handle-Typ für DCOM-Schnittstellen FC_AUTO_HANDLE.
Das Feld Oi_flags<1> ist eine 8-Bit-Maske der folgenden Flags.
Hex | Flag | Bedeutung |
---|---|---|
01 | Oi_FULL_PTR_USED | Verwendet das vollständige Zeigerpaket. |
02 | Oi_RPCSS_ALLOC_USED | Verwendet das RpcSs-Speicherpaket. |
04 | Oi_OBJECT_PROC | Eine Prozedur in einer Objektschnittstelle. |
08 | Oi_HAS_RPCFLAGS | Die Prozedur weist nonzero RPC-Flags auf. |
10 | Oi_* | Überladen. |
20 | Oi_* | Überladen. |
40 | Oi_USE_NEW_INIT_ROUTINES | Verwendet Windows NT3.5 Beta2+ Init-Routinen. |
80 | Nicht verwendet. |
Die folgenden Flags sind überladen.
Hex | Flag | Bedeutung |
---|---|---|
10 | ENCODE_IS_USED | Wird nur bei Beiz verwendet. |
20 | DECODE_IS_USED | Wird nur bei Beiz verwendet. |
10 | Oi_IGNORE_OBJECT_EXCEPTION_HANDLING | Nicht mehr verwendet (alter OLE). |
20 | Oi_HAS_COMM_OR_FAULT | Nur in unformatierten RPC[comm _, fault_status]. |
20 | Oi_OBJ_USE_V2_INTERPRETER | Verwenden Sie nur in DCOM den -Oif-Interpreter . |
Das Feld rpc_flags<4> beschreibt, wie das RpcFlags-Feld der RPC_MESSAGE-Struktur festgelegt wird. Dieses Feld ist nur vorhanden, wenn für das Feld Oi_flags<1> Oi_HAD_RPCFLAGS festgelegt ist. Wenn dieses Feld nicht vorhanden ist, sind die RPC-Flags für die Remoteprozedur 0.
Hinweis
Für die Leistung verfügen die asynchronen Interpreter immer über das feld rpc_flags<4> .
Das Feld proc_num<2> gibt die Prozedurnummer der Prozedur an.
Die stack_size<2> stellt die Gesamtgröße aller Parameter auf dem Stapel bereit, einschließlich dieses Zeigers und/oder Rückgabewerts.
Das Feld explicit_handle_description<> wird weiter unten in diesem Dokument beschrieben. Dieses Feld ist nicht vorhanden, wenn die Prozedur ein implizites Handle verwendet.