Lokales Attribut
Das [ lokale ] Attribut gibt dem 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 ;
Parameter
-
interface-attribute-list
-
Gibt andere Attribute an, die für die gesamte Schnittstelle gelten. Die [ Standardwerte für den Endpunkt,die ] [ Versionund ] den [ Zeiger _ ] sind optional. Wenn Sie mit dem _ /app-Konfigurationsschalter kompilieren, kann auch ein [ implizites _ Handle ] oder ein [ _ automatisches Handle vorhanden ] sein. Trennen Sie mehrere Attribute durch Kommas.
-
Schnittstellenname
-
Gibt den Namen an, nach dem Softwarekomponenten die Schnittstelle abgrenzen können.
-
string-uuid
-
Gibt eine vom Hilfsprogramm Uuidgen generierte UUID-Zeichenfolge an. Wenn Sie den MIDL-Compilerschalter /osfnicht 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ückrufe; ] das Zeigerattribut [ ref, ] [ eindeutigoder ] [ ptr; und die ] Verwendungsattribute [ Zeichenfolge, ] [ ignorierenund ] [ _ Kontexthandle ] . Trennen Sie mehrere Attribute durch Kommas.
-
Funktionsdeklarator
-
Gibt den Typspezifizierer, den Funktionsnamen und die Parameterliste für die Funktion an.
Bemerkungen
Das [ lokale ] Attribut kann auf einzelne Funktionen oder die Schnittstelle als Ganzes angewendet werden.
Bei Verwendung im Schnittstellenheader ermöglicht ihnen das [ lokale ] Attribut die Verwendung des MIDL-Compilers als Headergenerator. Der Compiler generiert keine Stubs für Funktionen und stellt nicht sicher, dass der Header übertragen werden kann.
Bei einer RPC-Schnittstelle kann das [ ] lokale Attribut nicht gleichzeitig mit dem [ uuid-Attribut verwendet ] werden. Entweder [ uuid ] oder [ local ] muss im Schnittstellenheader vorhanden sein, und der von Ihnen gewählten muss genau einmal auftreten.
Für eine COM-Schnittstelle (identifiziert durch das [ ] Objektschnittstellenattribut) kann die Schnittstellenattributliste das [ lokale ] Attribut enthalten, obwohl das [ uuid-Attribut ] vorhanden ist.
Bei Verwendung in einer einzelnen Funktion bestimmt das [ lokale ] Attribut eine lokale Prozedur, für die keine Stubs generiert werden. Die Verwendung von [ local ] als Funktionsattribut ist eine Microsoft-Erweiterung für DCE IDL. Daher ist dieses Attribut nicht verfügbar, wenn Sie mit dem MIDL-Schalter /osf 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 selbst eine Prozedur in der Schnittstelle enthalten ist, muss ein lokales attribut oder ein UUID-Attribut angegeben werden.
Beispiele
/* 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);
}