atributo local
O atributo [local] especifica ao compilador MIDL que uma interface ou função não é 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 outros atributos que se aplicam à interface como um todo. Os atributos [ponto de extremidade], [versão], e [pointer_default] são opcionais. Ao compilar com a opção /app_config , [implicit_handle] ou [auto_handle] também podem estar presentes. Separe vários atributos com vírgulas.
-
interface-name
-
Especifica o nome pelo qual os componentes de software podem delinear a interface.
-
string-uuid
-
Especifica uma cadeia de caracteres UUID gerada pelo utilitário Uuidgen. Se você não estiver usando a opção /osf do compilador MIDL, poderá colocar a cadeia de caracteres UUID entre aspas.
-
function-attribute-list
-
Especifica zero ou mais atributos que se aplicam à função. Os atributos de função válidos são [retorno de chamada]; o atributo de ponteiro [ref], [unique]ou [ptr]; e os atributos de uso [string], [ignore], e [context_handle]. Separe vários atributos com vírgulas.
-
function-declarator
-
Especifica o especificador de tipo, o nome da função e a lista de parâmetros para a função.
O atributo [local] pode ser aplicado a funções individuais ou à interface como um todo.
Quando usado no cabeçalho da interface, o atributo [local] permite que você use o compilador MIDL como um gerador de cabeçalho. O compilador não gera stubs para nenhuma função e não garante que o cabeçalho possa ser transmitido.
Para uma interface RPC, o atributo [local] não pode ser usado ao mesmo tempo que o atributo [uuid] . [uuid] ou [local] deve estar presente no cabeçalho da interface e o escolhido deve ocorrer exatamente uma vez.
Para uma interface COM (identificada pelo atributo de interface [object] ), a lista de atributos de interface pode incluir o atributo [local] mesmo que o atributo [uuid] esteja presente.
Quando usado em uma função individual, o atributo [local] designa um procedimento local para o qual nenhum stub é gerado. Usar [local] como um atributo de função é uma extensão da Microsoft para IDL de DCE. Portanto, esse atributo não está disponível quando você compila usando a opção MIDL /osf .
Observe que uma interface sem atributos pode ser importada para um arquivo IDL base. No entanto, a interface deve conter apenas tipos de dados sem procedimentos. Se até mesmo um procedimento estiver contido na interface, um atributo local ou UUID deverá ser especificado.
/* 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);
}