0xE6 проверки ошибок: DRIVER_VERIFIER_DMA_VIOLATION

Проверка ошибок DRIVER_VERIFIER_DMA_VIOLATION имеет значение 0x000000E6. Это код ошибки проверка для всех нарушений проверки DMA средства проверки драйверов.

Важно!

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

Примечание

Код проверки основных ошибок E6 может наблюдаться, если средство проверки драйверов не включено. Дополнительные сведения см. на странице Проверка DMA , если этот код не включен.

Параметры DRIVER_VERIFIER_DMA_VIOLATION

Параметр 1 является единственным интересующим параметром. Этот параметр определяет точное нарушение. Если отладчик подключен, в отладчике отображается информативное сообщение.

Параметр 1 Причина ошибки и сообщение отладчика

0x00 — прочие ошибки DMA.

Этот код может представлять два типа ошибок, как указано в параметре 2:

0x1 — драйвер попытался очистить слишком много байтов до конца файла регистра карты.

Параметр 3 — количество байтов, оставшихся в MDL.

Параметр 4 — количество оставшихся байтов, запрошенных для очистки.

0x2 — в Windows истекли непрерывные регистры карт.

Параметр 3 — требуются регистры карты.

Параметр 4 — количество регистров непрерывной карты.

0x01

Счетчик производительности снизился. Отображаются старые и новые значения счетчика.

0x02

Счетчик производительности увеличился слишком быстро. Значение счетчика отображается в отладчике.

0x03

Драйвер освободил слишком много общих буферов DMA. Обычно это означает, что один и тот же буфер освобождается два раза.

Параметр 2 — количество освобожденных дополнительных общих буферов.

0x04

Драйвер освободил слишком много каналов адаптера DMA. Обычно это означает, что один и тот же канал адаптера освобождается два раза.

Параметр 2 — количество освобожденных дополнительных каналов адаптера.

0x05

Драйвер освободил слишком много регистров карты DMA. Обычно это означает, что один и тот же регистр карты освобождается два раза.

Параметр 2 — количество освобожденных дополнительных регистров карты.

0x06

Драйвер освободил слишком много точечных и сборных списков DMA. Обычно это означает, что один и тот же точечный или собираемой список освобождается два раза.

Параметр 2 . Выделенные точечные списки.

Параметр 3 — освобожденные точечные списки.

0x07

Драйвер пытался освободить адаптер, не освобождая сначала все его общие буферы.

Параметр 2 — указатель на адаптер DMA.

Параметр 3 — количество неоплаченных общих буферов.

Параметр 4 — указатель на соответствующие данные внутреннего средства проверки.

0x08

Драйвер пытался освободить адаптер, не освобождая сначала все каналы адаптера, общие буферы или списки точечной и сборной.

Параметр 2 — указатель на адаптер DMA.

Параметр 3 — количество необработанных каналов адаптера.

Параметр 4 — указатель на соответствующие данные внутреннего средства проверки.

0x09

Драйвер попытался освободить адаптер, не освобождая сначала все регистры карты.

Параметр 2 — указатель на адаптер DMA.

Параметр 3 — количество необработанных регистров карты.

Параметр 4 — указатель на соответствующие данные внутреннего средства проверки.

0x0A

Драйвер попытался освободить адаптер, не освобождая все его точечные и сборные списки.

Параметр 2 — указатель на адаптер DMA.

Параметр 3 — количество невыполненных точечных списков.

Параметр 4 — указатель на соответствующие данные внутреннего средства проверки.

0x0B

Драйвер выделил слишком много каналов адаптера одновременно (для каждого адаптера разрешен только один канал адаптера).

Параметр 2 — каналы адаптера.

0x0C

Драйвер попытался выделить слишком много регистров карты одновременно.

Параметр 2 — обязательные регистры карты.

Параметр 3 — максимальное число регистров карты.

0x0D

Драйвер не очищал буферы адаптера.

Параметр 2 — количество сопоставленных байтов.

Параметр 3 — максимальное количество байтов, которые можно сопоставить одновременно.

0x0E

Драйвер попытался выполнить передачу DMA без блокировки буфера. Рассматриваемый буфер находился в выстраивной памяти.

Параметр 2 — адрес MDL буфера DMA.

0x0F

Драйвер или оборудование записывает данные вне выделенного буфера DMA. Параметр 2 — код нарушения.

0x01: тег перед изменением буфера DMA. Ожидаемый тег — DmaVrfy0.

Параметр 3 — длина буфера.

Параметр 4 — начало буфера.

0x02: тег после изменения буфера DMA.

Ожидаемый тег — DmaVrfy0.

Параметр 3 — длина буфера.

Параметр 4 — начало буфера.

0x03: регистр бесплатной карты был перезаписан.

Параметр 3 — адрес повреждения. Ожидаемый шаблон заполнения 0x0F.

0x04: заполнение до неправильного изменения буфера.

Параметр 3. Начало буфера. Ожидаемое заполнение 0x0F.

Параметр 4 . Адрес повреждения.

0x05: заполнение после неправильного изменения буфера.

