
下面是一个示例程序,演示如何在 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、内核模式驱动程序将作为 *** 作系统的执行部分(即支持一个或多个受保护的子系统的基础 *** 作系统组件)运行。大多数设备驱动程序将在内核模式中运行。
内核模式驱动程序可执行某些受保护的 *** 作,并可访问用户模式驱动程序无法访问的系统结构。但随着访问权的增加,调试难度和系统损害几率也随之增大。
参考资料:百度百科-内核模式驱动
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)