2010-11-12 78 views
1

我正在將舊的32位COM服務器移植到64位體系結構中。IDL中的便攜式地址偏移參數

許多函數取緩衝器地址和偏移量作爲參數,如__int3264和__int3264指針。問題是此類型不會自動生成爲x64中的__int64,因爲接口是IDispatch繼承的,並且自動接口不支持__int3264!

對於期望地址的函數,我將用__int3264 *替換void *。

偏移參數被投入作爲__int3264和LONG(在自動化+ x64的32位)。我不能使用hyper(映射爲__int64),因爲它會在32位系統中破解。

我應該用void *所有偏移/地址參數或者有另一種方式來港的到x64 COM服務器?

回答

2

無效*只允許在[本地]接口 - 它不能被編組(有沒有知道的大小或空指針的語義的方式)。

如果您想要多態類型,請使用__int3264。你說得對,它不能用於自動化,因爲自動化不支持多態類型。

爲什麼不直接使用一個__int64,把32位值在__int64值?