Параметр 3. Начало буфера.

Параметр 4 . Адрес повреждения. Ожидаемый шаблон заполнения 0x0F.

0x10

Водитель попытался освободить свои регистры карты, в то время как некоторые из их еще были сопоставлены.

Параметр 2 — количество регистров, которые по-прежнему сопоставлены.

0x11

Драйвер имеет слишком много невыполненных ссылок для адаптера.

Параметр 2 . Количество ссылок.

Параметр 3 — указатель на адаптер DMA.

Параметр 4 — указатель на соответствующие данные внутреннего средства проверки.

0x13

Драйвер вызвал подпрограмму DMA при неправильном IRQL. Параметр 2 — код нарушения.

0x01: текущая версия IRQL отличается от ожидаемой.

Параметр 3 — ожидаемый IRQL.

Параметр 4 — текущий IRQL.

0x02: текущий показатель IRQL выше ожидаемого.

Параметр 3 — ожидаемое максимальное значение IRQL.

Параметр 4 — текущий IRQL.

0x14

Драйвер вызвал подпрограмму DMA при неправильном IRQL.

0x15

Драйвер попытался выделить слишком много регистров карт.

Параметр 2. Выделенные регистры карты.

Параметр 3 . Максимальное число регистров карты.

0x16

Драйвер попытался очистить буфер, который не сопоставлен.

Параметр 2 . Адрес в системном виртуальном пространстве регистра карты.

Параметр 3 — указатель на соответствующие данные внутреннего средства проверки.

0x18

Драйвер попытался выполнить операцию DMA с помощью адаптера, который был уже выпущен и больше не существует.

Параметр 2 — указатель на адаптер DMA.

Параметр 3 — указатель на соответствующие данные внутреннего средства проверки.

0x19

Драйвер передал в подпрограмму HAL значение null DMA_ADAPTER.

0x1B

Драйвер передал адрес и MDL в подпрограмму HAL. Однако этот адрес не входит в границы этого MDL.

Параметр 2 — виртуальный адрес, который выходит за пределы MDL.

Параметр 3 — MDL.

0x1D

Драйвер попытался сопоставить уже сопоставленный диапазон адресов.

Параметр 2 . Буфер для сопоставления начала.

Параметр 3 . Буфер для сопоставления конца.

Параметр 4 . Системный адрес в буфере, который уже сопоставлен.

0x1E

Драйвер с именем HalGetAdapter. Эта функция устарела. Вместо нее необходимо использовать IoGetDmaAdapter .

0x1F

Недопустимый буфер DMA. Драйвер ссылался на недопустимый системный адрес — либо до первого MDL, либо после окончания первого MDL, либо используя длину передачи, длинную, чем буфер MDL, и пересекает границу страницы в MDL.Параметр 2 — это код нарушения.

0x01: адрес виртуального буфера находится перед первым MDL.

Параметр 3 — виртуальный адрес начала буфера DMA.

Параметр 4 — указатель на первый MDL, описывающий буфер DMA.

0x02: виртуальный адрес находится после первого MDL.

Параметр 3 — виртуальный адрес начала буфера DMA.

Параметр 4 — указатель на первый MDL, описывающий буфер DMA.

0x03: дополнительная длина передачи пересекает границу страницы.

Параметр 3 — указатель на MDL, описывающий буфер DMA.

Параметр 4 — длина передачи DMA.

0x04. Виртуальный адрес буфера DMA не выровнен по кэшу.

Параметр 3 — виртуальный адрес начала буфера DMA.

Параметр 4 — указатель на MDL, описывающий буфер DMA.

0x05: длина буфера DMA не выравнивается по кэшу.

Параметр 3 — длина буфера DMA.

Параметр 4 — указатель на MDL, описывающий буфер DMA.

0x20

Водитель попытался очистить регистр карты, который не был сопоставлен.

Параметр 2 . База регистра сопоставления.

Параметр 3 — va для начала буфера DMA.

Параметр 4 — указатель на MDL, используемый для описания буфера DMA.

0x21

Драйвер попытался сопоставить буфер нулевой длины для передачи.

Параметр 2 — указатель на соответствующие данные внутреннего средства проверки.

0x22

Буфер DMA не сопоставлен в системе va.

Параметр 2 — MDL

0x23

Не удается очистить канал, который не был завершен или отменен.

Параметр 2 . Код нарушения.

Значение: 0x00: недопустимая очистка канала

Параметр 3 . Идентификатор контроллера.

Параметр 4 — номер канала.

0x24

Недостаточно буфера для запрошенной длины.

Параметр 2 . Длина неучтенных данных.

0x25

Неизвестная версия описания устройства.

0x26

IOMMU обнаружил нарушение DMA.

Параметр 2 . Объект устройства, на которое произошел сбой.

Параметр 3 . Сведения об ошибке (обычно это физический адрес ошибки).

Параметр 4 — тип сбоя (для конкретного оборудования).

Причина

Описание причины см. в описании каждого кода в разделе Параметры.

Решение

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

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

Дополнительные сведения о средство проверки драйверов см. в разделе Средство проверки драйверов.