ポリモーフィズムの回避
新しいデータ型には、 INT_PTRとLONG_PTR の 2 つのポリモーフィック型が 含まれます。 32 ビット Windows では、 INT_PTR は int にマップされ、 LONG_PTR は long にマップされます。 64 ビット Windows では、両方の型が __int64 組み込み型にマップされます。 MIDL コンパイラは、リモート プロシージャ 呼び出しに対してこれらの型をサポートしていますが、分散環境で使用する場合は注意する必要がある固有の制限があります。 必要に応じてコードにコメントを付けます。
プラットフォームサイズに関係なく、これらのポリモーフィックタイプのワイヤサイズは常に32ビットです。 64 ビット Windows でマーシャリングを解除すると、ランタイム ライブラリの符号は符号付き値を拡張し、符号なし値の上位バイトに 0 を割り当てます。 ワイヤに 64 ビット値を設定すると、実行時に高次バイトが切り捨てられます。 したがって、下位の 32 ビット値のみが使用できます。
移植に必要な場合にのみ、ポリモーフィック型を使用します。 新しいインターフェイスの場合は、 __int32 および __int64 MIDL 組み込み整数型を使用するか、転送されるデータの種類に最も適したポインター型またはコンテキスト ハンドルを使用します。
64 ビット コンパイラは、新しいポリモーフィックな組み込み __int3264をサポートしています。 ここでも、この型は移植作業をサポートするために開発されました。この場合は、 UINT_PTR 型を透過的にサポートします。 (もう 1 つの組み込み __long3264では、 ULONG_PTR 型がサポートされます)。 __int3264 を直接使用しないでください。移植の理由からポリモーフィック型が必要な場合は、 INT_PTR 型を使用します。