次の方法で共有


スタブ ファイルの生成

クライアント/サーバー インターフェイスを定義した後、通常はクライアントとサーバーのソース ファイルを開発します。 次に、1 つのメイクファイルを使用してスタブ ファイルとヘッダー ファイルを生成します。 クライアント アプリケーションとサーバー アプリケーションをコンパイルしてリンクします。 ただし、これが分散コンピューティング環境に対する初めての露出である場合は、MIDL コンパイラを今すぐ呼び出して、続行する前に MIDL によって生成される内容を確認できます。 プラットフォーム ソフトウェア開発キット (SDK) をインストールすると、MIDL コンパイラ (Midl.exe) が自動的にインストールされます。

これらのファイルをコンパイルするときは、Hello.idl と Hello.acf が同じディレクトリにあることを確認します。 次のコマンドを実行すると、ヘッダー ファイル Hello.h と、クライアントとサーバーのスタブ (Hello_c.c と Hello_s.c) が生成されます。

midl hello.idl

Hello.h には、HelloProc と Shutdown の関数プロトタイプと、 midl_user_allocatemidl_user_freeの 2 つのメモリ管理機能の前方宣言が含まれていることに注意してください。 これら 2 つの関数は、サーバー アプリケーションで提供します。 ([out] パラメーターを使用して) サーバーからクライアントにデータが送信されている場合は、クライアント アプリケーションでこれら 2 つのメモリ管理機能も提供する必要があります。

グローバル ハンドル変数、hello_IfHandle、およびクライアントおよびサーバー インターフェイスのハンドル名、hello_v1_0_c_ifspec、およびhello_v1_0_s_ifspecの定義に注意してください。 クライアント アプリケーションとサーバー アプリケーションは、実行時呼び出しでインターフェイス ハンドル名を使用します。

この時点で、スタブ ファイル Hello_c.c と 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