Freigeben über


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.