Menghasilkan Berkas Stub
Setelah menentukan antarmuka klien/server, Anda biasanya mengembangkan file sumber klien dan server Anda. Selanjutnya gunakan satu makefile untuk menghasilkan stub dan file header. Kompilasi dan tautkan aplikasi klien dan server. Namun, jika ini adalah paparan pertama Anda ke lingkungan komputasi terdistribusi, Anda mungkin ingin memanggil kompilator MIDL sekarang untuk melihat apa yang dihasilkan MIDL sebelum Melanjutkan. Pengkompilasi MIDL (Midl.exe) secara otomatis diinstal saat Anda menginstal Kit Pengembangan Perangkat Lunak Platform (SDK).
Saat Anda mengkompilasi file-file ini, pastikan Hello.idl dan Hello.acf berada di direktori yang sama. Perintah berikut akan menghasilkan file header Hello.h, dan stub klien dan server, Hello_c.c dan Hello_s.c.
midl hello.idl
Perhatikan bahwa Hello.h berisi prototipe fungsi untuk HelloProc dan Shutdown, serta deklarasi penerusan untuk dua fungsi manajemen memori, midl_user_allocate dan midl_user_free. Anda akan menyediakan kedua fungsi ini di aplikasi server. Jika data dikirimkan dari server ke klien (dengan parameter [keluar] ), Anda juga perlu menyediakan dua fungsi manajemen memori ini di aplikasi klien.
Perhatikan definisi untuk variabel handel global, hello_IfHandle, dan nama handel antarmuka klien dan server, hello_v1_0_c_ifspec dan hello_v1_0_s_ifspec. Aplikasi klien dan server akan menggunakan nama handel antarmuka dalam panggilan run-time.
Pada titik ini, Anda tidak perlu melakukan apa pun dengan file stub Hello_c.c dan hello_s.c.
/*file: hello.h */
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 3.00.06
/* at Tue Feb 20 11:33:32 1996 */
/* Compiler settings for hello.idl:
Os, W1, Zp8, env=Win32, ms_ext, c_ext
error checks: none */
//@@MIDL_FILE_HEADING( )
#include "Rpc.h"
#include "rpcndr.h"
#ifndef __hello_h_
#define __hello_h_
#ifdef __cplusplus
extern "C"{
#endif
/* Forward Declarations */
void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * );
#ifndef __hello_INTERFACE_DEFINED__
#define __hello_INTERFACE_DEFINED__
/****************************************
* Generated header for interface: hello
* at Tue Feb 20 11:33:32 1996
* using MIDL 3.00.06
****************************************/
/* [implicit_handle][version][uuid] */
/* size is 0 */
void HelloProc(
/* [string][in] */ unsigned char __RPC_FAR *pszString);
/* size is 0 */
void Shutdown( void);
extern handle_t hello_IfHandle;
extern RPC_IF_HANDLE hello_v1_0_c_ifspec;
extern RPC_IF_HANDLE hello_v1_0_s_ifspec;
#endif /* __hello_INTERFACE_DEFINED__ */
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif