Ошибка irp фильтра unknown irp windows 7

Обновлено: 30.06.2024

Общая классификация драйверов WDM

  • Драйверы шин (Bus Drivers). Управляют логическими или физическими шинами. Отвечают за распознавание устройств, подключение их к управляемой ими шине и оповещение о них диспетчера PnP.
  • Функциональные драйверы (Function Drivers). Управляют конкретным типом устройств. Экспортируют рабочий интерфейс устройства операционной системе.
  • Драйверы фильтров (Filter Drivers). Занимая более высокий логический уровень, чем функциональные драйверы, добавляют функциональность или изменяют поведение устройства либо другого драйвера. Этот тип драйверов не обязателен для нормальной работы устройства.

    Драйверы фильтров, в свою очередь, подразделяются на:

    • Драйверы фильтров шин (Bus Filter Drivers).
    • Низкоуровневые драйверы фильтров (Lower-Level Filter Drivers).
    • Высокоуровневые драйверы фильтров (Upper-Level Filter Drivers).
    • Объект "физическое устройство" (Physical Device Object, PDO) - Создается драйвером шины по заданию диспетчера PnP, когда драйвер шины, перечисляя устройства на своей шине, сообщает о наличии какого-либо устройства. PDO представляет физический интерфейс устройства.
    • Объект "функциональное устройство" (Functional Device Object, FDO) - Создается функциональным драйвером, который загружается диспетчером PnP для управления обнаруженным устройством. FDO представляет логический интерфейс устройства.
    • Необязательная группа объектов "устройство-фильтр" (Filter Device Object, FiDO). Одна группа таких объектов размещается между PDO и FDO (эти объекты создаются драйверами фильтров шин), вторая - между первой группой FiDO и FDO (эти объекты создаются низкоуровневыми драйверами фильтров), а третья - над FDO (эти объекты создаются высокоуровневыми драйверами фильтров).

    Дерево устройств

    • Низкоуровневые драйверы фильтров, указанные в параметрах LowerFilters ветвей реестра Enum и Class.
    • Функциональный драйвер, заданный в параметре Service ветви реестра Enum.
    • Высокоуровневые драйверы фильтров, указанные в параметрах UpperFilters ветвей реестра Enum и Class.

    Стек объектов "устройство"

    • объект "физическое устройство", созданный драйвером шины ACPI.
    • объект "функциональное устройство", созданный функциональным драйвером i8042prt.
    • объект "устройство-фильтр", созданный высокоуровневым драйвером фильтра nmfilter (NTICE Support File).
    • объект "устройство-фильтр", созданный высокоуровневым драйвером фильтра kbdclass.

    Язык с за три минуты

    Мне придется использовать исходные коды некоторых системных функций, т.к. по-настоящему разобраться с обработкой IRP без анализа исходного кода, по-моему, невозможно. Эти фрагменты, конечно, не будут истинным кодом операционной системы и будут урезаны, порой весьма значительно. Также опущена вся обработка ошибок: проверки указателей, входных данных и возвращаемых функциями значений, убраны обработчики SEH. Оставлена только самая суть. Для упрощения анализа кода я буду использовать c-подобный псевдоязык (почти чистый с). Вполне допускаю, что вы можете и не знать этого языка, т.к. мы всё же занимаемся разработкой драйверов на ассемблере. Поэтому тезисно приведу базовые конструкции, без которых не обойтись.

    На ассемблере место под инициализированную переменную отводится так:

    Как убрать MULTIPLE_IRP_COMPLETE_REQUESTS (0x00000044)?

    Как убрать « MULTIPLE_IRP_COMPLETE_REQUESTS» ( 0x00000044)?

    Причины появления ошибки

    Актуально для ОС: Windows 10, Windows 8.1, Windows Server 2012, Windows 8, Windows Home Server 2011, Windows 7 (Seven), Windows Small Business Server, Windows Server 2008, Windows Home Server, Windows Vista, Windows XP, Windows 2000, Windows NT.

    Вот несколько способов исправления ошибки « MULTIPLE_IRP_COMPLETE_REQUESTS»:

    Восстановите удаленные файлы

    Часто появление BSoD ошибок приводит к утери важных файлов. Блокировка файлов компьютерными вирусами, ошибки в работе программ для резервного копирования, повреждение или перезапись системных файлов, ошибки файловой системы или наличие битых секторов диска – это не далеко полный список причин удаления данных.

    Исправление соответствующих ошибок восстановит работоспособность устройства, но не всегда восстановит повреждённые или утерянные файлы. Не всегда имеется возможность устранить ту или иную ошибку без форматирования диска или чистой установки операционной системы, что также может повлечь за собой утерю файлов.

    Загрузите бесплатно и просканируйте ваше устройство с помощью Hetman Partition Recovery. Ознакомьтесь с возможностями программы и пошаговой инструкцией.

    Чтобы запустить безопасный режим сделайте следующее:

    Как загрузить Windows в безопасном режиме

    Обновите драйвер через Диспетчер устройств

    Вы установили новое аппаратное обеспечение на компьютере? Возможно вы начали использовать новое USB-устройство с вашим компьютером. Это могло привести к ошибке «MULTIPLE_IRP_COMPLETE_REQUESTS». Если вы установили драйвер устройства используя диск, который поставляется вместе с ним, или использовали драйвер не c официального сайта Microsoft, то причина в нем. Вам придется обновить драйвер устройства, чтобы устранить эту проблему.

    Вы можете сделать это вручную в диспетчере устройств Windows, для того выполните следующие инструкции:

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

    Используйте sfc /scannow для проверки всех файлов системы

    Повреждение или перезапись системных файлов может привести к ошибке «MULTIPLE_IRP_COMPLETE_REQUESTS». Команда Sfc находит поврежденные системные файлы Windows и заменяет их.

    Этот процесс может занять несколько минут.

    Как восстановить системные файлы Windows 10

    Проверьте диск с Windows на наличие ошибок командой chkdsk c: /f

    Дождитесь окончания процесса и перезагрузите компьютер.

    Используйте режим совместимости со старой версией Windows

    Запуск программы в режиме совместимости Windows 10, 8, 7

    Отключите лишние программы из автозагрузки Windows

    Программное обеспечение, вызывающее «MULTIPLE_IRP_COMPLETE_REQUESTS» (0x00000044), может быть прописано в автозагрузку Windows и ошибка будет появляться сразу после запуска системы без вашего участия. Удалить программы из Автозагрузки можно с помощью Диспетчера задач.

    Обратитесь в поддержку Microsoft

    Установите последние обновления системы

    С обновлениями Windows дополняет базу драйверов, исправляет ошибки и уязвимости в системе безопасности. Загрузите последние обновления, что бы избавиться от ошибки «MULTIPLE_IRP_COMPLETE_REQUESTS» (0x00000044).

    Запустить Центр обновления Windows можно следующим образом:

    Рекомендуется настроить автоматическую загрузку и установку обновлений операционной системы с помощью меню Дополнительные параметры.

    Чтобы включить автоматическое обновление системы необходимо запустить Центр обновления Windows:

    Запустите проверку системы на вирусы

    Для проверки системы на наличие вирусов запустите установленную на компьютере антивирусную программу.

    Современные антивирусы позволяют проверить как жесткие диски, так и оперативную память. Выполните полную проверку системы.

    Выполните проверку оперативной памяти

    Неполадки с памятью могут привести к ошибкам, потере информации или прекращению работы компьютера.

    Прежде чем проверять оперативную память, отключите её из разъёма на материнской плате компьютера и повторно вставьте в него. Иногда ошибка MULTIPLE_IRP_COMPLETE_REQUESTS» вызвана неправильно или не плотно вставленной в разъём планкой оперативной памяти, или засорением контактов разъёма.

    Если предложенные действия не привели к положительному результату, исправность оперативной памяти можно проверить средствами операционной системы, с помощью средства проверки памяти Windows.

    Запустить средство проверки памяти Windows можно двумя способами:

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

    Если не один из перечисленных методов не помог избавиться от MULTIPLE_IRP_COMPLETE_REQUESTS», попробуйте переустановить Windows. Для того чтобы выполнить чистую установку Windows необходимо создать установочный диск или другой носитель с которого планируется осуществление установки операционной системы.

    Загрузите компьютер из установочного диска. Для этого может понадобиться изменить устройство загрузки в BIOS или UEFI для более современных компьютеров.

    Следуя пунктам меню установщика укажите диск, на который вы хотите установить Windows. Для этого понадобится отформатировать его. Если вас не устраивает количество или размер локальных дисков, их можно полностью удалить и заново перераспределить.

    Помните, что форматирование, удаление или перераспределения дисков удалит все файлы с жесткого диска.

    После указания диска для установки Windows запуститься процесс копирования системных файлов и установки операционной системы. Во время установки от вас не потребуется дополнительных действий. В течении установки экран компьютера будет несколько раз гаснуть на непродолжительное время, и для завершения некоторых этапов установки компьютер будет самостоятельно перезагружаться.

    В зависимости от версии Windows на одном из этапов от вас может понадобиться выбрать или внести базовые параметры персонализации, режим работы компьютера в сети, а также параметры учётной записи или создать новую.

    После загрузки рабочего стола чистую установку Windows можно считать законченной.

    Примечание. Прежде чем приступить к выполнению чистой установки Windows заранее побеспокойтесь о наличии драйверов ко всем установленным устройствам и сохранности ваших файлов. Загрузите и сохраните драйвера на отдельный носитель информации, а для важных данных создайте резервную копию.

    ПОЛНЫЙ ОБЗОР: MULTIPLE_IRP_COMPLETE_REQUESTS в Windows 10

    Windows Это сложная операционная система: она обслуживает миллионы ПК по всему миру и работает на тысячах различных аппаратных комбинаций, что может быть весьма интересно для инженеров Microsoft.

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

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

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

    Мы исправили ошибки и предоставили методы для исправления ошибки NTFS_File_System в Windows 10 в прошлом, поэтому вы можете ожидать, что эти решения будут работать на вас. Если этого не произойдет, возможно, вам придется искать лучшее решение.

    Решение 1. Проверьте свой антивирус

    В некоторых случаях ваш антивирус может вызвать ошибку MULTIPLE_IRP_COMPLETE_REQUESTS, и для ее устранения рекомендуется проверить настройки антивируса. Иногда определенные функции вашего антивируса могут вызвать появление этой проблемы, и для ее устранения вам просто нужно отключить эти функции.

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

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

    После удаления антивируса проверьте, не устранена ли проблема. Если нет, возможно, вам следует подумать о переходе на другое антивирусное решение. На рынке есть много отличных антивирусных инструментов, но если вам нужен надежный антивирус, который не мешает вашей системе, вы должны рассмотреть возможность использования BullGuard,

    Решение 2. Используйте средство проверки системных файлов

    По словам пользователей, иногда это может привести к повреждению системных файлов. Однако вы можете решить проблему, просто выполнив сканирование SFC. Чтобы сделать это, просто выполните следующие действия:

    После завершения сканирования проверьте, сохраняется ли проблема. Если проблема сохраняется, или если вы не смогли запустить сканирование SFC, мы рекомендуем вам проверить сканирование DISM. Чтобы сделать это, просто выполните следующие действия:

    После завершения двух сканирований проверьте, сохраняется ли проблема.

    Теперь вам просто нужно перезагрузить компьютер и позволить ему сканировать системный диск. Этот процесс может занять около 20-30 минут, но как только вы закончите, проблема должна быть полностью решена.

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

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

    После обновления драйверов проверьте, сохраняется ли проблема.

    Иногда сторонние приложения могут мешать работе вашей системы и вызывать ошибку MULTIPLE_IRP_COMPLETE_REQUESTS. По словам пользователей, такие приложения, как LogMeIn HamachiAsRock и EasyTune могут вызвать эту проблему.

    Если вы используете какое-либо из этих приложений, мы рекомендуем удалить их и проверить, решает ли это проблему. Хотя вы можете удалить эти приложения с помощью приложения «Настройки», мы настоятельно рекомендуем использовать такое программное обеспечение, как: Revo деинсталлятор удалить их

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

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

    В некоторых случаях ваши настройки BIOS могут вызвать ошибку MULTIPLE_IRP_COMPLETE_REQUESTS. Обычно это вызвано вашими настройками, но вы можете решить проблему, просто сбросив настройки BIOS на значения по умолчанию.

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

    Мы уже написали краткое руководство по обновлению BIOS, но поскольку это всего лишь общее руководство, мы рекомендуем вам обратиться к руководству по материнской плате для получения подробных инструкций по обновлению BIOS.

    Обязательно внимательно следуйте инструкциям в руководстве по эксплуатации, чтобы избежать нанесения непоправимого ущерба вашей системе. После обновления BIOS проверьте, устранена ли проблема.

    Эти решения должны, по крайней мере, помочь вам понять, что именно не так с вашей Windows, и в некоторых случаях вы также можете решить эти проблемы. Windows Это сложная операционная система, из-за которой трудно понять, что именно вызывает все проблемы.

    Часто задаваемые вопросы: Узнайте больше о Ошибка MULTIPLE_IRP_COMPLETE_REQUESTS

    Чтобы устранить эту проблему, выполните следующие действия: проверьте антивирус, используйте средство проверки системных файлов, запустите CHKDSK, обновите драйверы, удалите проблемное программное обеспечение, сбросьте настройки BIOS до значений по умолчанию и, наконец, обновите BIOS.

    От редактора Note: Этот пост был первоначально опубликован в октябре 2018 года и с тех пор был обновлен и обновлен в апреле 2020 года для обеспечения свежести, точности и полноты.

    MULTIPLE_IRP_COMPLETE_REQUESTS (44)
    A driver has requested that an IRP be completed (IoCompleteRequest()), but
    the packet has already been completed. This is a tough bug to find because
    the easiest case, a driver actually attempted to complete its own packet
    twice, is generally not what happened. Rather, two separate drivers each
    believe that they own the packet, and each attempts to complete it. The
    first actually works, and the second fails. Tracking down which drivers
    in the system actually did this is difficult, generally because the trails
    of the first driver have been covered by the second. However, the driver
    stack for the current request can be found by examining the DeviceObject
    fields in each of the stack locations.
    Arguments:
    Arg1: fffffa805dfcecc0, Address of the IRP
    Arg2: 0000000000000ec0
    Arg3: 0000000000000000
    Arg4: 0000000000000000

    SYSTEM_PRODUCT_NAME: Super Server

    SYSTEM_SKU: Default string

    BIOS_VENDOR: American Megatrends Inc.

    FOLLOWUP_IP:
    rdpdr!CVCChannel::OnClose+146
    fffff880`083a6302 488b8f08010000 mov rcx,qword ptr [rdi+108h]

    CPU_MICROCODE: 6,4f,1,0 (F,M,S,R) SIG: B00002A'00000000 (cache) B00002A'00000000 (init)

    ANALYSIS_VERSION: 10.0.17763.132 amd64fre

    LAST_CONTROL_TRANSFER: from fffff800022de406 to fffff800022aaac0

    STACK_TEXT:
    fffff880`0b2ec6b8 fffff800`022de406 : 00000000`00000044 fffffa80`5dfcecc0 00000000`00000ec0 00000000`00000000 : nt!KeBugCheckEx
    fffff880`0b2ec6c0 fffff880`083a6302 : fffffa80`41da4040 00000000`00000001 fffffa80`2f9b52c8 fffffa80`2f9b51f0 : nt! ?? ::FNODOBFM::`string'+0x20f06
    fffff880`0b2ec7b0 fffff880`083a3e92 : fffffa80`41da4040 00000000`00000000 00000000`00000000 fffffa80`2f7ab701 : rdpdr!CVCChannel::OnClose+0x146
    fffff880`0b2ec7e0 fffff880`083a371d : fffffa80`4395c370 fffffa80`251acc50 00000000`00000000 fffffa80`28581920 : rdpdr!CVCSession::Disconnect+0x146
    fffff880`0b2ec830 fffff880`083a33f3 : fffffa80`4395c370 fffffa80`251ac9d0 fffffa80`41da4010 fffffa80`4395c370 : rdpdr!CDynVC::NotifySessionDisconnected+0x71
    fffff880`0b2ec860 fffff880`083a314b : fffffa80`4395c370 fffffa80`4395c370 00000000`00000001 fffff800`0224b33c : rdpdr!CDynVC::Close+0x3b
    fffff880`0b2ec890 fffff880`08392a19 : fffffa80`4395c370 00000000`00000000 fffffa80`19a704b0 fffff800`022458a6 : rdpdr!DYNVC_Dispatch+0x107
    fffff880`0b2ec8c0 fffff800`025141ae : 00000000`00033852 fffffa80`2559a420 00000000`00000001 00000000`00000000 : rdpdr!DrPeekDispatch+0x61
    fffff880`0b2ec910 fffff800`0224a3d4 : fffff8a0`02a71570 fffffa80`253d0b00 fffffa80`19a704b0 00000000`00000000 : nt!IopDeleteFile+0x11e
    fffff880`0b2ec9a0 fffff800`02642720 : fffffa80`253d0b00 fffffa80`43b55b50 00000000`00000e44 fffffa80`43b55b50 : nt!ObfDereferenceObject+0xd4
    fffff880`0b2eca00 fffff800`0250f6e4 : 00000000`00000e44 fffffa80`2559a3f0 fffffa80`253d0b00 fffff8a0`02a21010 : nt!ObpCloseHandleTableEntry+0x280
    fffff880`0b2eca90 fffff800`022b8b53 : fffffa80`43b55b50 fffff880`0b2ecb60 00000000`00a2e9b8 00000000`03204500 : nt!ObpCloseHandle+0x94
    fffff880`0b2ecae0 00000000`77238e0a : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
    00000000`00a2e448 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x77238e0a

    здраствуйте! я вот создаю драйвер перехватчик для NtTerminateProcess. вопрос:
    как при каждом перехвате передавать строковые данные в приложение в usermode, а потом ждать ответа от приложения?

    Добавлено через 1 минуту
    знаю , что возможно запросить данные из драйвера в приложение с помощью "DeviceIoControl", но мне нужно чтобы драйвер сам передавал данные в приложение, без запроса.

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ здесь


    Общение между приложением и драйвером
    Проблемы с общением между приложением и драйвером. Драйвер принимает строку, а ответные данные .

    Обмен данными между веб-приложением (Flask) и графическим приложением (PyQt5) (Python3.7)
    С помощью каких библиотек (модулей) и каким образом можно реализовать сервер на базе графического.

    Связь c драйвером
    Hello all. Собсно подскажите api ( Create, Write, Read ) для этого дела, если существуют. Если.

    Наиболее простая и безопасная модель общения с драйвером:

    1) Для начала нужно определить управляющие коды (I/O Control Code, IOCTL).
    Информация здесь:

    Управляющий код формируется из четырех частей:

    device type - тип устройства, обычно FILE_DEVICE_UNKNOWN;

    function code - значение из диапазона 0x800 до 0x1000;

    i/o transfer type - способ передачи, METHOD_BUFFERED, METHOD_IN_DIRECT,
    METHOD_OUT_DIRECT или METHOD_NEITHER;

    required access - права, необходимые для выполнения операции:
    FILE_READ_ACCESS, FILE_WRITE_ACCESS или FILE_ANY_ACCESS.

    Пример определения IOCTL:

    METHOD_XXXX определяет способ передачи данных, от этого зависит то,
    как драйвер должен обрабатывать буфер с данными, переданный из программы.

    Я не буду здесь расписывать все подробности, т.к. все это есть
    на MSDN и в соответствующих документах. Например:

    2) Драйвер должен реализовать обработчики IRP_MJ_CREATE (открытие устройства),
    IRP_MJ_DEVICE_CONTROL (обработка DeviceIoControl), IRP_MJ_CLEANUP и
    IRP_MJ_CLOSE (закрытие хэндла и очистка ресурсов).

    3) Приложение открывает устройство, созданное драйвером - CreateFile,
    причем с флагом FILE_FLAG_OVERLAPPED (асинхронный ввод-вывод), а затем с
    помощью DeviceIoControl и управляющего кода отправляет ему команду.
    Драйвер ставит IRP в очередь, возвращая код STATUS_PENDING.
    Далее приложение может ждать на событии (см. структуру OVERLAPPED).
    В некоторый момент времени, когда драйверу нужно передать в программу
    какие-то данные, он вытаскивает IRP из очереди, записывает данные в
    его буфер и завершает IRP (IoCompleteRequest). После этого приложение
    ставит в очередь еще один IRP.

    Я рекомендую не заниматься самодеятельностью (потому что правильная
    синхронизация отмены IRP - штука непростая), а сразу для реализации
    очереди использовать Cancel-Safe IRP Queues:

    Читайте также: