BSOD 0x00000096 — INVALID_WORK_QUEUE_ITEM

Данный стоп код означает, что была выполнена попытка удалить из очереди элемент, значение одного из указатель у которого равен NULL. Стоп код имеет следующие параметры (таблица ниже).

Параметр Описание
1 Адрес элемента очереди, у которого одно из полей flink или blink равно NULL
2 Адрес очереди. Обычно это очередь ExWorkerQueue
3 Базовый адрес массива ExWorkerQueu. Этот адрес позволит вам определить, действительно ли это очередь ExWorkerQueue
4 Предположим, что это очередь ExWorkerQueu. Это значение – это адрес системного рабочего потока, который был бы вызван, если бы элемент очереди был корректен (этот адрес можно использовать для того, чтобы определить драйвер, который неправильно использовал очередь)

Причины

Эта ошибка возникает когда KeRemoveQueue пытается удалить из очереди элемент, у которого значение одного из полей (flink, blink) равно NULL.

Обычно эта ошибка возникает через неправильное использование системного рабочего потока. Элемент может быть вставлен в очередь только один раз, когда элемент удаляется из очереди его поля flink устанавливается равным NULL. Если код пытается удалить этот же элемент еще раз, возникает данный BSOD.

В большинстве случаев, данные ошибка связана с очередью системного рабочего потока. Если это так то с помощью 4-ого аргумента можно установить проблемный драйвер, если это не так, данный параметр не будет полезным.