簡體   English   中英

Windows DLL 加載:將64位Dll加載到32位進程中,是否可能?

[英]Windows DLL Loading : Load A 64 Bit Dll Into a 32 bit Process, Is It Possible?

大多數人會說windows上32bit下64bit是不可能的。 但是據我所知,Wow64 通過加載 64 位 ntdll,然后加載 32 位 ntdll 來工作。 調用 64 位 dll 發出系統調用。 在此處輸入圖像描述

如 Wow64SystemServiceCall 所示,它跳轉至 _Wow64Transition。

因此,理論上是否可以加載 64 位 dll,並在兩層之間進行某種類似的轉換調用?

只是在這里問這在理論上是否可行,或者我是否在浪費時間。 先感謝您!

是和不是。 您不能將 64 位庫“加載”到 32 位進程中。 但是操作系統可以為你運行干擾:它可以將庫加載到另一個進程中,並提供一個 IPC 接口來使用它。

我在 1995 年從事過這樣的項目。當時的 Visual Basic 是 16 位的,Windows NT 3.51 是 32 位的。 我們從 32 位操作系統 VAX VMS 移植了計算引擎,並用 VB 重新創建了 GUI。 為了移動數據,Windows 提供了一個“thunking 層”。 VB調用了一個OS function,傳遞了一個function的名字和參數說明。 NT代表VB調用了32位的function,返回VB地址空間中的數據。 工作起來很有魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM