驱动开发中,与SetTimer()对应的函数是KeSetTimer():
BOOLEAN KeSetTimer(
_Inout_ PKTIMER Timer,<span style="white-space:pre"> </span>///---定时器
_In_ LARGE_INTEGER DueTime,<span style="white-space:pre"> </span>///---延后执行的时间
_In_opt_ PKDPC Dpc<span style="white-space:pre"> </span>///---要执行的回调函数结构
);
定时器Timer 和要 执行的 回调函数 结构Dpc 都必须先初始化,Timer的初始化比如 向下面这样:
KTIMER my_timer;
KeInitalizeTimer(&my_timer);
Dpc的初始化比较麻烦,因为需要一个回调函数。看看它的原型:
VOID KeInitializeDpc(
_Out_ PRKDPC Dpc,
_In_ PKDEFERRED_ROUTINE DeferredRoutine,
_In_opt_ PVOID