INVALID_WORK_QUEUE_ITEM 错误检查的值为 0x00000096.
此错误检查表明删除了包含 NULL 指针的队列条目。
INVALID_WORK_QUEUE_ITEM 参数
参数 | 描述 |
---|---|
1 | flink 或者blink 字段为NULL 的队列条目的地址。 |
2 | 被引用的队列地址。通常,此队列是 ExWorkerQueue。 |
3 | ExWorkerQueue 数组的基地址。(此地址可确定所讨论的队列是否确实是 ExWorkerQueue。如果队列是 ExWorkerQueue,则此参数的偏移量将隔离该队列。) |
4 | 假设队列是一个 ExWorkerQueue,这个值是如果工作项有效时将被调用的工作例程的地址。(我们可以使用此地址来隔离滥用工作队列的驱动程序。) |
https://onitroad.com 更多教程
原因
当 KeRemoveQueue 删除 flink 或者blink 字段为 NULL 的队列条目时,会发生 INVALID_WORK_QUEUE_ITEM 错误检查。
任何队列滥用都可能导致此错误。
但通常发生此错误是因为工作线程工作项被滥用。
队列中的条目只能在列表中插入一次。
当一个项目从队列中移除时,它的 flink 字段被设置为 NULL 。
然后,当第二次删除此项目时,会发生此错误检查。
在大多数情况下,被引用的队列是 ExWorkerQueue(执行工作队列)。
为了帮助识别导致错误的驱动程序,参数 4 显示了如果此工作项有效则将被调用的工作例程的地址。
但是,如果被引用的队列不是 ExWorkerQueue ,则此参数没有用。
日期:2020-09-17 00:16:05 来源:oir作者:oir