我们在C语言中 包含头文件: Windows.h。就能调用函数sleep() 是程序停下一段时间。在驱动中也可以睡眠,用到的函数原型如下:
NTSTATUS KeDelayExecutionThread(
_In_ KPROCESSOR_MODE WaitMode,
_In_ BOOLEAN Alertable,
_In_ PLARGE_INTEGER Interval
);
传入参数说明: WaitMode 直接填写 KernelMode, Alertable 表示是否允许 线程警报,通常这里设置 FALSE,最后的一个参数表示线程需要睡眠的时长。
下面的这个函数能指定睡眠多少毫秒。
#define DELAY_ONE_MICRSECOND (-10)
#define DELAY_ONE_MILLISECOND (1000 * DELAY_ONE_MICRSECOND)
VOID MySleep(LONG msec)
{
LARGE_INTEGER my_interval;
my_interval.QuadPart = DELAY_ONE_MILLISECOND;
my_interval.QuadPart *= msec;
KeDelayExecutionThread(KernelMode, 0, &my_interval);
}