Hardware Abstraction Layer
După cum sa menționat deja, unul dintre cele mai importante elemente de design de Windows este portabilitatea acestuia pe o varietate de platforme hardware. Hardware Abstraction Layer - strat de abstractizare hardware (HAL) este o parte esențială a asigura o astfel de posibilitate de portabilitate.
HAL este un modul de încărcare kernel-mode (Hal.dll), oferind o interfață de nivel scăzut pentru platforma hardware pentru a rula Windows. Se ascunde detaliile, în funcție de echipament, cum ar fi interfețele de intrare-ieșire, controlere de întrerupere și mecanisme de interacțiune între procesoare - toate funcțiile cu atât arhitecturală și mașină de dependență.
Prin urmare, în loc să aibă acces direct la hardware-ul, componentele interne de Windows și drivere de dispozitiv sunt scrise de către utilizatori, ca și informațiile necesare, în funcție de portabilitatea platformei suport prin apelarea HAL-rutine. Din acest motiv, HAL-rutine sunt documentate în WDK. Pentru mai multe informații despre HAL și driverele de dispozitiv trebuie să apeleze la WDK.
Cu toate că sistemul de operare include mai multe HAL module (a se vedea. Tab), Windows este posibil să se determine în momentul descărcării, ar trebui să fie utilizat un HAL-modul, cu excepția problema care a existat în versiunile lansate anterior de Windows când încercați Windows Installer descărca de pe diferite tipuri de sisteme.
Listă de HAL-module pentru x86.
PC-uri cu interfață îmbunătățită
managementul configurației, și consumul de energie - Avansat
Configurare și interfață de alimentare (ACPI). destinate numai
pentru o mașină cu un singur procesor, fără suportul avansat Programmable Interrupt Controler - APIC (prezența oricăreia dintre aceste controlere va determina sistemul să utilizeze
în schimb HAL-unitate prezentată mai jos)
calculatoare personale cu avansat controler de întreruperi programabil - Advanced Programmable Interrupt
Controler (APIC), având ACPI. Prezența mijloacelor APIC
suport pentru multiprocesare simetrică - SMP
NOTĂ. Pe 64-mașini, există doar o singură cale de HAL-numit Hal.dll. Acest lucru se datorează prezenței tuturor x64-mașini placi de aceeași configurație ca și procesele necesare pentru a sprijini ACPI și APIC. Prin urmare, mașinile fără sprijin ACPI, sau cu controlerul standard de întrerupere programabil - PIC, nu este necesară.
Experiment: determinarea rularea HAL-modulului.
Determinați ce versiune de HAL-modulului se execută, puteți utiliza WinDbg și deschiderea sesiunii de depanare kernel-ului local. Furnizarea de intrare .reload prin descărcarea de comandă de caractere, apoi tastați comanda HAL LM vm.
De exemplu, următoarea concluzie a fost obținută pe un sistem care a lansat HAL ACPI:
LKD> lm vm hal
începe final numele modulului
fffff800'0181b000 fffff800'01864000 hal (amânat)
Încărcat fișier imagine simbol: halmacpi.dll
Cale Imagine: halmacpi.dll
Denumirea fotografiei: halmacpi.dll
Versiune fișier: 6.1.7600.16385
Versiune produs: 6.1.7600.16385
steaguri fișier: 0 (Masca 3F)
Sistem de operare Fișier: 40004 NT Win32
Tip de fișier: 2.0 dll
Data Fișier: 00000000.00000000
CompanyName: Microsoft Corporation
ProductName: Microsoft® Windows® Sistem de operare
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
FileDescription: Hardware Abstraction Layer DLL
Rețineți că Ntoskrnl asociată cu HAL, care, la rândul său, este asociat cu Ntoskrnl. (Ambele folosesc funcțiile reciproc.) Ntoskrnl de asemenea, asociat cu următoarele fișiere executabile:
Descrierea detaliată a informațiilor afișate aceste mijloace este dată în fișierul de ajutor pe DependencyWalker (Depends.hlp).
Similar cu cei care nu.