Freigeben über


Generieren der Stubdateien

Nachdem Sie die Client/Server-Schnittstelle definiert haben, entwickeln Sie in der Regel Ihre Client- und Serverquelldateien. Verwenden Sie als Nächstes eine einzelne Makefile, um die Stub- und Headerdateien zu generieren. Kompilieren und verknüpfen Sie die Client- und Serveranwendungen. Wenn dies jedoch Ihre erste Offenlegung für die verteilte Computingumgebung ist, sollten Sie jetzt den MIDL-Compiler aufrufen, um zu sehen, was MIDL generiert, bevor Sie fortfahren. Der MIDL-Compiler (Midl.exe) wird automatisch installiert, wenn Sie das Platform Software Development Kit (SDK) installieren.

Stellen Sie beim Kompilieren dieser Dateien sicher, dass sich Hello.idl und Hello.acf im selben Verzeichnis befinden. Mit dem folgenden Befehl werden die Headerdatei Hello.h und die Client- und Serverstubs Hello_c.c und Hello_s.c generiert.

midl hello.idl

Beachten Sie, dass Hello.h Funktionsprototypen für HelloProc und Shutdown sowie Weiterleitungsdeklarationen für zwei Speicherverwaltungsfunktionen enthält, midl_user_allocate und midl_user_free. Sie stellen diese beiden Funktionen in der Serveranwendung bereit. Wenn Daten vom Server an den Client übertragen würden (mithilfe eines [out]-Parameters), müssten Sie auch diese beiden Speicherverwaltungsfunktionen in der Clientanwendung bereitstellen.

Beachten Sie die Definitionen für die globale Handlevariable, hello_IfHandle und die Namen des Client- und Serverschnittstellenhandles, hello_v1_0_c_ifspec und hello_v1_0_s_ifspec. Die Client- und Serveranwendungen verwenden die Schnittstellenhandlenamen in Laufzeitaufrufen.

An diesem Punkt müssen Sie nichts mit den Stubdateien Hello_c.c und hello_s.c tun.

/*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