Lokales Attribut
Das [local] -Attribut gibt für den MIDL-Compiler an, dass eine Schnittstelle oder Funktion nicht remote ist.
[
local
[, interface-attribute-list]
]
interface interface-name
{
}
[
object,
uuid(string-uuid),
local [, interface-attribute-list]
]
interface interface-name
{
}
[ local [, function-attribute-list] ] function-declarator ;
-
interface-attribute-list
-
Gibt andere Attribute an, die für die Schnittstelle als Ganzes gelten. Die Attribute [Endpunkt], [Version] und [pointer_default] sind optional. Wenn Sie mit dem Schalter /app_config kompilieren, können auch [implicit_handle] oder [auto_handle] vorhanden sein. Trennen Sie mehrere Attribute durch Kommas.
-
Schnittstellenname
-
Gibt den Namen an, mit dem Softwarekomponenten die Schnittstelle abgrenzen können.
-
string-uuid
-
Gibt eine vom Hilfsprogramm Uuidgen generierte UUID-Zeichenfolge an. Wenn Sie nicht den MIDL-Compilerschalter /osf verwenden, können Sie die UUID-Zeichenfolge in Anführungszeichen einschließen.
-
function-attribute-list
-
Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [Rückruf]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle]. Trennen Sie mehrere Attribute durch Kommas.
-
Funktionsdeklarator
-
Gibt den Typbezeichner, den Funktionsnamen und die Parameterliste für die Funktion an.
Das Attribut [local] kann auf einzelne Funktionen oder auf die gesamte Schnittstelle angewendet werden.
Wenn sie im Schnittstellenheader verwendet wird, können Sie mit dem Attribut [local] den MIDL-Compiler als Headergenerator verwenden. Der Compiler generiert keine Stubs für Funktionen und stellt nicht sicher, dass der Header übertragen werden kann.
Für eine RPC-Schnittstelle kann das Attribut [local] nicht gleichzeitig mit dem [uuid] -Attribut verwendet werden. Entweder [uuid] oder [local] muss im Schnittstellenheader vorhanden sein, und die von Ihnen ausgewählte muss genau einmal auftreten.
Für eine COM-Schnittstelle (identifiziert durch das [Object]- Schnittstellenattribute) kann die Schnittstellenattributeliste das Attribut [local] enthalten, obwohl das [uuid] -Attribut vorhanden ist.
Bei Verwendung in einer einzelnen Funktion gibt das Attribut [local] eine lokale Prozedur an, für die keine Stubs generiert werden. Die Verwendung von [local] als Funktionsattribute ist eine Microsoft-Erweiterung für DCE IDL. Daher ist dieses Attribut nicht verfügbar, wenn Sie mit dem MIDL /osf-Schalter kompilieren.
Beachten Sie, dass eine Schnittstelle ohne Attribute in eine IDL-Basisdatei importiert werden kann. Die Schnittstelle darf jedoch nur Datentypen ohne Prozeduren enthalten. Wenn in der Schnittstelle auch nur eine Prozedur enthalten ist, muss ein lokales Oder UUID-Attribut angegeben werden.
/* IDL file #1 */
[
local
]
interface local_procs
{
void MyLocalProc(void);
}
/* IDL file #2 */
[
object,
uuid(12345678-1234-1234-123456789ABC),
local
]
interface local_object_procs : IUnknown
{
void MyLocalObjectProc(void);
}
/* IDL file #3 */
[
uuid(87654321-1234-1234-123456789ABC)
]
interface mixed_procs
{
[local] void MyLocalProc(void);
HRESULT MyRemoteProc([in] short sParam);
}