2011-09-24 82 views
0

我需要在DISPATCH_LEVEL或更低IRQL的设备驱动程序中执行密集处理。产生内核模式线程 - Windows

  • 如何创建一个内核线程?
  • 它运行的是什么IRQL?我可以控制这个吗?
  • 它是如何安排的?因为我在这里从用户模式的角度思考,它的优先级是什么?
  • 我可以使用哪些内核函数来提供锁定/同步?
+2

这一切都涵盖了WDK文档。 http://msdn.microsoft.com/en-us/library/ff543102%28v=VS.85%29.aspx等 –

回答

3

您可以创建this系统线程正如你可以看到它的参数之一是一个启动程序,可容纳定制代码 - 它可以使用KeRaiseIrqlKeLowerIrql。默认情况下,线程将在PASSIVE_LEVEL中运行。 "Locks, Deadlocks, and Synchronization"是一个非常有用的文件,关于在Windows上的内核同步和每个人必须做一些修补与Windows内核应该阅读或至少浏览它

+0

如何知道我是否在系统进程上下文中运行?我正在使用NDIS驱动程序,所以我不知道它们的API回调是否会从系统进程中调用我。 – unixman83

+1

如果您读取1行:对于Windows Vista和更高版本的Windows,句柄将是内核句柄。这总是使用OBJ_KERNEL_HANDLE – LordDoskias