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

Hardware Abstraction Layer

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.