The IDL File
Il file IDL è costituito da una o più definizioni di interfaccia, ognuna delle quali ha un'intestazione e un corpo. L'intestazione contiene informazioni applicabili all'intera interfaccia, ad esempio l'UUID. Queste informazioni sono racchiuse tra parentesi quadre e sono seguite dall'interfaccia della parola chiave e dal nome dell'interfaccia. Il corpo contiene definizioni dei tipi di dati di tipo C e prototipi di funzione, incrementati con attributi che descrivono come i dati vengono trasmessi in rete.
In questo esempio, l'intestazione dell'interfaccia contiene solo l'UUID e il numero di versione. Il numero di versione garantisce che, quando sono presenti più versioni di un'interfaccia RPC, verranno connesse solo le versioni compatibili del client e del server.
Il corpo dell'interfaccia contiene il prototipo della funzione per HelloProc. In questo prototipo il parametro della funzione pszString ha gli attributi [in] e [string]. L'attributo [in] indica alla libreria di runtime che il parametro viene passato solo dal client al server. L'attributo [string] specifica che lo stub deve trattare il parametro come stringa di caratteri in stile C.
L'applicazione client deve essere in grado di arrestare l'applicazione server, quindi l'interfaccia contiene un prototipo per un'altra funzione remota, Shutdown , che verrà implementata più avanti in questa esercitazione.
//file hello.idl
[
uuid(7a98c250-6808-11cf-b73b-00aa00b677a7),
version(1.0)
]
interface hello
{
void HelloProc([in, string] unsigned char * pszString);
void Shutdown(void);
}