다음을 통해 공유


Arm64X PE 파일

Arm64X는 클래식 Arm64 코드와 Arm64EC 코드를 함께 포함할 수 있는 새로운 유형의 이진 파일입니다. 이 이중 호환성을 통해 Arm64X는 Windows on Arm 디바이스의 클래식 Arm64 및 Arm64EC 프로세스 모두에 적합합니다. 두 API가 모두 사용하는 미들웨어 또는 플러그 인에 특히 적합합니다.

Windows 11 SDK에 도입된 Arm64X 이진 파일은 Arm의 Windows 11과 Arm의 Windows 10 모두에서 작동하는 PE(이식 가능한 실행 파일) 파일 형식입니다. Arm64X 이진 파일을 빌드하려면 Arm64X 이진 파일 빌드를 참조하세요.

Arm64X 이진 파일은 어떻게 작동합니까?

기본적으로 Arm64X 이진 파일에는 별도의 x64/Arm64EC 및 Arm64 이진 파일에 있는 모든 콘텐츠가 포함되지만 디스크의 보다 효율적인 파일에 병합됩니다. 빌드된 Arm64X 이진 파일에는 두 개의 코드 집합, 진입점 및 기타 요소가 있지만 디스크의 공간을 절약하기 위한 중복 부분을 제거합니다.

애플리케이션이 Arm64X 이진 파일을 로드하는 경우 운영 체제는 프로세스의 아키텍처에 따라 올바른 섹션을 노출하는 변환을 적용합니다. Arm64X 이진 파일을 마치 과거의 3D 이미지처럼 생각해보세요. 3D 안경의 빨간색 또는 파란색 렌즈를 통해, 빨간색과 파란색 이미지가 함께 보이는 방식입니다. x64 앱은 DLL이 x64 DLL인 것처럼 보이지만 Arm64 앱은 Arm64 DLL과 동일한 DLL을 봅니다.

빨간색 및 파란색 렌즈가 있는 3D 안경을 보여주는 Arm64X 변환 그래픽

투명한 운영 체제 변환을 통해 x64 및 Arm64 애플리케이션 모두 다른 아키텍처에 대한 코드도 포함하고 있다는 사실을 모르고 동일한 Arm64X 이진 파일을 로드할 수 있습니다. 이러한 이유로 사람들은 Arm64X 바이너리 파일에 주변 환경의 '색상'을 취하는 '카멜레온'이라는 별명을 붙입니다.

기본적으로 Arm64X 이진 파일은 Arm64 이진 파일로 표시됩니다. 이 기본 설정을 사용하면 Arm64X 형식을 인식하지 못하거나 변환을 적용하는 방법을 모르는 Arm에서 Windows 10을 실행하는 시스템에서 Arm64X 이진 파일을 Arm64 프로세스에 성공적으로 로드할 수 있습니다.

운영 체제는 Arm64X 이진 파일을 어떻게 사용하나요?

Arm의 Windows 11에는 Arm64에서 x64 애플리케이션을 실행하는 기능이 도입되었습니다. 그러나 폴더를 포함하는 SysWoW64과 달리 순수 x64 운영 체제 이진 파일의 별도 폴더는 없습니다. Windows 11 on Arm을 사용하면 x64 애플리케이션과 Arm64 애플리케이션 모두 이진 파일을 로드하고 이진 파일을 사용하여 API를 호출할 수 있습니다 System32. 개발자가 앱에서 Arm64X 이진 파일로 로드해야 할 수 있는 System32 이진 파일을 다시 컴파일하기 때문에 이러한 유연성이 가능합니다.

x64 및 Arm64 애플리케이션은 System32에 있는 이진 파일을 로드하고 상호 작용할 수 있으며, x86용 SysWoW64처럼 모든 시스템 이진 파일의 별도 복사본이 필요하지 않습니다.

System32 폴더의 x64 및 Arm64 호환 이진 파일

미들웨어 또는 플러그 인과 함께 사용할 Arm64X

Arm64X 이진 파일의 핵심 함수는 디스크에서 하나의 파일을 사용하도록 설정하여 x64/Arm64EC 및 Arm64 프로세스를 모두 지원하는 것입니다. 대부분의 앱 개발자는 둘 다 아닌 Arm64EC 또는 Arm64로 애플리케이션을 빌드하는 데 집중하므로 Arm64X가 필요하지 않을 수 있습니다.

그러나 미들웨어 또는 플러그 인 개발자는 이러한 코드가 x64 또는 Arm64 프로세스로 로드할 수 있으므로 Arm64X를 고려해야 합니다.

Arm64X를 사용하지 않고 x64 및 Arm64 프로세스를 모두 지원할 수 있지만 운영 체제에서 이진 파일의 올바른 아키텍처를 지정된 64비트 프로세스로 로드하는 것을 더 쉽게 처리할 수 있습니다.

x64/Arm64EC와 Arm64 이진 파일을 결합한 앱 별도 이진 파일, Arm64x 이진 파일, Arm64X 순수 전달자를 지원하는 세 가지 방법

Arm의 Windows 11에서 두 아키텍처를 모두 지원하는 세 가지 개념적 방법은 다음과 같습니다.

  • 별도의 이진 파일: 오늘날 표준 사례에서는 여러 아키텍처를 지원할 때 별도의 이진 파일을 사용하므로 별도의 x64 및 Arm64 이진 파일을 빌드하고 배송하는 것이 솔루션에 더 적합할 수 있습니다. 기존 메커니즘을 사용하여 올바른 이진 파일이 연결된 아키텍처 프로세스로 로드되도록 할 수 있습니다.

  • Arm64X 이진: 모든 x64/Arm64EC 및 Arm64 코드를 하나의 이진으로 포함하는 Arm64X 이진 파일을 빌드할 수 있습니다.

  • Arm64X 순수 전달자: Arm64X의 유연성이 필요하지만 모든 앱 코드를 Arm64X 이진 파일에 넣지 않으려면 순수 전달자 접근 방식을 사용할 수 있습니다. 코드가 없는 작은 Arm64X 이진 파일은 로더를 DLL의 올바른 아키텍처로 리디렉션합니다.

Arm64X가 필요한 예제 상황

일부 상황에서는 x64 및 Arm64 앱을 모두 지원하려면 Arm64X 이진 파일을 사용해야 합니다. 이러한 상황은 다음과 같습니다.

  • x64 및 Arm64 앱이 모두 호출하는 64비트 COM 서버
  • x64 또는 Arm64 앱으로 로드되는 플러그 인
  • x64 또는 Arm64 프로세스에 삽입되는 단일 이진 파일

이러한 각 경우에서 Arm64X 바이너리 또는 Arm64X 전용 포워더를 사용하여 하나의 바이너리가 두 아키텍처를 모두 지원하도록 할 수 있습니다.

Arm64X 이진 파일 빌드에 대한 자세한 내용은 빌드 Arm64X 이진 파일을 참조하세요.