Microsoft RPC Binding-Handle-Erweiterungen
Die Microsoft-Erweiterungen für die IDL-Sprache unterstützen mehrere Handleparameter, die an anderen Positionen als dem ersten, ganz links liegenden Parameter angezeigt werden. Die folgenden Schritte beschreiben die Sequenz, die der MIDL-Compiler durchläuft, um den Bindungshandleparameter im DCE-Kompatibilitätsmodus (/osf) und im Standardmodus (Microsoft-extended) aufzulösen.
DCE-Kompatibilitätsmodus
- Bindungshandle, das an erster Position angezeigt wird.
- Ganz links [ in, _ Kontexthandleparameter. ]
- Implizites Bindungshandle, das durch [ implizites _ Handle ] oder [ _ automatisches Handleangegeben ] wird.
- Wenn kein ACF vorhanden ist, wird standardmäßig das [ automatische _ Handle ] verwendet.
Standardmodus
- Das äußerste linke explizite Bindungshandle.
- Implizites Bindungshandle, das durch [ implizites _ Handle ] oder [ _ automatisches Handleangegeben ] wird.
- Wenn kein ACF vorhanden ist, wird standardmäßig das [ automatische _ Handle ] verwendet.
DCE-IDL-Compiler suchen als ersten Parameter nach einem expliziten Bindungshandle. Wenn der erste Parameter kein Bindungshandle ist und mindestens ein Kontexthandle angegeben wird, wird das ganz links gelassene Kontexthandle als Bindungshandle verwendet. Wenn der erste Parameter kein Handle ist und keine Kontexthandles vorhanden sind, verwendet die Prozedur die implizite Bindung mit dem impliziten Handle des ACF-Attributs oder [ _ ] dem [ automatischen _ Handle ] .
Die Microsoft-Erweiterungen für die IDL ermöglichen es dem Bindungshandle, sich an einer anderen Position als dem ersten Parameter zu befinden. Der ganz links links [ im ] expliziten Handleparameter , unabhängig davon, ob es sich um ein primitives, programmerdefiniertes oder Kontexthandle handelt, ist das Bindungshandle. Wenn keine Handleparameter vorhanden sind, verwendet die Prozedur die implizite Bindung mit dem impliziten Handle des ACF-Attributs oder [ _ ] dem [ automatischen _ Handle ] .
Die folgenden Regeln gelten sowohl für den DCE-Kompatibilitätsmodus (/osf) als auch für den Standardmodus:
- Die Automatische Handlebindung wird verwendet, wenn kein ACF vorhanden ist.
- Explizit [ in ] oder [ in werden out-Handles ] für eine einzelne Funktion jeder impliziten Bindung vorangebeutet, die für die Schnittstelle angegeben ist.
- Mehrere [ ] primitive Out-Handles in oder [ in ] werden nicht unterstützt.
- Mehrere [ ] [ explizite Kontexthandles in oder in ] sind zulässig.
- Alle vom Programmierer definierten Handleparameter mit Ausnahme des Bindungshandleparameters werden als transklassierte Daten behandelt.
Die folgende Tabelle enthält Beispiele und beschreibt, wie Bindungshandles in jedem Compilermodus zugewiesen werden.
| Beispiel | BESCHREIBUNG |
|---|---|
|
Es wird kein explizites Handle angegeben. Das implizite Bindungshandle, das durch [ implicit_handle] oder [ auto_handle] angegeben wird, wird verwendet. Wenn kein ACF vorhanden ist, wird ein automatisches Handle verwendet. |
|
Ein explizites Handle vom Typ handle_t wird angegeben. Der Parameter H ist das Bindungshandle für die Prozedur. |
|
Der erste Parameter ist kein Handle. Im Standardmodus ist der ganz linke Handleparameter Hdas Bindungshandle. Im Modus /osf wird die implizite Bindung verwendet. Es wird ein Fehler gemeldet, da der zweite Parameter voraussichtlich transstruiert ist und handle_t nicht übertragen werden können. |
|
Der erste Parameter ist kein Handle. Im Standardmodus ist der ganz linke Handleparameter Hdas Bindungshandle. Die Stubs rufen die vom Benutzer bereitgestellten Routinen MY_HDL_bind und MY_HDL_unbind auf. Im/osf-Modus wird die implizite Bindung verwendet. Der vom Programmierer definierte Handleparameter H wird als transklassierte Daten behandelt. |
|
Der erste Parameter ist ein Bindungshandle. Der Parameter H ist der Bindungshandleparameter. Der zweite vom Programmierer definierte Handleparameter wird als transklassierte Daten behandelt. |
|
Das Bindungshandle ist ein Kontexthandle. Der Parameter H ist das Bindungshandle. |