dirección de desplazamiento portátil parámetro en IDL
Pregunta
Estoy portar un viejo servidor COM de 32 bits a la arquitectura de 64 bits.
Muchas funciones tiene amortiguar direcciones y compensaciones como parámetros, como __int3264 y __int3264 punteros. El problema es que este tipo no se genera automáticamente como __int64 en x64 desde las interfaces se heredan-IDispatch y __int3264 no es compatible con las interfaces de automatización!
Para las funciones que esperan direcciones que reemplazará __int3264 * a void *.
parámetros de desplazamiento se pusieron como __int3264 y LONG (tanto de 32 bits en la automatización + x64). No puedo usar hiper (asignada como __int64), ya que se romperá en sistemas de 32 bits.
¿Debo usar void * para todos los parámetros de desplazamiento / de dirección o hay otra manera de puerto a los 64 COM servidor?
Solución
void * sólo se permite en las interfaces [locales] -. No se puede marshalled (no hay manera de saber el tamaño o la semántica de un puntero void)
Si desea un tipo polimórfico, el uso __int3264. Tienes razón que no se puede utilizar con la automatización debido a la automatización no es compatible con los tipos polimórficos.
¿Por qué no utilizar un __int64 y poner el valor de 32 bits en el valor __int64?