Windows内核编程基础篇之在线程中睡眠

     我们在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);
}

你可能感兴趣的:(Windows内核编程,在线程中睡眠)