Vyhněte se polymorfismu

Nové datové typy zahrnují dva polymorfní typy, INT_PTR a LONG_PTR. V 32bitovém systému Windows se INT_PTR mapuje na int a LONG_PTR mapuje na long. V 64bitovém systému Windows se oba typy mapuje na vnitřní typ __int64. Kompilátor MIDL podporuje tyto typy pro vzdálená volání procedur, ale při jejich použití v distribuovaném prostředí je nutné mít na paměti vlastní omezení. Nezapomeňte svůj kód odpovídajícím způsobem okomentovat.

Bez ohledu na velikost platformy je velikost drátu těchto polymorfních typů vždy 32 bitů. Při zrušení ohraničení v 64bitovém systému Windows rozšiřuje znaménko knihovny za běhu podepsané hodnoty a přiřadí nula k bajtům s vysokým pořadím pro nepodepsanou hodnotu. Při přenosu 64bitové hodnoty po síti běhové prostředí zkracuje bajty s vysokým pořadím. Proto je možné použít pouze 32bitové hodnoty s nízkým pořadím.

Polymorfní typy používejte pouze v případě potřeby pro přenos. Pro nová rozhraní použijte vnitřní celočíselné typy MIDL __int32 a __int64nebo použijte typ ukazatele nebo kontextový popisovač, podle toho, co je nejvhodnější pro typ přenášených dat.

64-bitový kompilátor podporuje novou polymorfní intrinsic funkci __int3264. Tento typ byl opět vyvinut, aby podporoval snahu o portování, a to transparentně na podporu typů UINT_PTR. (Jiný vnitřní __long3264, bude podporovat typ ULONG_PTR.) Nepoužívejte __int3264 přímo; pokud potřebujete polymorfní typ kvůli přenositelnosti, použijte typ INT_PTR.