Windows DDK示例如何处理被调出的问题?我不知道';在示例中看不到太多处理它的代码

Windows DDK示例如何处理被调出的问题?我不知道';在示例中看不到太多处理它的代码,windows,kernel,paging,wdk,page-fault,Windows,Kernel,Paging,Wdk,Page Fault,为什么Windows DDK示例不处理被调出的问题?它们是不可分页的吗?不是专门针对Windows驱动程序,而是针对一般的设备驱动程序: 没有大的驱动程序 不要在内核模式下做那么多工作,当然也不要在高中断优先级下做那么多工作。只执行这些级别所需的操作,然后将其余工作委托给在最低级别(0)运行的代码。可分页代码用“pragma code”seg(“PAGE”)标记。这就是为什么驱动程序不处理寻呼。默认情况下,它们都是不可分页的。分页代码由#pragma code_seg(“PAGExxx”)包装,

为什么Windows DDK示例不处理被调出的问题?它们是不可分页的吗?

不是专门针对Windows驱动程序,而是针对一般的设备驱动程序:

没有大的驱动程序


不要在内核模式下做那么多工作,当然也不要在高中断优先级下做那么多工作。只执行这些级别所需的操作,然后将其余工作委托给在最低级别(0)运行的代码。

可分页代码用“pragma code”seg(“PAGE”)标记。这就是为什么驱动程序不处理寻呼。默认情况下,它们都是不可分页的。

分页代码由
#pragma code_seg(“PAGExxx”)
包装,分页数据由
#pragma data_seg(“PAGExxx”)
包装。还可以使用
#pragma alloc_text
指定分页函数(仅c链接)。还可以使用从WDK 8开始的
declspec(allocate())
来分页类。还有一个API可以锁定和解锁内存中的页面,允许运行时控制。请参阅此处的更多信息:

我认为您需要提供有关您的用例的更多信息-哪些内核api等?或者你可以阅读@LordDoskias:你能编辑那个链接使其不特定于版本吗?是的。可分页代码标记为#pragma code_seg(“页面”),您的代码不是第一个网络堆栈,您知道吗?答案是一样的:大多数代码不需要在DISPATCH_级别执行。对不起,我不理解这个注释。你说的“大”是指“复杂”还是“图像尺寸大”?如果你的意思是“复杂”,那么这很难量化。它们不应该比需要的更复杂,但对所有软件来说不是这样吗?如果你的意思是“图像大小大”,那么我不确定代码是在用户模式还是内核模式下,它们将占用相同数量的物理内存。现在什么是“太大”?NTFS.sys在我的开发系统上为1.6MB,内存为16GB。另外,我不确定最初的问题与中断优先级有什么关系。这并不意味着驱动程序代码不处理分页。编译期间,杂注定义可分页部分。还有一个API可以在运行时锁定/解锁页面。内核中可分页的内容受到严格限制。