System-Defined Visszahívási objektum használata

A rendszer három visszahívási objektumot határoz meg az illesztőprogramok használatához:

\Callback\SetSystemTime

\Callback\PowerState

\Callback\ProcessorAdd

A rendszeridőt használó illesztőprogramok (például fájlrendszer-illesztőprogramok) regisztrálhatnak a \Callback\SetSystemTime visszahívási objektumra. Ez a visszahívás értesítést biztosít a rendszer időváltozásairól.

A \Callback\PowerState visszahívási objektum az alábbi esetekben biztosít értesítést:

  • A rendszer AC-ről dc-teljesítményre vált, vagy fordítva.

  • A rendszer energiaházirendje egy felhasználó- vagy alkalmazáskérés eredményeként változik.

  • A rendszer alvó vagy leállítási állapotára való áttérés küszöbön áll. Egy illesztőprogram értesítést kérhet, hogy leállítás előtt előre zárolja a kódot a memóriában. A visszahívási rutinokról a power manager a rendszer set-power IRP-jének elküldése előtt értesítést kap.

A \Callback\ProcessorAdd visszahívás értesítést küld, ha új processzort adnak hozzá a rendszerhez.

Rendszeralapú visszahívás használatához az illesztőprogram inicializál egy attribútumblokkot az InitializeObjectAttributes meghívásával a visszahívás nevével, majd megnyitja a visszahívási objektumot (ExCreateCallback), csakúgy, mint az illesztőprogram által definiált visszahívást. Az illesztőprogram nem kérheti a visszahívási objektum létrehozását.

Az ExCreateCallback által visszaadott fogóponttal a meghajtó meghívja az ExRegisterCallback funkciót, hogy regisztráljon egy értesítési rutint, átadva egy mutatót egy tetszőleges környezethez és egy mutatót a rutinjához. Egy illesztőprogram bármikor regisztrálhatja a visszahívási függvényt. A megadott feltétel bekövetkezésekor a rendszer meghívja a regisztrált visszahívási rutint az IRQL<=DISPATCH_LEVEL.

Ha az illesztőprogramnak már nincs szüksége értesítésre, hívja meg az ExUnregisterCallbacket , hogy törölje a visszahívási rutinját a regisztrált visszahívások listájából, és távolítsa el a visszahívási objektumra mutató hivatkozását.