O arquivo IDL
O arquivo IDL consiste em uma ou mais definições de interface, cada uma com um cabeçalho e um corpo. O cabeçalho contém informações que se aplicam a toda a interface, como a UUID. Essas informações são colocadas entre colchetes e seguidas pela interface palavra-chave e pelo nome da interface. O corpo contém definições de tipo de dados de estilo C e protótipos de função, aumentados com atributos que descrevem como os dados são transmitidos pela rede.
Neste exemplo, o cabeçalho da interface contém apenas o UUID e o número de versão. O número de versão garante que, quando houver várias versões de uma interface RPC, somente as versões compatíveis do cliente e do servidor serão conectadas.
O corpo da interface contém o protótipo de função para HelloProc. Nesse protótipo, o parâmetro de função pszString tem os atributos [in] e [string]. O atributo [in] informa à biblioteca em tempo de execução que o parâmetro é passado somente do cliente para o servidor. O atributo [string] especifica que o stub deve tratar o parâmetro como uma cadeia de caracteres de estilo C.
O aplicativo cliente deve ser capaz de desligar o aplicativo de servidor, portanto, a interface contém um protótipo para outra função remota, Shutdown , que será implementada posteriormente neste tutorial.
//file hello.idl
[
uuid(7a98c250-6808-11cf-b73b-00aa00b677a7),
version(1.0)
]
interface hello
{
void HelloProc([in, string] unsigned char * pszString);
void Shutdown(void);
}