共用方式為


Arm64X PE 檔案

Arm64X 是一種新型的二進位檔,可以同時包含傳統 Arm64 程式 代碼和 Arm64EC 程式代碼 。 這種雙重相容性使 Arm64X 適用於 Arm 裝置上的 Windows 上的傳統 Arm64 和 Arm64EC 進程。 它特別適合兩個 ABI 都使用的中間件或插件。

Arm64X 二進位檔在 Windows 11 SDK 中引入,是一種可移植可執行檔 (PE) 文件,適用於 Arm 上的 Windows 11 和 Arm 上的 Windows 10。 若要建置 Arm64X 二進位檔,請參閱 建置 Arm64X 二進位檔

Arm64X 二進位檔如何運作?

基本上,Arm64X 二進位檔包含會位於個別 x64/Arm64EC 和 Arm64 二進位檔中的所有內容,但會將它們合併成磁碟上一個更有效率的檔案。 構建的 Arm64X 二進製文件有兩組代碼、入口點和其他元素,同時消除了冗餘部分以節省磁盤空間。

當應用程式載入 Arm64X 二進位檔時,作業系統會根據進程的架構套用轉換來公開正確的區段。 您可以將 Arm64X 二進位檔案視為舊的 3D 影像,透過一副 3D 眼鏡上的紅色或藍色鏡片查看紅色和藍色影像。 x64 應用程式會將 DLL 視為 x64 DLL,而 Arm64 應用程式會看到與 Arm64 DLL 相同的 DLL。

Arm64X 變形圖顯示帶有紅色和藍色鏡片的 3D 眼鏡

透明的作業系統轉換可讓 x64 和 Arm64 應用程式載入相同的 Arm64X 二進位檔,而不知道它也包含其他架構的程式代碼。 出於這個原因,人們將 Arm64X 二進位文件暱稱為“變色龍”,因為它們呈現出周圍環境的“顏色”。

根據預設,Arm64X 二進位檔似乎是 Arm64 二進位檔。 此預設設定可讓在 Arm 上執行 Windows 10 的系統,無法辨識 Arm64X 格式或知道如何套用轉換,成功將 Arm64X 二進位檔載入 Arm64 進程。

作業系統如何使用 Arm64X 二進位檔?

Arm 上的 Windows 11 引入了在 Arm64 上運行 x64 應用程式的功能。 但是,與包含資料夾的 SysWoW64不同,沒有純 x64 作業系統二進位檔的單獨資料夾。 使用 Arm 上的 Windows 11,x64 應用程式和 Arm64 應用程式都可以透過System32中的二進位檔載入並呼叫 API。 這種彈性之所以可能,是因為開發人員會將應用程式可能需要載入的任何二進位檔重新編譯為 Arm64X 二進位檔。

x64 和 Arm64 應用程式都可以載入 System32 的二進位檔案並與之互動,無需像 x86 需要所有系統二進位檔案的單獨複本,例如 SysWoW64

System32 資料夾中的 x64 和 Arm64 相容二進位檔

Arm64X 可與中介軟體或外掛程式搭配使用

Arm64X 二進位檔的核心功能是讓磁碟上的一個檔案同時支援 x64/Arm64EC 和 Arm64 進程。 大部分的應用程式開發人員都會著重於將應用程式建置為 Arm64EC 或 Arm64,而不是兩者,因此您可能不需要 Arm64X。

不過, 中介軟體外掛程式 的開發人員應該考慮 Arm64X,因為這類程式代碼可以載入 x64 或 Arm64 進程。

您可以在不使用 Arm64X 的情況下同時支援 x64 和 Arm64 進程,但您可能會發現讓作業系統處理將二進位檔的正確架構載入指定的 64 位進程會比較容易。

支援應用程式個別二進位檔的三種方法、Arm64x 二進位檔、結合 x64/Arm64EC 與 Arm64 二進位檔的 Arm64X 純轉寄器

在 Arm 上的 Windows 11 上支援這兩種架構的三種概念性方法包括:

  • 個別的二進位檔:由於目前的標準做法在支援多個架構時會使用個別的二進位檔,您可能會發現建置和傳送個別的 x64 和 Arm64 二進位檔更適合您的解決方案。 您可以使用現有的機制來確保正確的二進位載入到相關聯的架構處理程序中。

  • Arm64X 二進位檔:您可以建置 Arm64X 二進位檔,其中包含一個二進位檔中的所有 x64/Arm64EC 和 Arm64 程式代碼。

  • Arm64X 純轉寄器:如果您需要 Arm64X 的彈性,但想要避免將所有應用程式程式代碼放入 Arm64X 二進位檔中,您可以使用純轉寄器方法。 沒有程式碼的小型 Arm64X 二進位檔會將載入器重新導向至 DLL 的正確架構。

需要 Arm64X 的範例案例

在某些情況下,需要使用 Arm64X 二進位檔來支援 x64 和 Arm64 應用程式。 這些情況包括:

  • x64 和 Arm64 應用程式都會呼叫的 64 位 COM 伺服器
  • 載入 x64 或 Arm64 應用程式的外掛程式
  • 插入 x64 或 Arm64 進程的單一二進位檔

在每種情況下,您可以使用 Arm64X 二進位檔或 Arm64X 純轉寄器,讓一個二進位檔支援這兩個架構。

如需建置 Arm64X 二進位檔的詳細資訊,請參閱 建置 Arm64X 二進位檔