local (attributo)
L'attributo [local] specifica al compilatore MIDL che un'interfaccia o una funzione non è remota.
[
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
-
Specifica altri attributi che si applicano all'interfaccia nel suo complesso. Gli attributi [endpoint], [versione]e [pointer_default] sono facoltativi. Quando si compila con l'opzione /app_config , [implicit_handle] o [auto_handle] può essere presente anche. Separare più attributi con virgole.
-
nome dell'interfaccia
-
Specifica il nome in base al quale i componenti software possono delineare l'interfaccia.
-
string-uuid
-
Specifica una stringa UUID generata dall'utilità Uuidgen. Se non si usa l'opzione del compilatore MIDL /osf, è possibile racchiudere la stringa UUID nelle virgolette.
-
function-attribute-list
-
Specifica zero o più attributi che si applicano alla funzione. Gli attributi di funzione validi sono [callback]; attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [string], [ignore]e [context_handle]. Separare più attributi con virgole.
-
function-declarator
-
Specifica l'identificatore di tipo, il nome della funzione e l'elenco dei parametri per la funzione.
L'attributo [local] può essere applicato a singole funzioni o all'interfaccia nel suo complesso.
Se usato nell'intestazione dell'interfaccia, l'attributo [local] consente di usare il compilatore MIDL come generatore di intestazioni. Il compilatore non genera stub per le funzioni e non garantisce che l'intestazione possa essere trasmessa.
Per un'interfaccia RPC, l'attributo [local] non può essere usato contemporaneamente all'attributo [uuid]. [uuid] o [local] deve essere presente nell'intestazione dell'interfaccia e quella scelta deve verificarsi esattamente una volta.
Per un'interfaccia COM (identificata dall'attributo dell'interfaccia [object] ), l'elenco di attributi dell'interfaccia può includere l'attributo [local] anche se l'attributo [uuid] è presente.
Se usato in una singola funzione, l'attributo [local] designa una procedura locale per cui non vengono generati stub. L'uso di [local] come attributo di funzione è un'estensione Microsoft per DCE IDL. Pertanto questo attributo non è disponibile quando si compila usando l'opzione MIDL /osf .
Si noti che un'interfaccia senza attributi può essere importata in un file IDL di base. Tuttavia, l'interfaccia deve contenere solo tipi di dati senza procedure. Se anche una procedura è contenuta nell'interfaccia, è necessario specificare un attributo UUID locale o UUID.
/* 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);
}