Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ha egy másik illesztőprogram által definiált visszahívási objektumot szeretne használni, az illesztőprogram megnyitja az objektumot, majd regisztrál egy rutint, amelyet a visszahívás aktiválásakor kell meghívni, ahogy az az alábbi ábrán látható. Az értesítést kérő illesztőprogramnak ismernie kell a visszahívási objektum nevét, és ismernie kell a visszahívási rutinnak átadott argumentumok szemantikáját.
Mielőtt megnyithatja az objektumot, az illesztőnek meg kell hívnia az InitializeObjectAttributes parancsot egy attribútumblokk létrehozásához, megadva az objektum nevét. Miután egy attribútumblokkra mutató mutatót kapott, meghívja az ExCreateCallbacket, átadva az attribútummutatót, egy helyet, ahol fogópontot szeretne kapni a visszahíváshoz, és HAMIS a Create paraméterhez, jelezve, hogy egy meglévő visszahívási objektumot igényel.
Az illesztőprogram ezután meghívhatja az ExRegisterCallbacket a visszaadott leíróval a visszahívási rutin regisztrálásához.
A visszahívási rutin a következő prototípussal rendelkezik:
typedef VOID (*PCALLBACK_FUNCTION ) (
IN PVOID CallbackContext,
IN PVOID Argument1,
IN PVOID Argument2
);
A CallbackContext paraméter az a környezeti mutató, amelyet minden híváskor továbbítani kell a visszahívási rutinnak. Ez a paraméter általában egy mutató, amely a környezeti adatok egy blokkjára mutat. Ezt a blokkot a hívónak a nem lapozott készletből kell kiosztania, ha a rutint a DISPATCH_LEVEL szinten lehet meghívni. A két argumentumot a visszahívást létrehozó összetevő határozza meg. Az argumentumok általában információt nyújtanak a visszahívást kiváltó feltételekről.
Amikor a visszahívás létrehozója értesítést aktivál, a rendszer meghívja a regisztrált rutint, és egy mutatót ad át a környezetnek és a két argumentumnak. Az argumentumok értékeit a visszahívást létrehozó összetevő adja meg. A visszahívási rutin ugyanabban az IRQL-ben van meghívva, amelyen a létrehozási illesztőprogram értesítést indított, amely mindig IRQL <= DISPATCH_LEVEL.
A visszahívási rutinban az illesztő elvégezheti az összes szükséges feladatot az aktuális feltételekhez.
Ha az illesztőprogram már nem igényel értesítést, hívja meg az ExUnregisterCallbacket , hogy távolítsa el a 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.