다음을 통해 공유


추상 데이터 모델

모든 애플리케이션과 모든 운영 체제에는 추상 데이터 모델이 있습니다. 많은 애플리케이션이 이 데이터 모델을 명시적으로 노출하지 않지만 모델은 애플리케이션의 코드가 기록되는 방식을 안내합니다. 32비트 프로그래밍 모델(ILP32 모델이라고 함)에서 정수, long 및 포인터 데이터 형식은 길이가 32비트입니다. 대부분의 개발자는 이 모델을 실현하지 않고 사용했습니다. Win32 API의 기록에 대해 이는 반드시 안전하지는 않지만 유효한 가정이었습니다.

64비트 Windows에서는 데이터 형식 크기의 패리티 가정이 잘못되었습니다. 모든 데이터 형식을 64비트 길이로 만들면 대부분의 애플리케이션에서 크기가 증가할 필요가 없으므로 공간이 낭비됩니다. 그러나 애플리케이션에는 64비트 데이터에 대한 포인터가 필요하며 선택한 경우 64비트 데이터 형식을 가질 수 있는 기능이 필요합니다. 이러한 고려 사항으로 인해 LLP64(또는 P64)라는 추상 데이터 모델이 선택되었습니다. LLP64 데이터 모델에서는 포인터만 64비트로 확장됩니다. 다른 모든 기본 데이터 형식(정수 및 길이)은 32비트 길이로 유지됩니다.

처음에는 64비트 Windows에서 실행되는 대부분의 애플리케이션이 32비트 Windows에서 이식됩니다. 32비트 및 64비트 Windows 모두에서 신중하게 작성된 동일한 원본을 실행하는 것이 목표입니다. 데이터 모델을 정의해도 이 작업이 더 쉬워지지는 않습니다. 그러나 데이터 모델이 포인터 데이터 형식에만 영향을 주도록 하는 것이 첫 번째 단계입니다. 두 번째 단계는 개발자가 포인터 관련 데이터의 크기를 자동으로 조정할 수 있는 새 데이터 형식 집합을 정의하는 것입니다. 이렇게 하면 포인터 크기가 32비트에서 64비트로 변경될 때 포인터와 연결된 데이터가 크기를 변경할 수 있습니다. 기본 데이터 형식의 길이는 32비트이므로 디스크의 데이터 크기, 네트워크를 통해 공유되는 데이터 또는 메모리 매핑된 파일을 통해 공유되는 데이터는 변경되지 않습니다. 이렇게 하면 개발자가 32비트 코드를 64비트 Windows로 이식하는 데 많은 노력을 기울일 수 있습니다.

이러한 새 데이터 형식이 Windows API 헤더 파일에 추가되었습니다. 따라서 이제 새 형식을 사용할 수 있습니다. 자세한 내용은 새 데이터 형식을 참조하세요.