atributo local
El atributo [local] especifica al compilador MIDL que una interfaz o función no es 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
-
Especifica otros atributos que se aplican a la interfaz en su conjunto. Los atributos [endpoint], [version]y [pointer_default] son opcionales. Al compilar con el modificador /app_config, también puede estar presente [implicit_handle] o [auto_handle]. Separe varios atributos con comas.
-
interface-name
-
Especifica el nombre por el que los componentes de software pueden delinear la interfaz.
-
string-uuid
-
Especifica una cadena UUID generada por la utilidad Uuidgen. Si no usa el modificador del compilador MIDL /osf, puede incluir la cadena UUID entre comillas.
-
function-attribute-list
-
Especifica cero o más atributos que se aplican a la función. Los atributos de función válidos son [devolución de llamada]; el atributo de puntero [ref], [unique], o [ptr]; y los atributos de uso [string], [ignore]y [context_handle]. Separe varios atributos con comas.
-
function-declarator
-
Especifica el especificador de tipo, el nombre de función y la lista de parámetros de la función.
El atributo [local] se puede aplicar a funciones individuales o a la interfaz en su conjunto.
Cuando se usa en el encabezado de interfaz, el atributo [local] permite usar el compilador MIDL como generador de encabezados. El compilador no genera códigos auxiliares para ninguna función y no garantiza que el encabezado se pueda transmitir.
Para una interfaz RPC, el atributo [local] no se puede usar al mismo tiempo que el atributo [uuid]. [ uuid] o [local] deben estar presentes en el encabezado de interfaz y el que elija debe producirse exactamente una vez.
Para una interfaz COM (identificada por el atributo de interfaz [object], la lista de atributos de interfaz puede incluir el atributo [local] aunque el atributo [uuid] esté presente.
Cuando se usa en una función individual, el atributo [local] designa un procedimiento local para el que no se genera ningún código auxiliar. El uso de [local] como atributo de función es una extensión de Microsoft para DCE IDL. Por lo tanto, este atributo no está disponible cuando se compila mediante el modificador /osf MIDL.
Tenga en cuenta que una interfaz sin atributos se puede importar en un archivo IDL base. Sin embargo, la interfaz solo debe contener tipos de datos sin procedimientos. Si incluso un procedimiento está contenido en la interfaz, se debe especificar un atributo UUID o local.
/* 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);
}