質問

MSVCプロジェクトをVS 2005からVS 2008に変換するようにしています。これには、RPCに使用されるヘッダーとスタブを出力するIDLファイルが含まれています。 VS 2005プロジェクトはMIDL.exeバージョン6.00.0366を使用します。 VS 2008プロジェクトは、MIDL.exeバージョン7.00.0500を使用します。

問題は次のとおりです。MIDLv6は、サーバーコードに実装するために次のプロトタイプを出力します。

HRESULT PRC_Function(UINT input);

MIDL v7で同じコマンドラインを使用すると、このプロトタイプが出力されます:

HRESULT RPC_Function(handle_t IDL_handle, UINT input);

既存のすべての実装にhandle_tパラメーターを追加する必要はありません。 (さらに、しばらくの間、VS 2005でコンパイルするための実装が必要です。)

質問:MIDL.exe v7でv6と同じRPCサーバープロトタイプを出力するにはどうすればよいですか?

役に立ちましたか?

解決

自分の質問に答えられるようです...

MIDL v6は、サーバープロトタイプのハンドルタイプをauto_handleに自動的にデフォルト設定するようです。 MIDL v7はサポートしていないため、解決策は、auto_handle設定を含むServer.aclファイルを使用することです。これにより、MIDL v6とv7で同じ関数プロトタイプを持つServer.hファイルが出力されます。

ただし、<!> quot; auto_handle <!> quot;を示す警告も出力します。減価償却されました。代わりにimplicit_handle(handle_t IDL_handle)を使用しました。

このサイトでは、自分の質問に答えるためのバッジが与えられません。自分の回答に正しい回答のフラグを立てることもできません。

他のヒント

handle_t IDL_handleは、明示的なRPCバインディングハンドル用です。サーバー側では、さまざまなRPC関数を介して偽装のために呼び出し側クライアントのトークンをプルするなどのクールなことを実行できますが、使用する必要がない場合は、参照されないパラメーター(UNREFERENCED_PARAMETER (IDL_handle);)。暗黙的なバインディングハンドルは廃止されたようです。

クライアント側では、IDL_handleパラメーターにRPCサーバーにバインドするときに取得するバインドハンドルを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top