[Win驅動]定時器的說明

內核中的定時器對應的函數是KeSetTimer()原型如下:

 

 

 

 

 BOOLEAN KeSetTimer(IN PKTIMER Timer, //定時器

                                    IN LARGE_INTEGER DueTime, //延後執行的時間

                                    IN PKDPC Dpc OPTIONAL //要執行的回調函數

                                    );

 

Timer 和 回調函數結構Dpc都必須初始化。

 

 KTIMER my_timer; KeInitializeTimer(&my_timer);

 

Dpc的初始化比較麻煩些,初始化函數原型:

 

 VOID KeInitializeDpc(IN PRKDPC Dpc,

                                    IN PKDEFERRED_ROUTINE DeferredRountine,

                                    IN PVOID DeferredContext

                                   );

 

PKDEFERRED_ROUTINE 這個函數指針對應的類型是 

 

VOID CustomDpc(IN struct _KDPC *Dpc,

                            IN PVOID DeferredContext,

                            IN PVOID SystemArgument1,

                            IN PVOID SystemArgument2

                           );

 

其實你需要關心的只是DeferredContext,這個參數是用來給CustomDpc調用時使用相當於MFC中AfxBeginThread的參數LPVOID pParam的性質。

 

 回調函數運行在APC中斷級 Dispatch>APC>Passive 高中斷級上運行的代碼不會被低中斷級上運行的代碼中斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章