Freigeben über


attribut explicit_handle

Das [explicit_handle] ACF-Attribut gibt an, dass jede Prozedur als erster Parameter über ein primitives Handle verfügt, z. B. einen handle_t-Typ .

[
    explicit_handle
] 
interface interface-name
{
    ...
}

Parameter

Schnittstellenname

Gibt den Namen der Schnittstelle an.

Bemerkungen

Wenn Sie das Attribut [explicit_handle] verwenden, verfügt jede Prozedur über ein primitives Handle als ersten Parameter, auch wenn die IDL-Datei dieses Handle nicht in ihrer Parameterliste enthält. Die Prototypen, die an die Headerdatei und stubroutinen ausgegeben werden, enthalten den zusätzlichen Parameter, und dieser Parameter wird als Handle zum Leiten des Remoteaufrufs verwendet.

Das Attribut [explicit_handle] wirkt sich sowohl auf Remoteprozeduren als auch auf Serialisierungsprozeduren aus. Für die Typserialisierung werden die Unterstützungsroutinen mit dem initialen Parameter als explizites Handle (Serialisierung) generiert. Wenn das Attribut [explicit_handle] nicht verwendet wird, kann die Anwendung dennoch angeben, dass ein Vorgang über ein explizites Handle (Bindung oder Serialisierung) verfügt, das den Aufruf leitet. Hierzu wird ein Prototyp mit einem Argument, das einen Handle-Typ enthält, für die IDL-Datei bereitgestellt. Beachten Sie, dass im Standardmodus ein Argument, das nicht zuerst angezeigt wird, auch als Handle verwendet werden kann, das den Aufruf leitet.

Daher ist das [explicit_handle] -Attribut zwar eine Möglichkeit, dem IDL-Prototyp ein primitives [explicit_handle] -Attribut zu geben, erfordert jedoch nicht unbedingt eine Änderung an der IDL-Datei. Im /osf-Modus kann nur das erste Argument als expliziter Handle-Typ verwendet werden.

Das Attribut [explicit_handle] kann entweder als Schnittstellenattribute oder als Vorgangsattribut verwendet werden. Als Schnittstellenattribute wirkt es sich auf alle Vorgänge in der Schnittstelle und alle Typen aus, die Serialisierungsunterstützung erfordern. Wenn es jedoch als Vorgangsattribut verwendet wird, wirkt sich dies nur auf diesen bestimmten Vorgang aus. Wenn eine Methode ein oder mehrere [in]-Kontexthandles enthält, wird das linksste [in]-Kontexthandle als Bindungshandle verwendet, und es wird kein zusätzliches explizites Handle erstellt.

Beispiele

/* ACF File */ 
[
    explicit_handle
] 
interface iface
{ 
    // Interface definition statements.
};

Weitere Informationen

Anwendungskonfigurationsdatei (Application Configuration File, ACF)

auto_handle

implicit_handle

/Osf