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 — тип сбоя (для конкретного оборудования). |
Причина
Описание причины см. в описании каждого кода в разделе Параметры.
Решение
Эта ошибка проверка может возникнуть только в том случае, если средство проверки драйверов было проинструктировано отслеживать один или несколько драйверов. Если вы не планируете использовать средство проверки драйверов, его следует отключить. Вы также можете удалить драйвер, который вызвал эту проблему.
Если вы являетесь модулем записи драйверов, используйте сведения, полученные с помощью этой проверка, чтобы исправить ошибки в коде.
Дополнительные сведения о средство проверки драйверов см. в разделе Средство проверки драйверов.