Pregunta

Estoy intentando convertir un proyecto MSVC de VS 2005 a VS 2008. Contiene un archivo IDL que genera un encabezado y apéndices utilizados para RPC. El proyecto VS 2005 utiliza MIDL.exe versión 6.00.0366. El proyecto VS 2008 utiliza MIDL.exe versión 7.00.0500.

Aquí está el problema: MIDL v6 genera el siguiente prototipo para que lo implemente en el código de mi servidor:

HRESULT PRC_Function(UINT input);

MIDL v7 con la misma línea de comando genera este prototipo:

HRESULT RPC_Function(handle_t IDL_handle, UINT input);

No quiero tener que pasar y agregar el parámetro handle_t a todas mis implementaciones existentes. (Además, todavía necesito las implementaciones para compilar con VS 2005 durante un tiempo más largo).

Pregunta: ¿Cómo puedo hacer que MIDL.exe v7 muestre los mismos prototipos de servidor RPC que v6?

¿Fue útil?

Solución

Parece que puedo responder mi propia pregunta ...

MIDL v6 parece predeterminar automáticamente el tipo de identificador en auto_handle para los prototipos del servidor. MIDL v7 no lo hace, por lo que la solución es usar un archivo Server.acl con la configuración de auto_handle. Esto genera un archivo Server.h con prototipos de función que es igual entre MIDL v6 y v7.

Sin embargo, también genera una advertencia que indica que " auto_handle " ha sido depreciado En su lugar, utilicé implicit_handle (handle_t IDL_handle).

Lástima que este sitio no me da insignias para responder mis propias preguntas. Tampoco puedo marcar mi propia respuesta como la respuesta correcta.

Otros consejos

El handle_t IDL_handle es para el manejador de enlace RPC explícito. En el lado del servidor, puede hacer cosas interesantes con él, como extraer el token del cliente que llama para suplantarlo a través de las diversas funciones de RPC, pero si no necesita usarlo, está bien establecerlo como un parámetro sin referencia (UNREFERENCED_PARAMETER (IDL_handle);). Parece que los controladores de enlace implícitos están en desuso ahora.

En el lado del cliente, utiliza el controlador de enlace que obtiene cuando se vincula al servidor RPC para el parámetro IDL_handle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top