windows 内核中如何实现Sleep

windows 内核中如何实现Sleep,第1张

在 Windows 内核中,可以调用 KeDelayExecutionThread 函数来实现类似于 Sleep 的功能。该函数将让调用线程延迟执行一段时间,例如,让线程休眠 1 毫秒。

下面是一个示例程序,演示如何在 Windows 内核中使用 KeDelayExecutionThread 函数来实现 Sleep 功能:

```

#include

VOID DriverUnload(PDRIVER_OBJECT DriverObject)

{

UNREFERENCED_PARAMETER(DriverObject)

}

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)

{

UNREFERENCED_PARAMETER(RegistryPath)

KdPrint(("DriverEntry called\n"))

// 延迟执行 1 秒钟,相当于 Sleep(100)

LARGE_INTEGER delayInterval

delayInterval.QuadPart = -1 * 100 * 100 * 10

KeDelayExecutionThread(KernelMode, FALSE, &delayInterval)

KdPrint(("Delay finished\n"))

DriverObject->DriverUnload = DriverUnload

return STATUS_SUCCESS

}

```

这个示例程序将延迟执行 1 秒钟,然后在调用完成后卸载驱动程序。在延迟执行的部分,我们创建了一个 `LARGE_INTEGER` 类型的变量 `delayInterval`,用它来表示需要延迟的时间。然后,我们将其设置为负数,相当于指定延迟的时间间隔,这里我们将其设为 1 秒钟的时间间隔。

最后,我们调用 KeDelayExecutionThread 函数,并传递给它 delayInterval 参数,指定需要延迟执行的时间间隔。

需要注意的是,该示例程序的环境为 Windows 内核,因此需要使用相应的开发工具来编译和测试驱动程序。如果你是想在用户模式下实现类似 Sleep 的功能,请使用标准 C/C++ 库中的 Sleep 函数。

原因如下:

1是此补丁已失效。

2是电脑上已装有包含此问题的更新补丁,则只能忽略了。

可以到到微软官网下载更新 ,对应你 *** 作系统是32bit或64bit下载安装,安装完成后重启电脑。重启完成问题解决!

扩展资料:

Windows系统中两种基本驱动程序之一,它的特点是:

1、内核模式驱动程序将在执行其他应用程序代码(包括受保护的子系统代码)的非特权处理器模式中运行。除非用户模式驱动程序调用 Win32 API,否则将无法获取对系统数据的访问权。

2、内核模式驱动程序将作为 *** 作系统的执行部分(即支持一个或多个受保护的子系统的基础 *** 作系统组件)运行。大多数设备驱动程序将在内核模式中运行。

内核模式驱动程序可执行某些受保护的 *** 作,并可访问用户模式驱动程序无法访问的系统结构。但随着访问权的增加,调试难度和系统损害几率也随之增大。

参考资料:百度百科-内核模式驱动


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7761075.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存