다형성 방지

새 데이터 형식에는 INT_PTR 및 LONG_PTR 두 가지 다형 형식 포함되었습니다. 32비트 Windows에서 INT_PTRint 에 매핑되고 LONG_PTRlong에 매핑됩니다. 64비트 Windows에서는 두 형식이 모두 __int64 내장 형식에 매핑됩니다. MIDL 컴파일러는 원격 프로시저 호출에 대해 이러한 형식을 지원하지만 분산 환경에서 사용할 때 유의해야 하는 내재된 제한 사항이 있습니다. 그에 따라 코드를 주석으로 처리해야 합니다.

플랫폼 크기에 관계없이 이러한 다형 형식의 와이어 크기는 항상 32비트입니다. 64비트 Windows에서 경계를 해제하는 경우 런타임 라이브러리 기호는 부호 있는 값을 확장하고 부호 없는 값에 대해 상위 바이트에 0을 할당합니다. 64비트 값을 와이어에 배치하면 런타임에 높은 바이트가 잘립니다. 따라서 낮은 순서의 32비트 값만 사용할 수 있습니다.

포팅에 필요한 경우에만 다형 형식을 사용합니다. 새 인터페이스의 경우 __int32 및 __int64 MIDL 내장 정수 형식을 사용하거나 전송되는 데이터의 종류에 가장 적합한 포인터 형식 또는 컨텍스트 핸들을 사용합니다.

64비트 컴파일러는 새로운 다형 내장 __int3264 지원합니다. 다시 말하지만, 이 형식은 포팅 작업을 지원하기 위해 개발되었으며, 이 경우 UINT_PTR 형식을 투명하게 지원합니다. (다른 내장 함수 인 __long3264ULONG_PTR 형식을 지원합니다.) __int3264 직접 사용하지 마세요. 포팅을 위해 다형 형식이 필요한 경우 INT_PTR 형식을 사용합니다.