문제

MSVC 프로젝트를 VS 2005에서 2008 년으로 변환하기 위해 기소하고 있습니다. RPC에 사용되는 헤더와 스터브를 출력하는 IDL 파일이 포함되어 있습니다. VS 2005 프로젝트는 midl.exe 버전 6.00.0366을 사용합니다. VS 2008 프로젝트는 midl.exe 버전 7.00.0500을 사용합니다.

문제는 다음과 같습니다. Midl V6은 서버 코드에서 구현할 수있는 다음 프로토 타입을 출력합니다.

HRESULT PRC_Function(UINT input);

동일한 명령 줄이있는 Midl V7 은이 프로토 타입을 출력합니다.

HRESULT RPC_Function(handle_t IDL_handle, UINT input);

기존의 모든 구현에 핸들 _t 매개 변수를 추가하고 싶지 않습니다. (또한 VS 2005와 시간을 더 오래 컴파일하려면 구현이 여전히 필요합니다.)

질문 : midl.exe v7을 v6과 동일한 RPC 서버 프로토 타입을 출력하도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

내 자신의 질문에 대답 할 수있는 것 같습니다 ...

MIDL V6은 서버 프로토 타입의 핸들 유형을 자동으로 기본값으로 표시하는 것으로 보입니다. Midl V7은 그렇지 않으므로 솔루션은 Auto_handle 설정이있는 Server.acl 파일을 사용하는 것입니다. 이것은 midl v6과 v7 사이에 동일한 함수 프로토 타입으로 Server.h 파일을 출력합니다.

그러나 "Auto_handle"이 감가 상각되었음을 나타내는 경고도 출력합니다. 대신 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