Irql not less or equal что это

Содержание

Mansi Verma is a Senior Technology Writer at Stellar®. She is a Tech enthusiast, holding over 8 years of experience in Data Recovery, IoT, Artificial Intelligence, and the Robotics technology domain. She loves researching and providing DIY solutions to solve Windows technical issues. In her spare time, she likes reading novels, and poetry. She also enjoys Travelling, Rafting, Trekking, etc.

What is IRQL_NOT_LESS_OR_EQUAL Error in Windows 10?

Summary: Are you encountering ‘IRQL_NOT_LESS_OR_EQUAL’ error? This blog consists of all the information about IRQL_NOT_LESS_OR_EQUAL Error in Windows 10 including the causes of this error, why it shows a stop code ‘0x0000000A’, and how to fix this BSOD error. We’ve also discussed how to recover data lost due to this error with Stellar Data Recovery Professional software. Get the software now!

  • IRQL_NOT_LESS_OR_EQUAL Error
  • Major Causes of IRQL_NOT_LESS_OR_EQUAL Error
  • How To Fix IRQL_NOT_LESS_OR_EQUAL Error in Windows 10?
  • Lost Data Due To BSOD Error? Recover it With a Windows Data Recovery Tool
  • Conclusion

“I have gone through a number of forums and tried everything to cure irql_not_less_or_equal error. Is there any other effective method to solve this error or should I just reach out to a tech-expert? Any help would be appreciated.”

“I am facing a blue screen problem with error code 0x0000000A. My previous system was Windows 7 Pro in which I used to face the same issue. Now, even after upgrading to Windows 10, I’m still getting this error message. Can anyone help?”

IRQL_NOT_LESS_OR_EQUAL Error

The IRQL_NOT_LESS_OR_EQUAL is a BSOD (Blue Screen of Death) error. This error occurs at Windows startup and with a STOP Code: 0x0000000A (See Image 1). Generally, this error occurs due to the faulty device driver, device memory, or other reasons.

Irql not less or equal что это

Major Causes of IRQL_NOT_LESS_OR_EQUAL Error

There could be several causes associated with this blue screen error, which are as follows:

  • Faulty or Corrupt Device Drivers
  • Malicious Software installed on PC
  • Corrupt System Files
  • Faulty/Corrupt Hardware
  • Wrong Windows Installation

How To Fix IRQL_NOT_LESS_OR_EQUAL Error in Windows 10?

Irql not less or equal что это

Method 1: Update Device Drivers

If faulty or corrupt Device Drivers are causing this error with stop code: 0x0000000A, update drivers or uninstall them by following these steps:

a. Press Windows + R to open Run dialog box. Type devmgmt.msc and hit Enter to open Device Manager (See Image 2).

Irql not less or equal что это

b. Select a category to see device drivers.

c. Right-click the selected driver and click Update Driver (See Image 3).

Irql not less or equal что это

d. Select Search automatically for updated driver software. (See Image 4)

Irql not less or equal что это

e. Windows will search for the latest software drivers. You may check the drivers and update them.

f. In case you don’t find the appropriate driver, uninstall the corrupt Driver to fix the issue.

Method 2: Run Windows Memory Diagnostic Tool

Sometimes, there could be a problem with RAM. To check if the system RAM is causing this error, run the Windows Memory Diagnostic tool in few simple steps as below:

a. Open Windows Memory Diagnostic tool by typing memory diagnostic in the Windows Search Box. (See Image 5)

Irql not less or equal что это

b. Click Restart now and check for problems (recommended). (See Image 6)

Irql not less or equal что это

c. Wait for the process to end. Once the search is completed, the computer will show all the detected problems on the screen.

Method 3: Run SFC/Scannow

Corrupt system files could also be the reason behind IRQL_NOT_LESS_OR_EQUAL error: 0x0000000A. You may fix the error by following the given steps:

a. Open Command Prompt by typing cmdin the Windows Search Box and click Run as administrator. (Image 7)

Irql not less or equal что это

b. In Command Prompt window, type SFC/Scannow command and hit Enter. ( See Image 8)

Irql not less or equal что это

c. Wait until the process is complete. Once the process is done, exit the Command Prompt and restart your system to check if the error is fixed.

Method 4: Run BSOD Troubleshooter

Try out Windows built-in troubleshooting utility- BSOD Troubleshooter to fix IRQL_NOT_LESS_OR_EQUAL error in Windows 10 with the help of these steps:

