Compartir a través de


Generación de los archivos de código auxiliar

Después de definir la interfaz de cliente o servidor, normalmente desarrolla los archivos de origen de cliente y servidor. A continuación, use un único archivo make para generar el código auxiliar y los archivos de encabezado. Compile y vincule las aplicaciones cliente y servidor. Sin embargo, si esta es la primera exposición al entorno informático distribuido, es posible que quiera invocar el compilador MIDL ahora para ver qué genera MIDL antes de continuar. El compilador MIDL (Midl.exe) se instala automáticamente al instalar el Kit de desarrollo de software (SDK) de plataforma.

Al compilar estos archivos, asegúrese de que Hello.idl y Hello.acf están en el mismo directorio. El siguiente comando generará el archivo de encabezado Hello.h y los códigos auxiliares de cliente y servidor, Hello_c.c y Hello_s.c.

midl hello.idl

Observe que Hello.h contiene prototipos de función para HelloProc y Shutdown, así como declaraciones de reenvío para dos funciones de administración de memoria, midl_user_allocate y midl_user_free. Proporcionará estas dos funciones en la aplicación de servidor. Si los datos se transmitieran desde el servidor al cliente (mediante un parámetro [out] ), también tendría que proporcionar estas dos funciones de administración de memoria en la aplicación cliente.

Tenga en cuenta las definiciones de la variable de identificador global, hello_IfHandle y los nombres de identificadores de interfaz de cliente y servidor, hello_v1_0_c_ifspec y hello_v1_0_s_ifspec. Las aplicaciones cliente y servidor usarán los nombres de identificador de interfaz en llamadas en tiempo de ejecución.

En este momento, no es necesario hacer nada con los archivos de código auxiliar Hello_c.c y 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