рд╡рд╣ рдиреАрд▓рд╛ рд╣реЛ рдЧрдпрд╛, рдХреНрдпрд╛ рдЙрд╕реЗ рдмреБрд░рд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдмреАрдПрд╕рдУрдбреА рдХрд░реНрдиреЗрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЕрд╕рдВрдЧрдд рдЕрдкрд╡рд╛рдж рд╣реИред рдпрджрд┐ рдЖрдк рдЙрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рд╣реИред
рдХрд░реНрдиреЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкрд░ рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ: рдЖрдИрдЖрд░рдХреНрдпреВрдПрд▓ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВ, рд╕рд╛рдЭрд╛ рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдЖрдИрдПрд╕рдЖрд░ рдореЗрдВ рд▓рд┐рдВрдЬрд░ рди рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ ... рдХрдо рд╕реЗ рдХрдо рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдорд╛рдирдХ рд╡реАрдЬреАрдП рдореЗрдВ рдореБрджреНрд░рд╛рдВрдХрд┐рдд рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрдЯрдХрд╛рд░ рдорд┐рд▓реЗрдЧреАред рдПрдХ рдкрддрд▓реА рдкреИрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдореЛрдбред
рджрд░рдЕрд╕рд▓ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдореЗрдВ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рддрд░реНрдХ рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рдЬреАрд╡рди рдХреЗ рдирд┐рд╢рд╛рди (рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛) рдХреЛ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЦреАрдВрдЪреЗрдЧрд╛, рдФрд░ рдЙрдирдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧрд╛ред рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИ, рдпрд╣ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рдФрд░ рдирд╣реАрдВред
рдХрд░реНрдиреЗрд▓ рдореЛрдб рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд░реНрдиреЗрд▓ рдлреИрд╢рди рдкрдбрд╝реЛрд╕реА рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рдкрдбрд╝реЛрд╕реА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдорд░реЗ рдореЗрдВред рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рдордЬрдмреВрдд рджреАрд╡рд╛рд░реЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреА рд╢рд░рд╛рдмреА рдЪрд╛рд▓ рд╕реЗ рдмрдЪрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрддрд░реНрд╕рдВрдмрдВрдз рдкрддрд▓реЗ рдФрд░ рдирд╛рдЬреБрдХ рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрд░ рдФрд░ рдЗрд╕рдХреЗ рдШрдЯрдХ рд╡рд┐рд╢рд╛рд▓ рдШрдбрд╝рд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдмрд┐рдВрджреБ рд╣реИ: рдпрджрд┐ рдПрдХ рд╕реНрдХреНрд░реВ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рдмреЗрд╢рдХ, рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬрд┐рдирдХреА рд╡рд┐рдлрд▓рддрд╛рдПрдВ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдУрдПрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдПрдХ рдЕрд╕рдлрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ - рд╡реЗ рдЗрд╕реЗ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдХрд░рддреЗ рд╣реИрдВ, рдареАрдХ рд╣реИ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рдорд╛рдгреБ рдШрдЯрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдФрд░ рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрдХ рдШрдЯрдХ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рджреВрд╕рд░реЛрдВ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЕрдВрддрддрдГ рд╕рднреА рдкрд░рдорд╛рдгреБ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╛, рдФрд░ рднреА рдмрджрддрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдЫрд┐рдкреЗ рд╣реБрдП рдмрдЧреЛрдВ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдлрд┐рд░ рднреА, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк "рдХреЗрддрд▓реА" рд╕реНрддрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рдиреАрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдкрдХреА рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ?
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЕрдм рдЖрдк рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рд╣реИрдВред "рдмреНрд░реВрд╕" рдкрд░ рдЖрдкрдХреА рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ? рдЦреИрд░, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛрдб рдФрд░ рд╡рд╣ рд╕рдм рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХрд░реНрдиреЗрд▓ рдПрдирдХреЛрдбрд░ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдкрд░рд┐рд╖реНрдХреГрдд рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рджреЛрдмрд╛рд░рд╛ рджреЗрдЦрдиреЗ рдкрд░ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рдЖрддрд╛ рд╣реИ? рдЦреИрд░, рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ред

рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рдл, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдордХрд╛рдЬ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл, рдЕрдирдореЛрд▓ рдЧреИрд░-рдорд░рдореНрдордд рддрдВрддреНрд░рд┐рдХрд╛ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВред рдХреИрд╕реЗ рд╣реЛ? KeBugCheck рдПрдХ рдЕрд╡рд░реЛрдзрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЛ рдЗрд╕рдХреЗ рдЖрддреНрдореАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмреАрдПрд╕рдУрдбреА рдХреЗ рд╕рд╛рде рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреБрдЫ рд╕рдордп рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдмреАрдЪ ...
рдЦреБрдж рд░реЛрд╕рд┐рдиреЛрд╡рд┐рдЪ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдирд╛рдо рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред Russinovich рд╢рд╛рдВрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣ рдЪрд╛рд▓рд╛рдХ рд╣реИред Sysinternals рд╕реЗ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдвреЗрд░ рдХреЗ рдмреАрдЪ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - NotMyFaultред рдпрд╣ рдХрд░реНрдиреЗрд▓ рдореЛрдб рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреАрдПрд╕рдУрдбреА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рд╣реИ - рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░реАрди рдФрд░ рдореГрддреНрдпреБ рд╕реНрдХреНрд░реАрди рдХреЗ рдлрд╝реЙрдиреНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрддрдиреА рд╢рд╛рдВрдд рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рднреА рдЖрддреА рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд░реЛрд╕рд┐рдиреЛрд╡рд┐рдЪ рд╢рд╛рдВрдд рд╣реИрдВ ...
рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ: рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ioctlcmd.h рдРрд╕рд╛ рдХреЛрдб рд╣реИ:
#define IOCTL_BSOD_COLOR (ULONG) CTL_CODE (FILE_DEVICE_MYFAULT, 0x10, METHOD_BUFFERED, FILE_ANYAACCESS)
рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореГрддреНрдпреБ рд╕реНрдХреНрд░реАрди рдХрд╛ рд░рдВрдЧ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХрд╛ рдПрдХ рдирд┐рд╢рд╛рди рд╣реИред Myfault.c рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдмрд┐рдирд╛ рдкрд░рдорд╛рдгреБ рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рд╢рд╛рдорд┐рд▓ рд╣реИ! рд▓реЗрдХрд┐рди! рдЗрдХрдЯреНрдареЗ рдЪрд╛рд▓рдХ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ред
рдЪрд▓реЛ рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдкрдЪрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдорд╕рд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, MDSN рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рди рд╣реЛрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди (рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди) рд╣реИрдВред рддреЛ рдиреАрд▓реА рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде: рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рдмреНрд▓реВ рд╕реНрдХреНрд░реАрди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ:
BOOLEAN KeRegisterBugCheckReasonCallback (
__out PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
__in PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
__in KBUGCHECK_CALLBACK_REASON рдХрд╛рд░рдг,
__in рдкреБрдЪрдХрд╛рд░ рдШрдЯрдХ
);
рдпрд╣ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдпрд╛ рддреЛ рдЗрд╕реЗ рдбрдВрдк рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпрд╛ рдЙрд╕ рдХреНрд╖рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВ рдЬрдм рдбрдВрдк рдкрд╣рд▓реЗ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдХрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ KbCallbackReserved1 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ, рд╣рдореЗрдВ "рдмрд╕ рдЙрд╕ рддрд░рд╣" рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред KbCbackbackReserved1 рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдЬреА рд╣реИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдЕрдиреНрдп рд╕рднреА рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рд╕рдорд╛рди рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ:
BOOLEAN KeRegisterBugCheckCallback (
__out PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
__in PKBUGCHECK_CALLBACK_ROUTINE рдХреЙрд▓рдмреИрдХрд░реВрдЯреАрди,
__in_opt рдкреАрд╡реАрдУрдЖрдИрдбреА рдмрдлрд░,
,in рдЙрд▓реЙрдиреНрдЧ рд▓рдВрдмрд╛рдИ,
__in рдкреБрдЪрдХрд╛рд░ рдШрдЯрдХ
);
рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдкрдВрдЬреАрдХреГрдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЦрд░рд╛рдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рдкрд╕ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдПред рдЬрдм рдореИрдВрдиреЗ рдХреЙрд▓рдмреИрдХрд░реВрдЯреАрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╕реВрдЪреА рдХреЛ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦрд╛, рддреЛ рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЬрд╛рджреВ рдХреЛрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдФрд░ рдХрд╣рд╛рдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИ! ... рд░реБрдХреЛ, рдпрд╣ рдХреНрдпрд╛ рд╣реИ? "рдореВрд╡-рдЖрдЙрдЯ, рдореВрд╡-рдЖрдЙрдЯред" рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдзреЛрдЦрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЪрдорддреНрдХрд╛рд░ рдФрд░ рдкрд░рд┐рдпреЛрдВ рдХреА рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдФрд░ рдпрд╣рд╛рдВ рдорд╛рд░реНрдХ рд╡реАрдЬреАрдП рдкреЛрд░реНрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрд▓реЗрдЯ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреИрд▓реЗрдЯ рд╣реИ! рдпрд╣реА рд╣реИ, рдпрд╣ рдиреАрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд░рд╛, рддрд╛рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рд╣рд░реА рд╣реЛ рдЬрд╛рдП:
Mov edx, 3C8h; рдкреЛрд░реНрдЯ рдЬрд┐рд╕рдореЗрдВ рд░рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХ DAC рдкреИрд▓реЗрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
рдЪрд▓ рдЕрд▓, 4; рдиреАрд▓рд╛ рдерд╛
рдмрд╛рд╣рд░ dx, рдЕрд▓
рдЪрд▓ рдЕрд▓, 0x00003F00; рд╣рд░реЗ рд░рдВрдЧ (6 рдмрд┐рдЯ рдкреНрд░рддрд┐ рд░рдВрдЧ)
lea ecx, [edx + 1]; edx = 0x3C9 - рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ
mov edx ecx
рдмрд╛рд╣рд░ dx, рдЕрд▓; рд▓рд╛рд▓ рдШрдЯрдХ рд╕реЗрдЯ рдХрд░реЗрдВ
Mov рдИрдПрдХреНрд╕рдПрдХреНрд╕, 0x00003F00
рдИрдЖрд░ рдИрдПрдХреНрд╕, 8
рдмрд╛рд╣рд░ dx, рдЕрд▓; рдЧреНрд░реАрди
Mov рдИрдПрдХреНрд╕рдПрдХреНрд╕, 0x00003F00
shr eax, 10h
рдмрд╛рд╣рд░ dx, рдЕрд▓; рдиреАрд▓рд╛

рдареАрдХ рд╣реИ, рддреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдФрд░ рдЪрд╛рд╣рд┐рдПред
рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ
рдПрдирд┐рдореЗрдЯреЗрдб рдУрдПрд╕ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдХреНрд░реАрди, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡реАрдЬреАрдП рд╡реАрдбрд┐рдпреЛ рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдХреНрдпрд╛ рдирд┐рдЪреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╣ рднреА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╣реИред рдореБрдЭреЗ рдкреАрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрдЧреА: рд╣рдо рдЗрдирдмрд╡ * рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд╛рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд░реНрдиреЗрд▓ рд╕реЗ рднреА рдирд┐рд░реНрдпрд╛рдд рдпреЛрдЧреНрдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ KiDisplayBlueScreen рд░рд┐рд╡рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:
рдЕрдЧрд░ (InbvIsBootDriverInstalled ())
{
InbvAcquireDisplayOwNERhip (); // рдЕрдм рд╣рдо рдХрдорд╛рдВрдб рдХрд░рддреЗ рд╣реИрдВ
InbvResetDisplay (); // рд╕реНрдХреНрд░реАрди рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ, рдкреИрд▓реЗрдЯ рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ
InbvSolidColorFill (0, 0, 639, 479, 4); // рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рднрд░реЗрдВ
InbvSetTextColor (15); // рдФрд░ рд╕рдлреЗрдж рд░рдВрдЧ рдореЗрдВ рд▓рд┐рдЦреЗрдВ
InbvInstallDisplayStringFilter (0); // рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ
InbvEnableDisplayString (TRUE); // рд▓реЗрдЦрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
InbvSetScrollRegion (0, 0, 639, 475); // рд╕реНрдХреНрд░реАрди рдлреНрд░реЗрдо рдХреЛ рд╕рдВрдХреАрд░реНрдг
...
InbvDisplayString ( "рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛!" ); // рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
...
};

рдЖрдк рдЕрдкрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдХреЛрдб рдореЗрдВ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЗрд╕ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдЖрдк рдЗрд╕реЗ рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ InbvBitBlt рд╣реИ:
VOID NTAPI рдЗрдирдмрдмрд┐рдЯрдмреЗрд▓ (PUCHAR рдмрдлрд╝рд░ рдореЗрдВ, ULONG X, IN ULONG Y)
рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рд╛рдВ, рдпрд╣ рд╕реАрдзреЗ рдПрдХ BMP рдЗрдореЗрдЬ (рдкрдврд╝реЗрдВ, рдПрдХ BMP рдлрд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ 256 рдХрд▓рд░ рдмрд┐рдирд╛ рдлрд╛рдЗрд▓ рд╣реЗрдбрд░ рдХреЗ рд╣реИ)! рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдПрдХ рд╕рдорд╛рди VidBitBlt рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдЖрд╡рд░рдг рдХреА рднреВрдорд┐рдХрд╛ рдХреЗрд╡рд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдмрд╣реБрдд рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдФрд░ VidBitBlt рдХреЛ bootvid.dll рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдмреВрдЯ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдордиреЛрд░рдВрдЬрди рдХрд░рддрд╛ рд╣реИред рддреЛ рдЬрд╛рдУ, рдореЗрд░реЗ рдкреНрдпрд╛рд░реЗ! рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдиреВрдиреА рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдирд┐рд░реНрдпрд╛рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЬрд╛рджреВ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рддрдм рдЖрдк рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рд╕реЗ рд╣реА рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдЗрд╕ рд╢рд┐рд▓реНрдк рдХреА рдбреАрдВрдЧ рдорд╛рд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЧрд░реНрдо рдХреБрддреНрддреЗ рдкрд░ рдмрд╣рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдПрдХ рдорд╢реАрди рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдордд рднреВрд▓рдирд╛ред
рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ!