次の方法で共有


ポリモーフィズムの回避

新しいデータ型には、INT_PTRLONG_PTRの 2 つのポリモーフィック型が含まれます。 32ビットWindowsでは、INT_PTRint にマップされ、LONG_PTRlongにマップされます。 64 ビット Windows では、両方の型が __int64 組み込み型にマップされます。 MIDL コンパイラでは、リモート プロシージャ 呼び出しに対してこれらの型がサポートされていますが、分散環境で使用する場合に注意する必要がある固有の制限があります。 それに応じてコードにコメントを付けます。

プラットフォーム サイズに関係なく、これらのポリモーフィック型のワイヤ サイズは常に 32 ビットです。 64 ビット Windows でマーシャリングを解除すると、ランタイム ライブラリの符号は符号付き値を拡張し、符号なし値の上位バイトに 0 を割り当てます。 64 ビット値をワイヤに配置すると、実行時に上位バイトが切り捨てられます。 したがって、下位 32 ビット値のみが使用できます。

移植に必要な場合にのみ、ポリモーフィック型を使用します。 新しいインターフェイスの場合は、__int32 および __int64MIDL 組み込み整数型を使用するか、転送されるデータの種類に最も適したポインター型またはコンテキスト ハンドルを使用します。

64 ビット コンパイラは、新しいポリモーフィックな組み込み __int3264をサポートしています。 ここでも、この型は移植作業をサポートするために開発されました。この場合は、UINT_PTR 型を透過的にサポートします。 (もう 1 つの組み込み関数 __long3264では、ULONG_PTR 型がサポートされます)。__int3264 を直接使用しないでください。移植の理由からポリモーフィック型が必要な場合は、INT_PTR 型を使用します。