рдЧреИрд░-рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ 5 рдмрд╛рд░ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ

рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рд░реНрдЯ 3 рдХреЛ рдзреАрдорд╛ рдХрд░рдирд╛: рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрддрд┐



рд▓реЗрдЦрдХ Google рдкрд░ Chrome рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ - рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред

2017 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрддрд┐ рдзреАрдореА, рдХреНрд░рдордмрджреНрдз рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЗрдирдкреБрдЯ рдХрддрд╛рд░ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреА рдереА, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдХреНрд░реЛрдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреЗ рдХрдИ рдлреНрд░реАрдЬ рд╣реЛ рдЬрд╛рддреЗ рдереЗред рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдиреЗ рдЬреАрдбреАрдЖрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рдЬрдмрдХрд┐ рд╕рд┐рд╕реНрдЯрдо-рдЧреНрд▓реЛрдмрд▓ рдпреВрдЬрд╝рд░ 32 рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб рдХреЛ рджрдмрд╛рдП рд░рдЦрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ "24-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░" рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХреА рдереА , рд▓реЗрдХрд┐рди рдореИрдВ рдХрд░реНрд╕рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ред

Microsoft рдиреЗ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рд▓реМрдЯ рдЖрдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмрдЧ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред рд▓рдЧрд╛рддрд╛рд░ рдЗрдирдкреБрдЯ рд╣реИрдВрдЧ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдПрд▓рдПрд▓рд╡реАрдПрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдзреАрдореЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрддреЗрдВ рдереАрдВред

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрдЧ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛ред рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдерд╛ред

2017 рдХрд╛ рдЕрдВрдХ


рдкреНрд░рддреНрдпреЗрдХ Windows рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдИ рдорд╛рдирдХ GDI рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рд╡рд░рдгрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдЖрдорддреМрд░ рдкрд░ NULL рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдЗрди рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ NULL рд╣реЛрдВред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ - рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдиреЗ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ - рд╡рд┐рдВрдбреЛрдЬ 10 рд╡рд░реНрд╖рдЧрд╛рдВрда рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬ рддрдХ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ ред рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕реА рд▓реЙрдХ рдХреЛ рд░рдЦрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯ рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЙрдХ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрд╕рд░ рдЬрдорд╛ рджреЗрддрд╛ рд╣реИред

Microsoft рдХрд╛ рдкреИрдЪ GDI рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛ред рдореИрдВ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Microsoft рдкреИрдЪ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдерд╛:

+ if (IsGUIProcess())
+ NtGdiCloseProcess();
тАУ NtGdiCloseProcess();


рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ GUI / GDI рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╕ GDI рд╕рдлрд╛рдИ рдЫреЛрдбрд╝реЗрдВред

рдЪреВрдВрдХрд┐ рд╕рдВрдХрд▓рдХ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ GDI рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдкреИрдЪ UI рдХреА рдардВрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рдХрд▓рд╛ред

2018 рдХрд╛ рдЕрдВрдХ


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХреБрдЫ рдорд╛рдирдХ рдЬреАрдбреАрдЖрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ gdi32.dll рдХреЛ рд▓реЛрдб рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ GDI рдСрдмреНрдЬреЗрдХреНрдЯ (DC, рд╕рддрд╣реЛрдВ, рдХреНрд╖реЗрддреНрд░реЛрдВ, рдмреНрд░рд╢, рдлреЛрдВрдЯ, рдЖрджрд┐) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЪрд╛рд╣реЗ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рдорд╛рдирдХ GDI рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рд╕реНрдХ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП GDI рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ)ред

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпреЛрдВ рд╕рдВрдХрд▓рдХ gdi32.dll рд▓реЛрдб рд╣реЛрдЧрд╛? рдареАрдХ рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк user32.dll, shell32.dll, ole32.dll рдпрд╛ рдХрдИ рдЕрдиреНрдп DLL рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд gdi32.dll (рдЙрдкрд░реЛрдХреНрдд рдорд╛рдирдХ GDI рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде) рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

LLLM рдкрд░реАрдХреНрд╖рдг рдЬрдм CommandLineToArgvW (shell32.dll) рдирд╛рдордХ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА SHGetKnownFolderPath (рднреА shell32.dll) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдХреЙрд▓ gdi32.ll рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдЗрди рдбрд░рд╛рд╡рдиреЗ рдорд╛рдирдХ GDI рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереЗред рдЪреВрдВрдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдЗрддрдиреА рд╕рд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдВрддрддрдГ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдХреНрд░рдордмрджреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рднрд╛рд░реА рджреЗрд░реА рдФрд░ рдЗрдирдкреБрдЯ рд╕реЗ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 2017 рдореЗрдВ рдмрд╣реБрдд рдЦрд░рд╛рдм рдереЗред

рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдореЗрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рддреБрд░рдВрдд рдкрддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдбрд▓рд╛рдЗрдирдЯреЙрдЕрд░реНрдЧрд╡ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рджрд┐рдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, LLVM рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдиреЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд DLL рд╕реЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рдереЗ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢реЗрд╖ рд╕рд╢рд░реНрдд рдХреЙрд▓ рд╣рдореЗрд╢рд╛ shell32.dll рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ gdi32.dll рдХреЛ рдЦреАрдВрдЪрддрд╛ рдерд╛, рдЬреЛ рдорд╛рдирдХ GDI рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рдлрд┐рдХреНрд╕ рд╢реЗрд▓ 32.ll рдХреА рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рджреЗрд░реА рдереАред рд╡рд┐рд▓рдВрдмрд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ - рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдерд╛ рдХрд┐ shell32.dll рдФрд░ gdi32.dll рд╢рд╛рдпрдж рд╣реА рдХрднреА рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрд▓рдПрд▓рд╡реАрдПрдо рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдкрд╛рдВрдЪ рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рдиреЗ рд▓рдЧрд╛ - рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдкрд╛рдВрдЪ рдХреЗ рдмрдЬрд╛рдпред рдФрд░ рдХреЛрдИ рднреА рдорд╛рдЙрд╕ рд╡рд┐рдХрд╛рд╕ рдорд╢реАрдиреЛрдВ рдкрд░ рдЬрдорд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХрд░реНрдордЪрд╛рд░реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдкрд╛рдЧрд▓ рддреНрд╡рд░рдг рд╣реИ, рдФрд░ рдкреИрдЪ рдХреЗ рд▓реЗрдЦрдХ рдореЗрд░реА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рдереЗ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдмреЛрдирд╕ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ред

рдХрднреА-рдХрднреА рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ "рд╢реВрдиреНрдп" рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдкрд╛рджрди рдорд╛рд░реНрдЧ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛


рдпрд╣ рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЙрд╕ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ - рдФрд░ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдерд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЯреВрд▓ рд╣реИ рдЬреЛ gdi32.dll рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рд╢рд░реНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдИ рдмрд╛рд░ рдзреАрдореА рд╣реЛ рдЬрд╛рдПрдЧреА рдпрджрд┐ gdi32.dll рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, CommandLineToArgvW рдХреЛ рдХрднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдЙрдкрд╕реНрдерд┐рддрд┐ (рдХреЙрд▓ рджреЗрд░реА рдХреЗ рдмрд┐рдирд╛) рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдкреНрд░рддрд┐рдХреВрд▓ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддреА рд╣реИ:

 int main(int argc, char* argv[]) { if (argc < 0) { CommandLineToArgvW(nullptr, nullptr); // shell32.dll, pulls in gdi32.dll } } 

рддреЛ рд╣рд╛рдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛, рднрд▓реЗ рд╣реА рдХреЛрдб рдХреЛ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреИрдереЛрд▓реЙрдЬреА рдкреНрд░рдЬрдирди


рдЬрдм рдореИрдВрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА, рддреЛ рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо ( ProcessCreateTests ) рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рдиреЗ 1000 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрдирд╛рдИрдВ рдФрд░ рдлрд┐рд░ рдЙрди рд╕рднреА рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдорд╛рд░ рджрд┐рдпрд╛ред рдпрд╣ рдлреНрд░реАрдЬ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм Microsoft рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдкреИрдЪ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗрдВред рдмрдЧ рдХреЗ рдкреБрдирд░реНрдЬрдиреНрдо рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ -user32 рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬреЛ рд╣рдЬрд╛рд░реЛрдВ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП user32.dll рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдлреНрд░реАрдЬ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп -user32 рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рднреА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдХрд░реНрд╕рд░ рдирд┐рд▓рдВрдмрди рдирд╣реАрдВ рд╣реИрдВред рдЖрдк рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд┐рддрдиреА рднрдпрд╛рдирдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдкрдЯрд╛рдЗрдо рдХреЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдЪрд╛рд░-рдХреЛрд░ / рдЖрда-рдереНрд░реЗрдбреЗрдб рдиреЛрдЯрдмреБрдХ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред -User32 рд╡рд┐рдХрд▓реНрдк рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрдврд╝рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ UserCrit рд▓реЙрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

> ProcessCreatetests.exe
Process creation took 2.448 s (2.448 ms per process).
Lock blocked for 0.008 s total, maximum was 0.001 s.

Process destruction took 0.801 s (0.801 ms per process).
Lock blocked for 0.004 s total, maximum was 0.001 s.

> ProcessCreatetests.exe -user32
Testing with 1000 descendant processes with user32.dll loaded.
Process creation took 3.154 s (3.154 ms per process).
Lock blocked for 0.032 s total, maximum was 0.007 s.

Process destruction took 2.240 s (2.240 ms per process).
Lock blocked for 1.991 s total, maximum was 0.864 s.


рд╕рд┐рд░реНрдл рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдЧрд╣рд░реА рдЦреБрджрд╛рдИ


рдореИрдВрдиреЗ рдХреБрдЫ рдИрдЯреАрдбрдмреНрд▓реНрдпреВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рдЕрдиреБрднрд╡рд╣реАрди рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рднреА рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдиреНрдп рд▓реЗрдЦ:


рд╕рд╛рд╣рд┐рддреНрдп


Source: https://habr.com/ru/post/hi432076/


All Articles