WOW64 Uygulama Ayrıntıları

WOW64 öykünücüsü kullanıcı modunda çalışır. Ntdll.dll 32 bit sürümü ile işlemci çekirdeği arasında bir arabirim sağlar ve çekirdek çağrılarını durdurur. WOW64 öykünücüsü aşağıdaki DLL'lerden oluşur:

  • Wow64.dll, Ntoskrnl.exe giriş noktası işlevleri için temel öykünme altyapısını ve thunk'ları sağlar.
  • Wow64Win.dll, Win32k.sys giriş noktası işlevleri için thunk'lar sağlar.
  • (yalnızca x64) Wow64Cpu.dll x64 üzerinde x86 programları çalıştırma desteği sağlar.
  • (Yalnızca Intel Itanium) IA32Exec.bin x86 yazılım öykünücüsü içerir.
  • (Yalnızca Intel Itanium) Wowia32x.dll, IA32Exec.bin ile WOW64 arasındaki arabirimi sağlar.
  • (yalnızca ARM64) xtajit.dll x86 yazılım öykünücüsü içerir.
  • (yalnızca ARM64) wowarmw.dll ARM64'te ARM32 programları çalıştırma desteği sağlar.

64 bit Ntdll.dllsürümüyle birlikte bu DLL'ler, 32 bit işleme yüklenebilen tek 64 bit ikili dosyalardır. ARM üzerinde Windows 10'da, CHPE (Derlenmiş Karma Taşınabilir Yürütülebilir Dosya) ikili dosyaları da x86 32 bit işleme yüklenebilir.

Başlangıçta, Wow64.dll Ntdll.dll x86 sürümünü (veya etkinleştirildiyse CHPE sürümünü) yükler ve gerekli tüm 32 bit DLL'leri yükleyen başlatma kodunu çalıştırır. Neredeyse tüm 32 bit DLL'ler 32 bit Windows ikili dosyalarının değiştirilmemiş kopyalarıdır, ancak bazıları performans nedeniyle CHPE olarak yüklenir. Bu DLL'lerin bazıları WOW64'te 32 bit Windows'ta olduğundan farklı davranacak şekilde yazılır, çünkü genellikle belleği 64 bit sistem bileşenleriyle paylaşırlar. 32 bit sınırının üzerindeki tüm kullanıcı modu adres alanı sistem tarafından ayrılır. Daha fazla bilgi için bkz. WOW64 altında performans ve bellek tüketimi.

x86 sistem hizmeti çağrı sırasını kullanmak yerine, sistem çağrıları yapan 32 bit ikili dosyalar özel bir çağrı dizisi kullanmak üzere yeniden oluşturulur. Tamamen kullanıcı modunda kaldığından, wow64'in araya girmeleri için bu çağrı dizisi ucuzdur. Özel çağrı dizisi algılandığında, WOW64 CPU yerel 64 bit moduna geri döner ve Wow64.dlliçine çağrır. Kullanıcı modundan çıkarma, 64 bit çekirdek üzerindeki etkiyi azaltmak ve çekirdek modu kilitlenmesine, veri bozulmasına veya bir güvenlik deliğine neden olabilecek thunk hata riskini azaltmak için yapılır. Thunks, 32 bit yığınından bağımsız değişkenleri ayıklar, 64 bit'e genişletir ve ardından yerel sistem çağrısını yapar.

Ortam Değişkenleri

64 bit işlem tarafından 32 bit işlem oluşturulduğunda veya 32 bit işlem tarafından 64 bit işlem oluşturulduğunda, WOW64 aşağıdaki tabloda gösterildiği gibi oluşturulan işlem için ortam değişkenlerini ayarlar.

İşlem Ortam değişkenleri
64 bit işlem
PROCESSOR_ARCHITECTURE=AMD64 veya PROCESSOR_ARCHITECTURE=IA64 veya PROCESSOR_ARCHITECTURE=ARM64
ProgramFiles=%ProgramFiles%
ProgramW6432=%ProgramFiles%
CommonProgramFiles=%CommonProgramFiles%
CommonProgramW6432=%CommonProgramFiles%
Windows Server 2008, Windows Vista, Windows Server 2003 ve Windows XP: Windows 7 ve Windows Server 2008 R2'den başlayarak ProgramW6432 ve CommonProgramW6432 ortam değişkenleri eklenmiştir.
32 bit işlem
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=%PROCESSOR_ARCHITECTURE%
ProgramFiles=%ProgramFiles(x86)%
ProgramW6432=%ProgramFiles%
CommonProgramFiles=%CommonProgramFiles(x86)%
CommonProgramW6432=%CommonProgramFiles%

Genel Kancalar

SetWindowsHookExişlevi, aşağıdaki koşullar karşılanırsa başka bir işleme DLL eklemek için kullanılabilir:

  • 32 bit DLL yalnızca 32 bit bir işleme eklenebilir ve 64 bit DLL yalnızca 64 bit işleme eklenebilir. 64 bitlik bir işleme 32 bit DLL eklemek veya tam tersi mümkün değildir.
  • 32 bit ve 64 bit DLL'ler farklı adlara sahip olmalıdır.
  • DLL'nin mimarileri ve işlem eşleşmelidir. Örneğin, 32 bit arm işlemine 32 bit x86 DLL ekleyemezsiniz.

Daha fazla bilgi için bkz. SetWindowsHookEx.

WH_MOUSE, WH_KEYBOARD, WH_JOURNAL*, WH_SHELLve alt düzey kancaların kancayı işleyen iş parçacığı yerine kancayı yükleyen iş parçacığında çağrılabileceğini unutmayın. Bu kancalar için, kanca zincirindeki 64 bitlik bir kancanın önünde 32 bit kanca varsa hem 32 bit hem de 64 bit kancalar çağrılabilir. Daha fazla bilgi için bkz. Kancaları Kullanma.