a. Go to Settings > Update & Security.

b. Click Troubleshoot and under Find and fix other problems, select BSOD error (Blue Screen).

На вашем ПК возникла проблема. Синий экран. Как исправить!

c. Click Run the troubleshooter. (See Image 9)

Irql not less or equal что это

d. Follow the instructions and fix the error.

Method 5: Run CHKDSK Command

If the error is occurring due to faulty or corrupt hard drives, you may fix the problem by running the CHKDSK command. Try the below said troubleshooting steps:

Как исправить Синий экран с разными ошибками (ntoskrnl.exe)

a. Open Command Prompt as discussed in Method 3 .

b. Type chkdsk /r /r D: and hit Enter (D: is the drive letter of the affected hard drive). (See Image 10)

Irql not less or equal что это

c. Let the process finish. Once it is done, restart your system and check if the issue is fixed.

Note: CHKDSK command marks down the bad sectors in the hard drive. Due to this, Windows doesn’t read or store data from marked sectors. This situation leads you to lose access to the data. Although, you may use a Windows Data Recovery tool to recover data lost after using CHKDSK command.

Method 6: Reinstall windows

If you are not able to fix this blue screen error with the help of the above-stated methods, you will have to reinstall Windows 10. You may reinstall Windows 10 by downloading and using Windows Media Creation tool. But remember, after reinstalling Windows, you will lose all the important data stored on your system as the process of reinstalling Windows involves complete formatting of the system making your data completely inaccessible.

Lost Data Due To BSOD Error? Recover it With a Windows Data Recovery Tool

If you lose data due to this BSOD error, you may get it back with the help of an efficient data recovery tool such as Stellar Data Recovery Professional. The software can restore data from all Windows PCs and external storage devices. This DIY software can easily recover data from formatted, corrupted, or virus-infected drives. This tool can help you get back your data even from a crashed system. After retrieving your data, you may fix this error with the methods stated above.

Conclusion

IRQL_NOT_LESS_OR_EQUAL error in Windows 10 is a BSOD error that can be resolved with the help of methods shared in this post. But keep in mind that while methods like running CHKDSK command or reinstalling Windows 10 can fix the error, they may lead to permanent data loss from the system. So retrieve your lost or inaccessible data first with the help of a specialized data recovery tool such as Stellar Data Recovery Professional and then follow the troubleshooting methods to fix this error.

About The Author

Mansi Verma is a Senior Technology Writer at Stellar®. She is a Tech enthusiast, holding over 8 years of experience in Data Recovery, IoT, Artificial Intelligence, and the Robotics technology domain. She loves researching and providing DIY solutions to solve Windows technical issues. In her spare time, she likes reading novels, and poetry. She also enjoys Travelling, Rafting, Trekking, etc.

Best Selling Products

Irql not less or equal что это

Stellar Data Recovery Premium

Stellar Data Recovery Premium for Window

Irql not less or equal что это

Stellar Data Recovery Technician

Stellar Data Recovery Technician intelli

Irql not less or equal что это

Stellar Data Recovery Toolkit

Stellar Data Recovery Toolkit is an adva

Irql not less or equal что это

BitRaser File Eraser

BitRaser File Eraser is a 100% secure so

Windows Kernel Drivers — Стандартные ошибки – IRQL

Irql not less or equal что это

Данная статья нацелена на тех, кто только недавно начал разрабатывать kernel-драйвера под ОС Windows. В 100-ый раз видишь ненавистную надпись IRQL_NOT_LESS_OR_EQUAL и этот грустный смайлик? Тогда прошу пройти под кат.

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

К примеру, у вас есть кусок кода, который генерирует какое-либо событие по PID-процесса.

KSPIN_LOCK SharedDataLock; NTSTATUS SomeFunction(_In_ HANDLE ProcessId) < KIRQL OriginalIrql; NTSTATUS status = STATUS_UNSUCCESSFUL; // lock shared data access KeAcquireSpinLock(&SharedDataLock, &OriginalIrql); // some code, which works with shared data PVOID data = GetProcessSharedData(ProcessId); NT_ASSERT("GetProcessSharedData() must always return shared data.", data); PEPROCESS Process = NULL; // next we need to get process image name status = PsLookupProcessByProcessId( ProcessId, &Process ); if ( !NT_SUCCESS( status ) ) < goto LOCK_RELEASE; >PUNICODE_STRING ProcessImage = NULL; status = GetProcessImagename(Process, &ProcessImage); if ( !NT_SUCCESS( status ) ) < goto PROCESS_LINK_DEREF; >// generate some event for our log GenerateEvent( ProcessImage, data ); PROCESS_LINK_DEREF: ObDereferenceObject(Process); LOCK_RELEASE: // release lock KeReleaseSpinLock(&SharedDataLock, OriginalIrql); return status; >

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

Уже увидели ошибку в данном фрагменте?

PsLookupProcessByProcessId() – требует соблюдения условия: IRQL

Так что, подобный код будет часто выдавать BSOD с кодом ошибки IRQL_NOT_LESS_OR_EQUAL.

Irql not less or equal что это

�� На вашем ПК возникла проблема

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

То есть, переписать код — вот так:

KSPIN_LOCK SharedDataLock; VOID SetIrql(_In_ KIRQL Irql) < if ( KeGetCurrentIrql() >Irql ) KeLowerIrql(Irql); else if ( KeGetCurrentIrql() < Irql ) KzRaiseIrql(Irql); >NTSTATUS SomeFunction(_In_ HANDLE ProcessId) < KIRQL OriginalIrql; NTSTATUS status = STATUS_UNSUCCESSFUL; // lock shared data access KeAcquireSpinLock(&SharedDataLock, &OriginalIrql); // some code, which works with shared data PVOID data = GetProcessSharedData(ProcessId); NT_ASSERT("GetProcessSharedData() must always return shared data.", data); SetIrql(APC_LEVEL); PEPROCESS Process = NULL; // next we need to get process image name status = PsLookupProcessByProcessId( ProcessId, &Process ); SetIrql(DISPATCH_LEVEL); if ( !NT_SUCCESS( status ) ) < goto LOCK_RELEASE; >PUNICODE_STRING ProcessImage = NULL; status = GetProcessImagename(Process, &ProcessImage); if ( !NT_SUCCESS( status ) ) < goto PROCESS_LINK_DEREF; >// generate some event for our log GenerateEvent( ProcessImage, data ); PROCESS_LINK_DEREF: ObDereferenceObject(Process); LOCK_RELEASE: // release lock KeReleaseSpinLock(&SharedDataLock, OriginalIrql); return status; >

Вот теперь то, всё работает достаточно стабильно. Но, на самом деле это не так. Данный код только хорошо маскирует проблему, снижая шансы её проявления до минимума, но в 1 из 1000 случаев, она всё же всплывёт, а вы будет рвать на себе волосы, пытаясь понять в чём же ошибка.

И тут нужно вспомнить одно из правил написания драйверов, а именно:
«Понижать IRQL можно только в том случае, если вы его собственноручно повышали, и только до его предыдущего значения!»

Если какой-либо код вызвал вашу функцию на IRQL = APC_LEVEL, то вы не имеете права опустить его ниже данного уровня. Вы можете поднять IRQL до DISPATCH_LEVEL, потом опустить обратно до APC_LEVEL, но не ниже.

Таким образом, более приемлемым вариантом кода, будет:

KSPIN_LOCK SharedDataLock; _IRQL_requires_max_(APC_LEVEL) NTSTATUS SomeFunction(_In_ HANDLE ProcessId) < NTSTATUS status = STATUS_UNSUCCESSFUL; PEPROCESS Process = NULL; // next we need to get process image name status = PsLookupProcessByProcessId( ProcessId, &Process ); if ( !NT_SUCCESS( status ) ) < goto EXIT_ROUTINE; >PUNICODE_STRING ProcessImage = NULL; status = GetProcessImagename(Process, &ProcessImage); if ( !NT_SUCCESS( status ) ) < goto PROCESS_LINK_DEREF; >// lock shared data access KeAcquireSpinLock(&SharedDataLock, &OriginalIrql); // some code, which works with shared data PVOID data = GetProcessSharedData(ProcessId); NT_ASSERT("GetProcessSharedData() must always return shared data.", data); // generate some event for our log GenerateEvent( ProcessImage, data ); // release lock KeReleaseSpinLock(&SharedDataLock, OriginalIrql); PROCESS_LINK_DEREF: ObDereferenceObject(Process); EXIT_ROUTINE: return status; > 

А вспомогательные функции по типу SetIrql() из 2-го примера, в принципе не являются адекватными с точки зрения интерфейса, т.к. при проектировании отдельных методов в вашем драйвере, важно продумывать ограничения накладываемые на предусловия вызова вашей функции.

Для описания данных предусловий, удобно использовать аннотации SAL, их список вы можете посмотреть тут:

Также Microsoft предоставляет небольшой whitepaper(в самом низу статьи) по управлению приоритетами потоков в ядре, и более подробно рассказывает некоторые тонкости по работе с ними:

Если же, вам всё-таки нужно каким-либо образом вызвать какое-либо Api, требующее более низких значений IRQL, то одним из вариантов решения данной проблемы могут стать WorkItem’ы. Но о них, я расскажу уже в другой статье.

Руководство по “IRQL Не меньше или равна” синий экран смерти ошибки A Guide to the “IRQL Not Less Or Equal” Blue Screen of Death Error

Irql not less or equal что это

Эта статья является частью серии, посвященной синим экранам смерти. Синий экран смерти (BSoD) – это экран ошибки, который вы видите, когда Windows имеет серьезную проблему. Он останавливает ПК и отображает очень важную информацию.

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

IRQL_NOT_LESS_OR_EQUAL

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

Проблемы с драйверами

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

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

Отключение определенного драйвера сложнее, но вот как вы это делаете.

Отключить драйвер проблемы

Чтобы отследить конкретный драйвер проблемы, вам нужно запустить Driver Verifier, приложение, входящее в состав Windows.

  1. Нажмите кнопку Пуск
  2. Введите верификатор в поле и нажмите Enter.
  3. Выберите « Создать стандартные параметры» , затем нажмите « Далее» , затем выберите « Автоматически выбирать все драйверы, установленные на этом компьютере».
  4. Нажмите « Далее» , затем « Готово»
  5. Перезагрузите компьютер, и вы увидите список драйверов, которые будут проверены во время запуска. Если есть неисправный драйвер, вы получите BSOD с соответствующим сообщением об ошибке

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

Чтобы отключить драйвер, как только вы его определили:

  1. Перезагрузите компьютер в безопасном режиме , чтобы избежать каких-либо дополнительных синих экранов смерти, пока вы пытаетесь решить проблему
  2. Нажмите кнопку Пуск
  3. Нажмите Панель управления
  4. Нажмите Диспетчер устройств
  5. Нажмите стрелку рядом с отдельными устройствами, щелкните правой кнопкой мыши на устройстве и выберите « Свойства».
  6. нажмите « Сведения», чтобы увидеть имя драйвера. Если вы видите какие-либо устройства с желтым восклицательным знаком, вы на правильном пути, но это не обязательно будет иметь место
  7. Кроме того, попробуйте сделать CTRL + F на рабочем столе Windows для имени драйвера, чтобы увидеть, в какой папке он находится; это даст представление о том, к какому устройству принадлежит драйвер
  8. После того как вы найдете драйвер для нарушителя, нажмите « Удалить» на том же экране «Свойства»
  9. Windows попытается переустановить сам драйвер из информации, которую он предоставляет из Интернета. Это называется Plug and Play. Разрешите это сделать
  10. Запустите Driver Reviver, чтобы обновить новый драйвер до последней версии

Запустить драйвер Reviver

В качестве альтернативы сначала запустите Driver Reviver и посмотрите, не заботится ли об обновлении драйверов до последней версии.

Неисправная служба Windows

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

Irql not less or equal что это

Запуск Windows Restore приведет к удалению всех следов приложения.

Дополнительная информация от Microsoft

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

Похожие статьи

  • Irql not less or

    Нажмите на звезду, чтобы оценить! IRQL NOT LESS OR EQUAL – Fix for Windows 10, 11, XP, Vista, 7, 8 Get the fix for the error IRQL NOT LESS OR EQUAL on…

  • Irql not less or equal как исправить

    Чтобы компьютер автоматически искал обновленные драйверы, выберите этот параметр в раскрывающемся меню. Текущий шаг мастера — поиск новых драйверов в…

  • Irlq not less or equal windows 10

    К счастью, ошибку «IRQL_not_less_or_equal» легко исправить, и если обновление Windows не решило проблему, то один из упомянутых ниже методов наверняка…

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Что будем искать? Например,Человек

Мы в социальных сетях