વિન્ડોઝમાં IRQL (ઇન્ટરપ્ટ રિક્વેસ્ટ લેવલ) શું છે અને તે BSOD સાથે કેવી રીતે સંબંધિત છે?

છેલ્લો સુધારો: 01/10/2025
લેખક: આઇઝેક
  • IRQL એક્ઝેક્યુશન પ્રાથમિકતાઓને વ્યાખ્યાયિત કરે છે અને ઇન્ટરપ્ટ્સને લેવલ દ્વારા માસ્ક કરે છે, DISPATCH ની ઉપર તે IRQL ને આદેશ આપે છે, થ્રેડ પ્રાથમિકતાને નહીં.
  • બીએસઓડી 0xA/0xD1 સામાન્ય રીતે ઉચ્ચ IRQL પર પેજેબલ અથવા અમાન્ય મેમરીની ઍક્સેસ અને ખોટા સરનામાં અથવા પેજેબલ કોડને કારણે થાય છે.
  • WinDbg અને ડ્રાઇવર વેરિફાયર મુખ્ય છે: !analyze, !irql, ln, .trap, !pool, !address નો ઉપયોગ કરો અને પરિમાણો 1, 3 અને 4 ની તપાસ કરો.
  • En ડ્રાઇવરો, ઉચ્ચ IRQL પર પેજ ફોલ્ટ અટકાવે છે, નોન-પેજ્ડ મેમરી અને સ્પિન લોકનો ઉપયોગ કરે છે; વપરાશકર્તા માટે, સમસ્યારૂપ ડ્રાઇવરોને અપડેટ/આઇસોલેટ કરે છે.

irq

જો તમે ક્યારેય વાદળી સ્ક્રીન જોઈ હોય જેમાં સંદેશાઓ હોય જેમ કે IRQL_NOT_LESS_OR_EQUAL o ડ્રાઇવર_આઇઆરક્યુએલ_ઓછું_અથવા_સમાન નહીં, તમે કદાચ એક એવો ખ્યાલ જોયો હશે જે ડ્રાઇવરોની દુનિયાની બહાર બહુ ઓછો જાણીતો છે: IRQL (ઇન્ટરપ્ટ રિક્વેસ્ટ લેવલ). માં વિન્ડોઝ, જ્યારે સિસ્ટમ ચોક્કસ થ્રેશોલ્ડથી ઉપર હોય ત્યારે થ્રેડ પ્રાધાન્યતા કરતાં આ સ્તરનું વિક્ષેપ પ્રાથમિકતા અગ્રતા લે છે, અને આના સીધા પરિણામો સ્થિરતા પર પડે છે.

આગળની પંક્તિઓમાં તમને મળશે ઉના સંપૂર્ણ માર્ગદર્શિકા અને સ્પેનિશ ભાષામાં સ્પેનિશમાં IRQL શું છે, તે કેવી રીતે કાર્ય કરે છે તે વિશે, તે વાદળી સ્ક્રીન કેમ ટ્રિગર કરે છે, WinDbg સાથે સમસ્યાનું નિદાન કેવી રીતે કરવું, અને શું કરવું, જો તમે ભૂલનો અનુભવ કરી રહ્યા છો અથવા કર્નલ-મોડ ડ્રાઇવરો વિકસાવી રહ્યા છો. ચાલો કામ પર ઉતરીએ.

વિન્ડોઝમાં IRQL (ઇન્ટરપ્ટ રિક્વેસ્ટ લેવલ) શું છે?

વિન્ડોઝમાં, IRQL પ્રાથમિકતા વ્યાખ્યાયિત કરે છે હાર્ડવેર જ્યાં પ્રોસેસર કાર્ય કરે છે કોઈપણ સમયે. વિન્ડોઝ ડ્રાઈવર મોડેલ (WDM) માં, નીચા IRQL પર ચાલતા કોડને ઉચ્ચ IRQL પર ચાલતા કોડ દ્વારા વિક્ષેપિત કરી શકાય છે. હકીકતમાં, એક જ મલ્ટી-કોર કમ્પ્યુટર પર, દરેક CPU અલગ IRQL પર હોઈ શકે છે, જે સિંક્રનાઇઝેશનને જટિલ બનાવે છે.

એક મુખ્ય નિયમ છે: જ્યારે CPU PASSIVE_LEVEL થી ઉપરના IRQL પર ચાલી રહ્યું હોય, ત્યારે તેને ફક્ત તેનાથી પણ વધુ ઊંચા IRQL પરની પ્રવૃત્તિ દ્વારા જ પ્રીમ્પ્ટ કરી શકાય છે.આ યુઝર કોડ, કર્નલ ફંક્શન્સ, ડિફર્ડ કોલર્સ (DPCs) અને ડિવાઇસ ઇન્ટરપ્ટ સર્વિસ રૂટિન (ISRs) વચ્ચે સહઅસ્તિત્વનું આયોજન કરે છે.

ભૂલ 0x0000000A
સંબંધિત લેખ:
ભૂલ 0x0000000a (મૃત્યુની વાદળી સ્ક્રીન). 6 ઉકેલો

સ્તરો અને પ્રાથમિકતાઓ: PASSIVE_LEVEL, APC_LEVEL, DISPATCH_LEVEL અને DIRQL

સામાન્ય રીતે, x86 પર, 0 અને 31 વચ્ચેના IRQL મૂલ્યોનો ઉપયોગ થાય છે; x64 પર, 0 અને 15 વચ્ચેવ્યવહારુ અર્થ એ જ છે: IRQL 0 (PASSIVE_LEVEL) એ છે જ્યાં સામાન્ય વપરાશકર્તા કોડ અને ઘણા ડ્રાઇવર કાર્યો એક્ઝિક્યુટ થાય છે; APC અને પેજ ખામીઓ તેઓ સામાન્ય રીતે IRQL 1 (APC_LEVEL) સાથે મેપ કરવામાં આવે છે; IRQL 2 (DISPATCH_LEVEL) થ્રેડ શેડ્યૂલર અને DPC ને સમાવે છે. DISPATCH_LEVEL ની ઉપર ઉપકરણ વિક્ષેપો (DIRQL તરીકે ઓળખાય છે) અને HIGH_LEVEL જેવા અન્ય આંતરિક ઉપયોગો માટે આરક્ષિત સ્તરો છે.

ડ્રાઇવર ઇકોસિસ્ટમમાં, DISPATCH_LEVEL પર ઘણા સામાન્ય રૂટિન ચાલે છે: ઉદાહરણ તરીકે, DPC અને StartIo. આ ડિઝાઇન ખાતરી કરે છે કે જ્યારે તેમાંથી એક આંતરિક કતાર અથવા અન્ય શેર કરેલા સંસાધનોને સ્પર્શ કરી રહ્યું હોય, ત્યારે તે જ સ્તર પરનો બીજો રૂટિન તે CPU પર તેને પ્રીમ્પ્ટ કરતું નથી, કારણ કે પ્રીમ્પ્શન નિયમ ફક્ત ઉચ્ચ સ્તરો પર જ વિક્ષેપોને મંજૂરી આપે છે.

DISPATCH_LEVEL અને પ્રોફાઇલિંગ/ઉચ્ચ સ્તરો વચ્ચે જગ્યા છે દરેક ઉપકરણના હાર્ડવેર ઇન્ટરપ્ટ્સ (DIRQL)ઉપકરણનું IRQL અન્ય ઉપકરણો કરતાં તેની પ્રાથમિકતા નક્કી કરે છે. WDM ડ્રાઇવર IRP_MN_START_DEVICE સાથે IRP_MJ_PNP દરમિયાન આ IRQL મેળવે છે. આ ઉપકરણ IRQL વૈશ્વિક, નિશ્ચિત મૂલ્ય નથી, પરંતુ ચોક્કસ ઇન્ટરપ્ટ લાઇન સાથે સંકળાયેલ મૂલ્ય છે.

IRQL વિરુદ્ધ થ્રેડ પ્રાધાન્યતા

ખ્યાલોને ગૂંચવશો નહીં તે સલાહભર્યું છે: થ્રેડ પ્રાધાન્યતા નક્કી કરે છે કે શેડ્યૂલર ક્યારે પ્રીમ્પ્ટ કરે છે અને કયો થ્રેડ એક્ઝિક્યુટ કરે છે; IRQL એ નિયંત્રિત કરે છે કે કયા પ્રકારની પ્રવૃત્તિ એક્ઝિક્યુટ કરી શકાય છે અને કયા ઇન્ટરપ્ટ્સ માસ્ક કરેલા છે. DISPATCH_LEVEL ઉપર, કોઈ થ્રેડ સ્વિચિંગ નથી: તે IRQL છે જે થ્રેડ પ્રાથમિકતાને નહીં, પણ નિયંત્રિત કરે છે.

  વાલ્વ ફ્રેમોન્ટ: લીક થયેલા સ્પેક્સ અને મુખ્ય સંકેતો

IRQL અને પેજિંગ: તમારે શું ન કરવું જોઈએ

IRQL વધારવાની તાત્કાલિક અસર એ છે કે સિસ્ટમ પૃષ્ઠ ખામીઓને સંભાળી શકાતી નથી. સુવર્ણ નિયમ: DISPATCH_LEVEL પર અથવા તેનાથી ઉપર ચાલતો કોડ પૃષ્ઠ ખામીઓનું કારણ બની શકતો નથી. વ્યવહારમાં, આનો અર્થ એ છે કે તે દિનચર્યાઓ અને તેઓ જે ડેટાને સ્પર્શ કરે છે નોન-પેજ્ડ મેમરીમાં રહેવું જોઈએ. વધુમાં, ચોક્કસ કર્નલ સહાયકો IRQL ના આધારે તેમના ઉપયોગને પ્રતિબંધિત કરે છે: ઉદાહરણ તરીકે, KeWaitForSingleObject DISPATCH_LEVEL ને ફક્ત ત્યારે જ કૉલ કરી શકાય છે જો તમે અવરોધિત ન કરી રહ્યા હોવ (શૂન્ય સમયસમાપ્તિ), અને બિન-શૂન્ય સમયસમાપ્તિ માટે, તમારે DISPATCH_LEVEL થી નીચે હોવું જરૂરી છે.

IRQL નું ગર્ભિત અને સ્પષ્ટ નિયંત્રણ

મોટાભાગે, સિસ્ટમ પોતે જ તમારા રૂટિનને યોગ્ય IRQL પર બોલાવે છે. તેમણે શું કરવું જોઈએ તે માટે. IRP માટે ડિસ્પેચ રૂટિન PASSIVE_LEVEL પર ચાલે છે (તેઓ કોઈપણ સહાયકને બ્લોક કરી શકે છે અથવા કૉલ કરી શકે છે), StartIo અને DPC શેર કરેલી કતારોને સુરક્ષિત રાખવા માટે DISPATCH_LEVEL પર ચાલે છે, અને ISR DIRQL પર ચાલે છે.

જો તમારે તેને સ્પષ્ટપણે નિયંત્રિત કરવાની જરૂર હોય, તમે IRQL ને વધારી અને ઘટાડી શકો છો KeRaiseIrql y KeLowerIrqlએક ખૂબ જ ઉપયોગમાં લેવાતો શોર્ટકટ છે: KeRaiseIrqlToDpcLevel() પાછલું IRQL પરત કરે છે અને તમને DISPATCH_LEVEL પર છોડી દે છે. મહત્વપૂર્ણ: સિસ્ટમ દ્વારા તમને કૉલ કરવામાં આવ્યો ત્યારે IRQL ને તેના મૂલ્યથી ક્યારેય નીચે ન લાવો; તે સિંક્રનાઇઝેશન તોડી નાખવાથી ખૂબ જ ગંભીર રેસ વિન્ડો ખુલી શકે છે.

IRQL-સંબંધિત વાદળી સ્ક્રીન ભૂલો: IRQL_NOT_LESS_OR_EQUAL અને DRIVER_IRQL_NOT_LESS_OR_EQUAL

irqlLanguage

આ સમસ્યાઓ સાથે સંકળાયેલા બે ક્લાસિક બગ ચેક છે IRQL_NOT_LESS_OR_EQUAL (0xA) y ડ્રાઇવર_આઇઆરક્યુએલ_ઓછું_અથવા_સમાન નહીં (0xD1)બંને ખૂબ ઊંચા IRQL પર પેજેબલ (અથવા અમાન્ય) સરનામાંને ઍક્સેસ કરવાનો પ્રયાસ સૂચવે છે. આ સામાન્ય રીતે ડ્રાઇવરો દ્વારા ખોટા સરનામાંનો ઉપયોગ, ખરાબ પોઇન્ટરનો સંદર્ભ ન આપવા અથવા અયોગ્ય સ્તરે પેજેબલ કોડ ચલાવવાને કારણે થાય છે.

ના ચોક્કસ કિસ્સામાં ડ્રાઇવર_આઇઆરક્યુએલ_ઓછું_અથવા_સમાન નહીં (0x000000D1), પરિમાણો ખૂબ જ માહિતીપ્રદ છે: 1) સંદર્ભિત મેમરી સરનામું; 2) તે સમયે IRQL; 3) ઍક્સેસ પ્રકાર (0 વાંચન, 1 લખાણ, 2/8 એક્ઝિક્યુટ); 4) મેમરીનો સંદર્ભ આપતી સૂચનાનું સરનામું. ડીબગર સાથે તમે ઉપયોગ કરી શકો છો ln પરિમાણ 4 પર માટે નજીકના પ્રતીકની યાદી બનાવો અને જાણો કે કયું કાર્ય ચાલી રહ્યું હતું.

ધ્યાનમાં રાખવાના સામાન્ય કારણો

ચોક્કસ કોડ ઉપરાંત, એવા પેટર્ન છે જે પુનરાવર્તિત થાય છે. અમાન્ય પોઇન્ટરને DISPATCH_LEVEL અથવા તેથી વધુ પર ડિફરન્સ કરી રહ્યું છે આ આપત્તિ માટે એક ખાતરીપૂર્વકનો ઉપાય છે. તે સ્તર પર પેજેબલ ડેટાને ઍક્સેસ કરવાથી, અથવા પેજેબલ કોડ (દા.ત., પેજેબલ તરીકે ચિહ્નિત થયેલ ફંક્શન) ને એક્ઝિક્યુટ કરવાથી પણ બગ ચેક શરૂ થાય છે.

અન્ય સામાન્ય કેસોમાં શામેલ છે પહેલાથી ડાઉનલોડ થયેલા બીજા ડ્રાઇવરમાં ફંક્શન કૉલ કરો (ડેંગલિંગ ફંક્શન પોઇન્ટર), અથવા પરોક્ષ રીતે અમાન્ય ફંક્શન પોઇન્ટર દ્વારા બોલાવવામાં આવે છે. ઘણીવાર, જો સિસ્ટમ મોડ્યુલ ઓળખવામાં સક્ષમ હોય, તો તમે તેનું નામ વાદળી સ્ક્રીન પર જ જોશો, અને તે પણ સાચવેલ છે KiBugCheckDriver, સાથે સુલભ dx KiBugCheckDriver WinDbg માંથી.

એક વ્યવહારુ વિગત: મોટાભાગના D1/A માં, વાસ્તવિક સમસ્યા IRQL પોતે નથી., પરંતુ સંદર્ભિત મેમરી સરનામું. તેથી જ નિદાન પર ધ્યાન કેન્દ્રિત કરવા માટે પરિમાણો 1, 3 અને 4 મહત્વપૂર્ણ છે.

WinDbg સાથે ડાયગ્નોસ્ટિક્સ: ઉપયોગી આદેશો અને પેરામીટર વાંચન

આ કેસો પર કામ કરવા માટે, WinDbg એ મુખ્ય સાધન છે, અને જો BSOD ઉલ્લેખ કરે છે ntoskrnl.exe આ માહિતી કર્નલ સબસિસ્ટમમાં ખામી છે કે કેમ તે અંગે ઘણું માર્ગદર્શન પૂરું પાડે છે. શરૂઆત કરો !analyze -v બગ ચેક, સ્ટેક અને જો તમે નસીબદાર છો, તો તેમાં સામેલ મોડ્યુલનો સારાંશ મેળવવા માટે. જો ડમ્પમાં કેપ્ચર ફ્રેમ શામેલ હોય, .trap તમને નિષ્ફળ CPU ના સંદર્ભમાં મૂકે છે.

આદેશો ઢગલા તરીકે k, kb, kc, kd, kp, kP, kv તેઓ તમને બેકટ્રેસ વિગતોના વિવિધ સ્તરો બતાવે છે. સાથે ln પરિમાણ 4 પર તમે છોડી શકો છો સ્મૃતિનો સંદર્ભ આપતી સૂચના માટે અને નજીકનું પ્રતીક મેળવો. અને જો તમને શંકા હોય કે ઇન્ટરપ્ટ પહેલા પ્રાથમિકતા સ્તર ચાલી રહ્યું છે, !irql તમને લક્ષ્ય પ્રોસેસર માટે સાચવેલ IRQL બતાવે છે (દા.ત. DISPATCH_LEVEL).

  વિન્ડોઝ પર SCRCPY વડે એન્ડ્રોઇડ સ્ક્રીનને કેવી રીતે નિયંત્રિત કરવી

પરિમાણ 1 ની દિશાનું વિશ્લેષણ કરવા માટે, !pool તે તમને કહેશે કે તે પેજ્ડ પૂલનું છે કે નહીં; !address y !pte તે વિસ્તારના મેમરી મેપિંગમાં ઊંડાણપૂર્વક જાઓ. તમે ઉપયોગ કરી શકો છો મેમરી ડિસ્પ્લે આદેશો જે સામગ્રીને ઍક્સેસ કરવાનો પ્રયાસ કરવામાં આવ્યો હતો તેનું નિરીક્ષણ કરવા માટે. અંતે, u, ub, uu તમને પેરામીટર 4 ના સરનામાંની આસપાસ ડિસએસેમ્બલ કરવાની મંજૂરી આપે છે.

ભૂલશો નહીં lm t n લોડ કરેલા મોડ્યુલોની યાદી બનાવવા માટે y !memusage યાદશક્તિની સામાન્ય સ્થિતિ માટે. જો KiBugCheckDriver કંઈક છે, dx KiBugCheckDriver તે યુનિકોડ મોડ્યુલનું નામ પરત કરશે: એક લાક્ષણિક ઉદાહરણમાં, "Wdf01000.sys" ને બગ ચેક દરમિયાન સામેલ ડ્રાઇવર તરીકે જોવામાં આવ્યું હતું.

સિસ્ટમ ટૂલ્સ: ડ્રાઇવર વેરિફાયર, ઇવેન્ટ વ્યૂઅર અને ડાયગ્નોસ્ટિક્સ

El ડ્રાઇવર વેરિફાયર રીઅલ ટાઇમમાં ડ્રાઇવરોના વર્તનની તપાસ કરે છે અને ખોટા સંસાધન વપરાશ (જેમ કે પૂલ) શોધે છે ત્યારે ભૂલો પર દબાણ કરે છે, કોડના સમસ્યારૂપ ક્ષેત્રને અલગ કરવા માટે અપવાદ ઉભો કરે છે. તે સાથે લોન્ચ કરવામાં આવે છે verifier થી આદેશ પ્રોમ્પ્ટ અને વધુ પડતો ઓવરહેડ ઉમેરવાનું ટાળવા માટે શક્ય તેટલા નાના ડ્રાઇવરોનો સેટ પસંદ કરવાની સલાહ આપવામાં આવે છે.

જો તમે તમારી જાતને WinDbg સાથે ન જુઓ, મૂળભૂત પગલાં લાગુ કરો: ચોક્કસ ઉપકરણ/ડ્રાઇવર તરફ નિર્દેશ કરતી ભૂલો માટે સિસ્ટમ લોગ ઇન ઇવેન્ટ વ્યૂઅર તપાસો; વાદળી સ્ક્રીન દ્વારા ઉલ્લેખિત ડ્રાઇવરને અપડેટ અથવા અક્ષમ કરો; તમારા Windows ના સંસ્કરણ સાથે હાર્ડવેર સુસંગતતા ચકાસો; અને જો તમને RAM ની શંકા હોય તો Windows મેમરી ડાયગ્નોસ્ટિકનો ઉપયોગ કરો. આ ક્રિયાઓ, સરળ હોવા છતાં, તેઓ મોટી સંખ્યામાં કેસ ઉકેલે છે.

વાસ્તવિક જીવનના કિસ્સાઓ: જ્યારે BSOD રેન્ડમ લાગે છે

વિન્ડોઝ 10 પ્રો (AMD Ryzen 5 3400G CPU) ધરાવતો વપરાશકર્તા, જીપીયુ NVIDIA GeForce GTX 1660 Ti અને Gigabyte B450 AORUS PRO WIFI બોર્ડ, 16 GB RAM) ને સમયાંતરે "IRQL_LESS_OR_NOT_EQUAL" સ્ક્રીનનો અનુભવ થઈ રહ્યો હતો. મેં પહેલાથી જ આવશ્યક ડ્રાઇવરો (નેટવર્ક, ગ્રાફિક્સ) અપડેટ કર્યા હતા, બધા વિન્ડોઝ અપડેટ્સ ઇન્સ્ટોલ કર્યા હતા, અને મેમરી ટૂલ ચલાવ્યું હતું, આ બધું કોઈ સમસ્યા શોધ્યા વિના.

આવા સંજોગોમાં, આગળનું પગલું WinDbg સાથે ડમ્પ્સનું વિશ્લેષણ કરવાનું છે. અને પેટર્ન શોધો: જ્યારે તે પડે છે ત્યારે પ્રક્રિયાઓ સામેલ હોય છે (ઉદાહરણ તરીકે, explorer.exe), ગ્રાફિકલ ઇન્ટરફેસ મોડ્યુલ્સ (win32kfull.sys) અને કાર્યો જેમ કે xxxProcessNotifyWinEvent સ્ટેકમાં દેખાય છે. જોકે આ મોડ્યુલ વિન્ડોઝ છે, ટ્રિગર ઘણીવાર તૃતીય-પક્ષ ડ્રાઇવર (ગ્રાફિક્સ, ઇનપુટ, ઓવરલે, કેપ્ચર કાર્ડ્સ) હોય છે જે અયોગ્ય IRQL પર મેમરીનો ઉપયોગ કરે છે અને ખામી અંદર ઉદ્ભવે છે win32k.

અહીં વ્યવહારુ ભલામણ એ છે કે ઓવરલે સોફ્ટવેરને અસ્થાયી રૂપે અક્ષમ કરો (કેપ્ચર, GPU OSD), આક્રમક સોફ્ટવેર પેરિફેરલ ડ્રાઇવરો (મેક્રો સાથે ઉંદર/કીબોર્ડ), અને ગ્રાફિક્સ ડ્રાઇવરોના બીટા વર્ઝન, અને તેને સંકુચિત કરો. શંકાસ્પદો પર ડ્રાઇવર વેરિફાયરનો ઉપયોગ સ્પષ્ટ સ્ટેક સાથે સમસ્યાને સંકુચિત કરવામાં મદદ કરી શકે છે.

એક ખૂબ જ સામાન્ય નેટવર્ક પેટર્ન: ndis.sys હંમેશા ગુનેગાર નથી હોતું.

બીજો એક લાક્ષણિક કિસ્સો: ndis.sys સાથે સ્ક્રીનશોટ (વિન્ડોઝ નેટવર્ક સ્તર). વાસ્તવિક કમ્પ્યુટર પર, સિસ્ટમ સ્ટાર્ટઅપ થતાં જ તરત જ ક્રેશ થઈ જશે. વ્યવહારુ ઉકેલ એ હતો કે બુટ ઇન કરવું સલામત મોડ નેટવર્ક કાર્યો વિના, ખોલો ડિવાઇસ મેનેજર અને સમસ્યાને અલગ કરવા માટે "નેટવર્ક એડેપ્ટર્સ" હેઠળ એડેપ્ટર્સને અક્ષમ કરો.

તે ટીમમાં એક હતો રીઅલટેક PCIe GBE ફેમિલી કંટ્રોલર અને એથેરોસ AR5007Gબંનેને નિષ્ક્રિય કરીને, એવું જાણવા મળ્યું કે વાસ્તવિક કારણ athrx.sys (એથેરોસ), જોકે વાદળી સ્ક્રીનનો ઉલ્લેખ છે ndis.sysડમ્પે આની પુષ્ટિ કરી: સ્ટેક પસાર થયો ndis!NdisFreeTimerObject પરંતુ દોષિત મોડ્યુલ હતું athrx.sysઅંતિમ સુધારો હતો ડિવાઇસને અનઇન્સ્ટોલ કરો અને અપડેટેડ ઓફિશિયલ ડ્રાઇવર્સ ઇન્સ્ટોલ કરો. એથેરોસ ઉત્પાદકની વેબસાઇટ પરથી. નૈતિક: BSOD માં ઉલ્લેખિત મોડ્યુલ અસરગ્રસ્ત સબસિસ્ટમનો ભાગ હોઈ શકે છે, સ્ત્રોતનો નહીં.

  વિન્ડોઝ 11 પર સ્ટેપ બાય સ્ટેપ Arduino IDE કેવી રીતે ઇન્સ્ટોલ કરવું

વપરાશકર્તાઓ માટે લાક્ષણિક સપોર્ટ પ્રતિભાવ અને ઝડપી પગલાં

વાસ્તવિક સહાય વિનિમયમાં, એક ટેકનિશિયને જવાબ આપ્યો: "અસુવિધા બદલ હું દિલગીર છું. તે ડ્રાઇવર, મેમરી અથવા એન્ટિવાયરસ સમસ્યા હોઈ શકે છે. કૃપા કરીને તમારા ડ્રાઇવરો અપડેટ કરો અને, જો તે ચાલુ રહે, તો મેમરી ડાયગ્નોસ્ટિક ચલાવો."આ મૂળભૂત પણ માન્ય સલાહ છે; જોકે, જો ભૂલો ચાલુ રહે, તો વેરિફાયર અને ડમ્પ વિશ્લેષણ સાથે આગળ વધવું એ સારો વિચાર છે.

બિન-તકનીકી વપરાશકર્તાઓ માટે, એક વાજબી પ્રોટોકોલ આ હશે: ૧) સિસ્ટમ ઇવેન્ટ્સ તપાસો, ૨) કી ડ્રાઇવર્સ અપડેટ કરો (ચિપસેટ/નેટવર્ક/ગ્રાફિક્સ), ૩) રેમ તપાસો સંકલિત સાધન સાથે, 4) પરીક્ષણ બુટ કર્નલ/GUI માં હુક્સ દાખલ કરતા તૃતીય-પક્ષ સોફ્ટવેર વિના સાફ કરો, અને 5) જો કંઈ સ્પષ્ટ ન હોય તો તૃતીય-પક્ષ ડ્રાઇવરો પર વેરિફાયરનો ઉપયોગ કરો.

ડ્રાઇવર ડેવલપર્સ માટે શ્રેષ્ઠ પ્રથાઓ

જો તમે વિકાસ કરી રહ્યા છો અને તમને D1/A મળે છે, તો તપાસો કે ચાલી રહેલ રૂટિન પેજેબલ તરીકે ચિહ્નિત થયેલ નથી DISPATCH_LEVEL અથવા તેથી વધુ પર ચાલતી વખતે પેજેબલ ફંક્શન્સને કૉલ કરશો નહીં. આમાં પેજવાળા વિભાગોમાં ડેટાના સંદર્ભો ટાળવા અને DDK માં વર્ણવેલ કર્નલ હેલ્પર્સ માટે IRQL પ્રતિબંધોનું પાલન કરવાનો સમાવેશ થાય છે.

શેર કરેલ ડેટાને સિંક્રનાઇઝ કરવા માટે, "હંમેશા સમાન ઉચ્ચ IRQL પર શેર કરેલ ડેટા ઍક્સેસ કરો" નિયમ લાગુ કરો. અને જ્યારે યોગ્ય હોય ત્યારે સ્પિન લોકનો ઉપયોગ કરો. મલ્ટિપ્રોસેસર પર, ફક્ત IRQL વિવિધ CPU વચ્ચે બાકાત રાખવાની ગેરંટી આપતું નથી; સ્પિન લોક IRQL (DISPATCH_LEVEL સુધી) વધારે છે અને કોરો વચ્ચે ઍક્સેસનું સંકલન કરે છે. જો તમારે સંવેદનશીલ હાર્ડવેર રજિસ્ટર પર કામ કરવાની જરૂર હોય, KeSynchronizeExecution તમને યોગ્ય DIRQL પર મહત્વપૂર્ણ વિભાગો ચલાવવામાં મદદ કરે છે.

જ્યારે યોજનામાં IRQL વધારવાની જરૂર હોય, યૂુએસએ KeRaiseIrqlToDpcLevel DISPATCH_LEVEL માટે અથવા KeRaiseIrql કાળજીપૂર્વક, પાછલા IRQL ને સાચવીને અને તેને બરાબર પુનઃસ્થાપિત કરીને KeLowerIrql. ઇનપુટ IRQL ની નીચે જાઓ, ફક્ત એક ક્ષણ માટે પણ, તે એક ગંભીર સિંક્રનાઇઝેશન ભૂલ છે..

ઇન્ટરપ્ટ્સ અને હાર્ડવેર સાથેનો સંબંધ

IRQL એ એક પદ્ધતિ છે જેના દ્વારા વિન્ડોઝ પ્રાથમિકતાઓ અને ચોક્કસ આંતરિક કાર્યોમાં વિક્ષેપ પાડવાના આદેશોઆર્કિટેક્ચરલ સ્તરે, તે "ઇન્ટરપ્ટ", "ઇન્ટરપ્ટ હેન્ડલર" અથવા "ઇન્ટરપ્ટ પ્રાયોરિટી લેવલ" જેવા ખ્યાલો સાથે સંબંધિત છે અને, ક્લાસિક પ્લેટફોર્મ પર, પ્રોગ્રામેબલ ઇન્ટરપ્ટ કંટ્રોલર (PIC)અન્ય સિસ્ટમોમાં, પ્રાથમિકતા નિયંત્રણ પદ્ધતિઓ દ્વારા વ્યક્ત કરવામાં આવે છે જેમ કે સ્પ્લ en યુનિક્સ; સામાન્ય વિચાર એક જ છે: કોણ કોને અટકાવી શકે છે.

અદ્યતન ડિબગીંગ ટિપ્સ

ડમ્પમાં જ્યાં સ્ટેક નિર્દેશ કરે છે win32kfull!xxxProcessNotifyWinEvent બગ ચેક 0xA/0xD1 સાથે, સંદર્ભનું નિરીક્ષણ કરો .process y .thread (જો ઉપલબ્ધ હોય તો), પ્રક્રિયાઓ જુઓ જેમ કે explorer.exe en !process 0 1 અને ઓવરલે અને GUI ઇન્ટરેક્શન ડ્રાઇવરો તપાસો. ઘણી વખત સમસ્યા તે તૃતીય પક્ષ દ્વારા દૂષિત મેમરી છે જે તે માર્ગ પર ઉભરી આવે છે.

IRQL ને તપાસવાનું ભૂલશો નહીં !irql, અને કોન્ટ્રાસ્ટ: જો તમે DISPATCH_LEVEL (2) પર છો અને પરિમાણ 3 વાંચન/લખણ/એક્ઝિક્યુટ સૂચવે છે પૃષ્ઠ પર, તમારી પાસે પહેલાથી જ સંકેત છે કે તે કેમ પડ્યું છે. તે સંકેતને પાર કરો ln ચોક્કસ કાર્ય મેળવવા માટે પરિમાણ 4 માં.

સમજો IRQL શું છે? અને તે કર્નલ એક્ઝેક્યુશનમાં કેવી રીતે બંધબેસે છે તે અવાજને સિગ્નલોથી અલગ કરવામાં મદદ કરે છે. જો તમે વપરાશકર્તા છો, તો ધ્યાન કેન્દ્રિત કરો ડ્રાઇવરો અને હાર્ડવેર (ડિફોલ્ટ રૂપે વેરિફાયર, ઇવેન્ટ્સ અને પરીક્ષણો સાથે). જો તમે વિકાસ કરો છો, તો IRQL, નોન-પેજ્ડ મેમરી અને સ્પિન લોક સાથે સિંક્રનાઇઝેશન માટેના નિયમોનું સખતપણે પાલન કરો. યોગ્ય સાધનો (WinDbg, વેરિફાયર) અને પરિમાણો (1, 3, અને 4) ના કાળજીપૂર્વક વાંચન સાથે, આ બગ ચેક્સ હવે રહસ્ય નથી રહ્યા. અને તે એવી સમસ્યાઓ બની જાય છે જેનો ઉકેલ પદ્ધતિસર લાવી શકાય છે.