Domanda

Sono porting di un vecchio server COM a 32 bit per l'architettura a 64-bit.

Molte funzioni prendono tamponare gli indirizzi e gli offset come parametri, come __int3264 e __int3264 puntatori. Il problema è che questo tipo non viene generato automaticamente come __int64 in x64 poiché le interfacce IDispatch-ereditate, e __int3264 non è supportato con interfacce di automazione!

Per le funzioni che prevedono indirizzi sarò sostituire __int3264 * a * vuoto.

parametri Offset stati messi come __int3264 e LONG (sia a 32 bit in automazione + x64). Non posso usare iper (mappata come __int64) in quanto si romperà in sistemi a 32 bit.

Dovrei usare * vuoto per tutti i parametri di offset / indirizzo o c'è un altro modo alla porta coloro ai x64 COM server?

È stato utile?

Soluzione

* vuoto è consentito solo nelle interfacce [locali] -. Non può essere dispiegate (non c'è modo di sapere le dimensioni o la semantica di un puntatore void)

Se si desidera un tipo polimorfico, uso __int3264. Hai ragione che essa non può essere utilizzata con l'automazione, perché l'automazione non supporta i tipi polimorfici.

Perché non basta usare un __int64 e mettere il valore a 32 bit del valore __int64?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top