Windows 64-bitine seletuskataloog on selgitatud

Sisukord:

Windows 64-bitine seletuskataloog on selgitatud
Windows 64-bitine seletuskataloog on selgitatud

Video: Windows 64-bitine seletuskataloog on selgitatud

Video: Windows 64-bitine seletuskataloog on selgitatud
Video: Troubleshooting Hard Disks - YouTube 2024, November
Anonim

Windowsi 64-bitise Windows 7 väljalaskmisega toimus Windowsi kataloogi tavaline kaustade jaotamine. Windows 7, Windows 8 ja Windows 10 64-bitise väljaande hulka kuuluvad kaks uut kaustu. Need on Süsnatiivne ja SysWOW64 kaustu. See on ainult 64-bitises Windowsis. Kui kasutate 64-bitise masina 32-bitiste Windowsi, siis te neid ei näe. Samuti ei näe neid 32-bitise Windowsi 32-bitisest masinast käivitamisel.

Windowsi kataloogis on ka teine kaust ja seda kutsutakse Programmifailid (x86). Meil on harjunud kausta Program Files, mis asuvad meie programmide käivitatavad failid. 64-bitiste süsteemide puhul salvestatakse 64-bitiste programmide programmifailide kaust, kui 32-bitised programmid asuvad programmifailides (x86). Kuid Windows kasutab 64-bitisest masinast 32-bitiste programmide käitamiseks midagi emuleerimist. Seega on vaja teada ja mõista, millised on Windowsi süsteemi kaustad (64-bitine), nii et teate, kuidas soovitud faili jõuda.

Erinevalt 32-bitisest masinast, kus 32-bitised DLL-failid on salvestatud System32 kaust, Windowsi 64-bitine versioon salvestab kaustas System32 64-bitisega seotud DLL-sid. Selle eesmärk on hõlbustada programmitöö eesmärke ja anda tagasi ühilduvust. See tähendab, et kui 64-bitine programm viitab oma süsteemi Code32 süsteemile, saab see automaatselt 64-bitise DLL-i. See aitab arendajatel, kuna neil pole 64-bitiste Windowsi programmide koodi vaja muuta.

Lühidalt öeldes viidi Windows kõik 32-bitised DLL-failid kausta System32 Windowsi kataloogi mõnda teise kausta, nii et varasemate programmide ümbertegemine ei tooks korralikke DLL-e isegi API-ide kasutamise korral - pärast 64-bitisele versioonile üleminekut. Probleem tekib siis, kui 32-bitiste rakendustega püütakse siseneda kausta System32. Sel juhul krahhi programm, kuna seda ei kirjutata 64-bitiste DLL-ide käsitlemiseks.

SysWOW64 kaust Windowsis 64-bitine

Kõik 32-bitised DLL-failid on teisaldatud uude SysWOW64 kaust Windows 7, Windows 8 ja Windowsi 64-bitiste versioonidega, nii et kui 32-bitised programmid kutsuvad 32-bitiseid DLL-sid, peavad nad jõudma kausta SysWOW64.

Võite tunduda, et arendajad peavad skannima oma programme ja rakendusi, et suunata DLL-funktsioone SysWOW64 kausta. Kuid Microsoft on juba selle eest hoolt kandnud. Kui see on 32-bitine programm, mis helistab C: Windows System32, emulaator suunab teele C: Windows SysWOW64. See tähendab, et 64-bitise Windowsi 32-bitiste programmide käivitamiseks kasutatakse emulatoreid, nii et DLL-faile helistades oleks korralikult tagurpidi ühilduvus ja vältida vigu.

Windowsi 64-bitise süntaksu kaust

Image
Image

Võib juhtuda, et 32-bitisel programmil või rakendusel võib olla vaja 64-bitist DLL-i. Sellisel juhul peate kasutama suunamiskausta Süsnatiivne. Saate pidada, et SysNative on virtuaalne kaust ja alias, mis viitab kausta System32. See ei eksisteeri füüsiliselt teie süsteemis kui sellisena. Nii et kui teie 32-bitisel programmil on juurdepääs 64-bitisele DLL-ile, ära kasuta seda C: Windows System32 sest 32-bitiste programmide emulator võtab selle 32-bitise DLL-i kausta SysWOW64. Selle asemel kasutage C: Windows SysNative kui DLL-i programmi tee. Sysnative'i kasutamine teekonnas suunab selle kausta SysWOW64 asemel kausta System32.

Kui avate faili Windows Explorer, siis ei leia Sysnative kaust C: Windowsis. Isegi kui määrate kaustade valikud peidetud ja süsteemi kaustade kuvamiseks. Seda seetõttu, et Windows File Explorer on 64-bitiste Windowsi käivitamisel 64-bitine programm ja Sysnative kaust on nähtav ja kättesaadav ainult 32-bitistest programmidest.

Kokkuvõtteks:

  1. System32 kaustad sisaldavad 64-bitiseid DLL-faile.
  2. SysWOW64 sisaldab 32-bitiseid DLL-faile ja 32-bitised programmid suunatakse automaatselt sellele kausta
  3. Sysnative on redirecki kaust, mis võimaldab 32-bitistel programmidel helistada 64-bitisele DLL-le.

Lisateave: MSDN.

Soovitan: