- IRQL define prioridades de ejecución y enmascara interrupciones por nivel, por encima de DISPATCH manda el IRQL, no la prioridad de hilos.
- தி BSOD 0xA/0xD1 suelen deberse a accesos a memoria paginable o inválida a IRQL alto y a direcciones o código paginable incorrectos.
- WinDbg y Driver Verifier son claves: usa !analyze, !irql, ln, .trap, !pool, !address y examina parámetros 1, 3 y 4.
- En ஓட்டுனர்கள், evita page faults a IRQL alto, usa memoria no paginada y spin locks; en usuario, actualiza/aisla drivers problemáticos.
நீங்கள் எப்போதாவது ஒரு நீலத் திரையில் செய்திகளைப் பார்த்திருந்தால், IRQL_NOT_LESS_OR_EQUAL o டிரைவர்_IRQL_குறைவானது_அல்லது_சமம், seguramente te habrás topado con un concepto poco conocido fuera del mundo de los drivers: el IRQL (Interrupt Request Level). En விண்டோஸ், கணினி ஒரு குறிப்பிட்ட வரம்பை விட அதிகமாக இருக்கும்போது, இந்த அளவிலான குறுக்கீடு முன்னுரிமை நூல் முன்னுரிமையை விட முன்னுரிமை பெறுகிறது, மேலும் இது நிலைத்தன்மையில் நேரடி விளைவுகளை ஏற்படுத்துகிறது.
அடுத்த வரிகளில் நீங்கள் காண்பீர்கள் ஒரு முழுமையான வழிகாட்டி மற்றும் IRQL என்றால் என்ன, அது எவ்வாறு செயல்படுகிறது என்பது பற்றி ஸ்பெயினிலிருந்து ஸ்பானிஷ் மொழியில், அது ஏன் நீலத் திரைகளைத் தூண்டுகிறது, WinDbg இல் உள்ள சிக்கலை எவ்வாறு கண்டறிவது, நீங்கள் ஒரு பயனராக இருந்தாலும் சரி அல்லது கர்னல்-பயன்முறை இயக்கிகளை உருவாக்கினாலும் சரி என்ன செய்வது. வணிகத்திற்கு வருவோம்.
விண்டோஸில் IRQL (குறுக்கீடு கோரிக்கை நிலை) என்றால் என்ன?
விண்டோஸில், தி IRQL முன்னுரிமையை வரையறுக்கிறது வன்பொருள் ஒரு செயலி இயங்கும் இடத்தில் எந்த நேரத்திலும். விண்டோஸ் டிரைவர் மாடலுக்குள் (WDM), குறைந்த IRQL இல் இயங்கும் குறியீடு, அதிக IRQL இல் இயங்கும் குறியீட்டால் குறுக்கிடப்படலாம். உண்மையில், ஒரு மல்டி-கோர் கணினியில், ஒவ்வொரு CPUவும் வெவ்வேறு IRQL இல் இருக்கலாம், இது ஒத்திசைவை சிக்கலாக்குகிறது.
ஒரு முக்கிய விதி உள்ளது: ஒரு CPU, PASSIVE_LEVEL க்கு மேலே உள்ள IRQL இல் இயங்கும்போது, அதை விட உயர்ந்த IRQL இல் செயல்பாட்டால் மட்டுமே முன்கூட்டியே தடுக்க முடியும்.இது பயனர் குறியீடு, கர்னல் செயல்பாடுகள், ஒத்திவைக்கப்பட்ட அழைப்பாளர்கள் (DPCகள்) மற்றும் சாதன குறுக்கீடு சேவை நடைமுறைகள் (ISRகள்) ஆகியவற்றுக்கு இடையேயான சகவாழ்வை ஒழுங்கமைக்கிறது.
நிலைகள் மற்றும் முன்னுரிமைகள்: 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 மற்ற சாதனங்களை விட அதன் முன்னுரிமையை வரையறுக்கிறது. IRP_MJ_PNP இன் போது IRP_MN_START_DEVICE உடன் WDM இயக்கி இந்த IRQL ஐப் பெறுகிறது. இந்த சாதனம் IRQL என்பது உலகளாவிய, நிலையான மதிப்பு அல்ல, மாறாக ஒரு குறிப்பிட்ட குறுக்கீடு வரியுடன் தொடர்புடைய மதிப்பு.
IRQL vs. த்ரெட் முன்னுரிமை
கருத்துக்களை குழப்பாமல் இருப்பது நல்லது: திட்டமிடுபவர் எப்போது முன்கூட்டியே செயல்படுகிறார், எந்தத் தொடரை இயக்குகிறார் என்பதை நூல் முன்னுரிமை தீர்மானிக்கிறது.; எந்த வகையான செயல்பாட்டைச் செயல்படுத்தலாம் மற்றும் எந்த குறுக்கீடுகளை மறைக்க வேண்டும் என்பதை 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
இந்த சிக்கல்களுடன் தொடர்புடைய இரண்டு உன்னதமான பிழை சரிபார்ப்புகள் IRQL_குறைவானது_அல்லது_சமமானது (0xA) y இயக்கி_IRQL_குறைவானது_அல்லது_சமம் (0xD1)இரண்டுமே மிக அதிகமாக உள்ள IRQL இல் பக்கப்படுத்தக்கூடிய (அல்லது தவறான) முகவரியை அணுகுவதற்கான முயற்சியைக் குறிக்கின்றன. இது பொதுவாக இயக்கிகள் தவறான முகவரிகளைப் பயன்படுத்துதல், தவறான சுட்டிகளைக் குறிப்பிடுவதைத் தவிர்ப்பது அல்லது பொருத்தமற்ற நிலைகளில் பக்கப்படுத்தக்கூடிய குறியீட்டை செயல்படுத்துதல் ஆகியவற்றால் ஏற்படுகிறது.
இன் குறிப்பிட்ட வழக்கில் இயக்கி_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).
அளவுரு 1 இன் திசையை பகுப்பாய்வு செய்ய, !pool
அது ஒரு பக்கவாட்டுக் குளத்தைச் சேர்ந்ததா என்பதை உங்களுக்குத் தெரிவிக்கும்; !address
y !pte
அந்தப் பகுதியின் நினைவக வரைபடத்தை ஆராயுங்கள். நீங்கள் பயன்படுத்தலாம் நினைவக காட்சி கட்டளைகள் அணுக முயற்சித்த உள்ளடக்கத்தை ஆய்வு செய்ய. இறுதியாக, u
, ub
, uu
அளவுரு 4 இன் முகவரியைச் சுற்றி பிரிக்க உங்களை அனுமதிக்கிறது.
மறக்க வேண்டாம் lm t n
ஏற்றப்பட்ட தொகுதிக்கூறுகளைப் பட்டியலிட y !memusage
பொதுவான நினைவாற்றல் நிலைக்கு. என்றால் KiBugCheckDriver
ஏதோ ஒன்று இருக்கிறது, dx KiBugCheckDriver
இது யூனிகோட் தொகுதியின் பெயரைத் தரும்: ஒரு பொதுவான எடுத்துக்காட்டில், பிழை சரிபார்ப்பின் போது "Wdf01000.sys" இயக்கி சம்பந்தப்பட்டதாகக் காணப்பட்டது.
கணினி கருவிகள்: இயக்கி சரிபார்ப்பான், நிகழ்வு பார்வையாளர் மற்றும் கண்டறிதல்
El இயக்கி சரிபார்ப்பான் இயக்கிகளின் நடத்தையை நிகழ்நேரத்தில் ஆராய்ந்து, தவறான வள பயன்பாட்டை (பூல் போன்றவை) கண்டறியும்போது பிழைகளை கட்டாயப்படுத்துகிறது, குறியீட்டின் சிக்கல் பகுதியை தனிமைப்படுத்த விதிவிலக்கை எழுப்புகிறது. இது தொடங்கப்பட்டது verifier
இருந்து கட்டளை வரியில் மேலும் அதிக மேல்நிலைச் சுமையைச் சேர்ப்பதைத் தவிர்க்க, முடிந்தவரை சிறிய இயக்கிகளைத் தேர்ந்தெடுப்பது நல்லது.
நீங்கள் WinDbg உடன் உங்களைப் பார்க்கவில்லை என்றால், அடிப்படை நடவடிக்கைகளைப் பயன்படுத்துங்கள்: குறிப்பிட்ட சாதனம்/இயக்கியைச் சுட்டிக்காட்டும் பிழைகள் ஏதேனும் உள்ளதா என Event Viewer இல் உள்ள கணினி பதிவைச் சரிபார்க்கவும்; நீலத் திரையால் குறிப்பிடப்பட்ட இயக்கியைப் புதுப்பிக்கவும் அல்லது முடக்கவும்; உங்கள் Windows பதிப்போடு வன்பொருள் இணக்கத்தன்மையைச் சரிபார்க்கவும்; மேலும் RAM இருப்பதாக நீங்கள் சந்தேகித்தால் Windows Memory Diagnostic ஐப் பயன்படுத்தவும். இந்த செயல்கள், எளிமையானவை என்றாலும், அவர்கள் ஏராளமான வழக்குகளைத் தீர்க்கிறார்கள்..
நிஜ வாழ்க்கை நிகழ்வுகள்: BSODகள் சீரற்றதாகத் தோன்றும் போது
விண்டோஸ் 10 ப்ரோ (AMD Ryzen 5 3400G CPU) கொண்ட ஒரு பயனர், ஜி.பீ. NVIDIA ஜியிபோர்ஸ் ஜிடிஎக்ஸ் 1660 டிஐ மற்றும் ஜிகாபைட் பி450 ஏஓரஸ் ப்ரோ வைஃபை போர்டு, 16 ஜிபி ரேம்) இடைப்பட்ட "IRQL_LESS_OR_NOT_EQUAL" திரைகளை அனுபவித்து வந்தது. நான் ஏற்கனவே அத்தியாவசிய இயக்கிகளை (நெட்வொர்க், கிராபிக்ஸ்) புதுப்பித்திருந்தேன், அனைத்து விண்டோஸ் புதுப்பிப்புகளையும் நிறுவியிருந்தேன், மேலும் நினைவக கருவியை இயக்கியிருந்தேன், இவை அனைத்தும் எந்த பிரச்சனையும் கண்டறியாமல் இருந்தன.
இது போன்ற சூழ்நிலைகளில், அடுத்த படி WinDbg உடன் டம்ப்களை பகுப்பாய்வு செய்வது. மற்றும் வடிவங்களைத் தேடுங்கள்: அது விழும்போது சம்பந்தப்பட்ட செயல்முறைகள் (எடுத்துக்காட்டாக, explorer.exe
), வரைகலை இடைமுக தொகுதிகள் (win32kfull.sys
) மற்றும் போன்ற செயல்பாடுகள் xxxProcessNotifyWinEvent
அடுக்கில் தோன்றும். இந்த தொகுதி விண்டோஸ் என்றாலும், தூண்டுதல் பெரும்பாலும் ஒரு மூன்றாம் தரப்பு இயக்கி (கிராபிக்ஸ், உள்ளீடு, மேலடுக்கு, பிடிப்பு அட்டைகள்) ஆகும், இது பொருத்தமற்ற IRQL இல் நினைவகத்தைப் பயன்படுத்துகிறது மற்றும் பிழை ஏற்படுகிறது win32k
.
இங்கே நடைமுறை பரிந்துரை என்னவென்றால் மேலடுக்கு மென்பொருளை தற்காலிகமாக முடக்கு. (பிடிப்பு, GPU OSD), ஆக்ரோஷமான மென்பொருள் புற இயக்கிகள் (மேக்ரோக்கள் கொண்ட எலிகள்/கீபோர்டுகள்), மற்றும் கிராபிக்ஸ் இயக்கிகளின் பீட்டா பதிப்புகள் ஆகியவற்றைப் பயன்படுத்தி அதைச் சுருக்கவும். சந்தேக நபர்களிடம் டிரைவர் வெரிஃபையரைப் பயன்படுத்துவது தெளிவான அடுக்கின் மூலம் சிக்கலைக் குறைக்க உதவும்.
மிகவும் பொதுவான நெட்வொர்க் முறை: ndis.sys எப்போதும் குற்றவாளி அல்ல.
மற்றொரு பொதுவான வழக்கு: ndis.sys உடன் ஸ்கிரீன்ஷாட் (விண்டோஸ் நெட்வொர்க் அடுக்கு). ஒரு உண்மையான கணினியில், கணினி தொடங்கப்பட்டவுடன் உடனடியாக செயலிழக்கும். நடைமுறை தீர்வு துவக்குவது பாதுகாப்பான பயன்முறை நெட்வொர்க் செயல்பாடுகள் இல்லாமல், திறக்கவும் சாதன மேலாளர் மேலும் சிக்கலைத் தனிமைப்படுத்த "நெட்வொர்க் அடாப்டர்கள்" என்பதன் கீழ் அடாப்டர்களை முடக்கவும்.
அந்த அணியில் ஒரு Realtek PCIe GBE குடும்பக் கட்டுப்படுத்தி மற்றும் ஒரு Atheros AR5007G. இரண்டையும் செயலிழக்கச் செய்வதன் மூலம், உண்மையான காரணம் என்பது கண்டறியப்பட்டது athrx.sys
(அதெரோஸ்), நீலத் திரையில் குறிப்பிடப்பட்டிருந்தாலும் ndis.sys
குப்பைத்தொட்டி இதை உறுதிப்படுத்தியது: அடுக்கு கடந்து சென்றது ndis!NdisFreeTimerObject
ஆனால் குற்றவாளி தொகுதி athrx.sys
இறுதி திருத்தம் சாதனத்தை நிறுவல் நீக்கி, புதுப்பிக்கப்பட்ட அதிகாரப்பூர்வ இயக்கிகளை நிறுவவும். Atheros உற்பத்தியாளரின் வலைத்தளத்திலிருந்து. நீதி: BSOD இல் குறிப்பிடப்பட்டுள்ள தொகுதி, பாதிக்கப்பட்ட துணை அமைப்பின் ஒரு பகுதியாக இருக்கலாம், மூலத்தின் பகுதியாக அல்ல.
பயனர்களுக்கான வழக்கமான ஆதரவு பதில் மற்றும் விரைவான படிகள்
ஒரு உண்மையான ஆதரவு பரிமாற்றத்தில், ஒரு தொழில்நுட்ப வல்லுநர் பதிலளித்தார்: "சிரமத்திற்கு வருந்துகிறேன். இது ஒரு இயக்கி, நினைவகம் அல்லது வைரஸ் தடுப்பு சிக்கலாக இருக்கலாம். தயவுசெய்து உங்கள் இயக்கிகளைப் புதுப்பிக்கவும், அது தொடர்ந்தால், நினைவக நோயறிதலை இயக்கவும்."இது அடிப்படையான ஆனால் செல்லுபடியாகும் ஆலோசனை; இருப்பினும், பிழைகள் தொடர்ந்தால், சரிபார்ப்பான் மற்றும் டம்ப் பகுப்பாய்வை மேலும் மேற்கொள்வது நல்லது.
தொழில்நுட்பம் அல்லாத பயனர்களுக்கு, ஒரு நியாயமான நெறிமுறை பின்வருமாறு இருக்கும்: 1) கணினி நிகழ்வுகளைச் சரிபார்க்கவும், 2) முக்கிய இயக்கிகளைப் புதுப்பிக்கவும் (சிப்செட்/நெட்வொர்க்/கிராபிக்ஸ்), 3) RAMஐச் சரிபார்க்கவும். ஒருங்கிணைந்த கருவி மூலம், 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) கவனமாகப் படிப்பதன் மூலம், இந்தப் பிழைச் சரிபார்ப்புகள் இனி ஒரு மர்மமாக இல்லை. மேலும் அவை முறையாக தீர்க்கக்கூடிய பிரச்சினைகளாக மாறுகின்றன.
பொதுவாக பைட்டுகள் மற்றும் தொழில்நுட்ப உலகம் பற்றிய ஆர்வமுள்ள எழுத்தாளர். எழுதுவதன் மூலம் எனது அறிவைப் பகிர்வதை நான் விரும்புகிறேன், அதையே இந்த வலைப்பதிவில் செய்வேன், கேஜெட்டுகள், மென்பொருள், வன்பொருள், தொழில்நுட்பப் போக்குகள் மற்றும் பலவற்றைப் பற்றிய அனைத்து சுவாரஸ்யமான விஷயங்களையும் உங்களுக்குக் காண்பிப்பேன். டிஜிட்டல் உலகில் எளிமையான மற்றும் பொழுதுபோக்கு வழியில் செல்ல உங்களுக்கு உதவுவதே எனது குறிக்கோள்.