{"id":376078,"date":"2024-05-21T06:41:17","date_gmt":"2024-05-21T06:41:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=376078"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=376078","title":{"rendered":"<span>11 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u0438\u0439 ReactOS: user mode \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435?<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>ReactOS \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442, \u0433\u0434\u0435 \u043f\u043e\u0431\u0435\u0434\u0443 \u043d\u0430\u0434 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439, \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0447\u0438 \u0438\u043b\u0438 \u0435\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043f\u0440\u0430\u0437\u0434\u043d\u0443\u044e\u0442 \u0442\u0430\u043a \u0433\u0440\u043e\u043c\u043a\u043e, \u0447\u0442\u043e FOSS-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043d\u0430 Rust \u0438 \u043f\u043e\u043b\u0435\u043c\u0438\u043a \u043e systemd. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 ReactOS \u0432 2013 \u0433\u043e\u0434\u0443, \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0439 \u0432\u0432\u0438\u0434\u0443 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0430\u043f\u043e\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 PVS-Studio \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b Wine. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/373\/57f\/e7e\/37357fe7e8a5f640349061479a9b0fe3.png\" width=\"1600\" height=\"902\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/373\/57f\/e7e\/37357fe7e8a5f640349061479a9b0fe3.png\"\/><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e\u00a0ReactOS \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u00a0\u044f\u0434\u0440\u043e GNU\/Linux, \u0430\u00a0\u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Windows Server 2003\u00a0R2\u00a0\u0432 32-\u0431\u0438\u0442\u043d\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u0438 Windows Vista \u0432 64-\u0431\u0438\u0442\u043d\u043e\u0439. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Wine, <a href=\"https:\/\/www.winehq.org\/\">\u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438<\/a> Windows API \u0434\u043b\u044f\u00a0POSIX\u2011\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043b\u044f\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u044b Windows \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f\u00a0Windows \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u00a0\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0434\u0440\u043e GNU\/Linux. \u041f\u0440\u0438\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <a href=\"https:\/\/github.com\/otya128\/winevdm\">WineVDM<\/a> \u043d\u0430\u00a0Windows 11\u00a0\u044f\u0434\u0440\u043e \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043f\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u00a0\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u044f\u0434\u0440\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e Debian 12, \u0432\u0435\u0440\u043d\u043e? \ud83d\ude42<\/p>\n<p>\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Windows \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0442\u0451\u043a\u0448\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 Windows <a href=\"https:\/\/github.com\/reactos\/reactos\/blob\/master\/README.md#contributing--\">\u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e<\/a>.<\/p>\n<blockquote>\n<p><strong>Legal notice<\/strong>: If you have seen proprietary Microsoft Windows source code (including but not limited to the leaked Windows NT 3.5, NT 4, 2000 source code and the Windows Research Kernel), your contribution won&#8217;t be accepted because of potential copyright violation.<\/p>\n<\/blockquote>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430\u00bb \u0434\u043b\u044f\u00a0\u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u00a0\u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439, \u0438 \u0431\u0435\u0437\u00a0\u043e\u0448\u0438\u0431\u043e\u043a \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u042d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 FOSS\u2011\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0445 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u0432 \u0432\u043e\u0437\u043c\u0443\u0449\u0451\u043d\u043d\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0442 \u043d\u0430\u00a0\u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u043e\u0442\u043a\u0430\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 ReactOS \u043e\u0442\u00a0\u0432\u043a\u0443\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u043e\u0434\u0430, \u043d\u0430\u043c\u0435\u043a\u0430\u044f \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f 26\u00a0\u043b\u0435\u0442 \u0432\u00a0\u0430\u043b\u044c\u0444\u0430\u2011\u0442\u0435\u0441\u0442\u0435, \u0438 \u00ab\u043f\u043e\u0440\u0430\u00a0\u0431\u044b \u0443\u0436\u0435 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c\u00bb. \u041e\u0431\u00a0\u044d\u0442\u043e\u043c \u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437, \u0430\u00a0\u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 PVS\u2011Studio \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 PVS-Studio<\/h3>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PVS\u2011Studio \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1122\">\u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/a>. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1122\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 PVS\u2011Studio \u043d\u0435\u00a0\u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u043c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c, \u0430\u00a0\u043f\u0440\u0438\u00a0\u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u043e\u0434 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio-quickstart-cppwindows\/\">Windows<\/a>. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 (C and C++ Compiler Monitoring) \u0438 \u043b\u044e\u0431\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u00a0IDE. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0Visual Studio 2022. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u00a0\u2014 7.30.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0435\u0451 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>ReactOS\u00a0\u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u00a0\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u0430\u0440\u044f\u0434\u0443 \u0441\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/1110\/\">Unreal Engine<\/a>. ReactOS Build Environment (<a href=\"https:\/\/reactos.org\/wiki\/Build_Environment\">RosBE<\/a>) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0438\u043b\u0438\u00a0Live\u2011\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0442\u0438\u043b\u0438\u0442 <em>CMake<\/em>, <em>Bison<\/em>, <em>Flex<\/em> \u0438 <em>Ninja<\/em>. \u0410\u043d\u0430\u043b\u0438\u0437\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0447\u0435\u0440\u0435\u0437 <em>GCC<\/em> \u0441\u00a0\u043a\u043e\u0434\u043e\u043c, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 <a href=\"https:\/\/git.reactos.org\/?p=reactos.git;a=tree;hb=00c4b3d99f5b21bdbd402d6c6dd232f721491590\">00c4b3d<\/a> \u0432\u0435\u0442\u043a\u0438 <em>master<\/em>. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/0031\/\"><em>CLMonitor<\/em><\/a>. \u0427\u0442\u043e\u00a0\u043e\u043d \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442? \u042d\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0435 PVS\u2011Studio, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442\u00a0\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u00a0\u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0432\u00a0\u043f\u0435\u0440\u0435\u0447\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <em>GCC<\/em>, \u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432\u00a0\u0436\u0443\u0440\u043d\u0430\u043b.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <em>RosBE<\/em>, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u043f\u0430\u043f\u043a\u0443 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0438\u0437\u00a0\u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 <em>configure.cmd<\/em>. \u041f\u043e\u00a0\u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <em>CLMonitor<\/em> (\u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0432\u00a0\u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430:<\/p>\n<pre><code class=\"cpp\">\"C:\\Program Files (x86)\\PVS-Studio\\CLMonitor\" monitor<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u043b\u044e\u0431\u043e\u0439 \u0446\u0435\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <em>bootcd<\/em> (\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c):<\/p>\n<pre><code class=\"cpp\">cd output-MinGW-i386 ninja bootcd<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c <em>CLMonitor<\/em> c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">\"C:\\Program Files (x86)\\PVS-Studio\\CLMonitor\" analyze -l output.plog<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0443. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Visual Studio, \u0432 \u043e\u043a\u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <strong>Continue without code<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 <em>CLMonitor<\/em> \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430. \u041c\u044b \u0435\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0432 \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b <em>RosBE<\/em>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442 <strong>Extensions \u2192 PVS\u2011Studio \u2192 Open\/Save \u2192 Open Analysis Report<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d43\/fef\/68a\/d43fef68a0296ff965445508fd20795c.png\" width=\"1600\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d43\/fef\/68a\/d43fef68a0296ff965445508fd20795c.png\"\/><\/figure>\n<h3>\u0410\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>\u00ab\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00a0\u2014 \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435\u00bb\u00a0\u2014 \u0442\u0430\u043a\u043e\u0439 \u0444\u0440\u0430\u0437\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Microsoft Office 2016\u00a0\u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a PVS\u2011Studio \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0433\u0434\u0435 \u0435\u0433\u043e \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u00a0\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0\u043f\u0435\u0440\u0435\u0447\u043d\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 ISO\u2011\u043e\u0431\u0440\u0430\u0437\u0430, \u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443 <em>RosBE<\/em> \u0438 \u0444\u0430\u0439\u043b\u044b <em>Public SDK<\/em>. \u041e\u043d\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u00a0\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 <em>Windows SDK<\/em>, \u0432\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043e\u00a0\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438\u043b\u0438\u00a0\u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 PVS\u2011Studio \u0432\u00a0\u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>Don&#8217;t Check Files<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a74\/320\/d54\/a74320d54794b3812b3aa5113daf012e.png\" width=\"1600\" height=\"900\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a74\/320\/d54\/a74320d54794b3812b3aa5113daf012e.png\"\/><\/figure>\n<p>\u0414\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u0438\u0437 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b ReactOS \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439. \u041f\u0443\u0442\u044c \u0434\u043e \u043f\u0430\u043f\u043a\u0438 <em>share<\/em> \u0438\u0437 <em>RosBE<\/em> \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<pre><code class=\"cpp\">dll\\directx\\wine\\ dll\\win32\\advapi32\\wine\\ dll\\win32\\dbghelp\\ drivers\\filesystems\\btrfs\\ drivers\\filesystems\\udfs\\ sdk\\include\\psdk\\ sdk\\lib\\3rdparty\\ sdk\\tools\\<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043e\u0447\u043a\u0438, \u0432\u0435\u0434\u044c ReactOS \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u0432\u043e\u0438\u043c \u0443\u043c\u0435\u043d\u0438\u0435\u043c \u00ab\u0432\u0437\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u043e\u0442\u00a0\u043a\u043e\u0441\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430, \u043d\u0430\u0434 \u0447\u0435\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0448\u0443\u0442\u044f\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/reactos\/articles\/418029\/\">\u0438 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438<\/a> \ud83d\ude42<\/p>\n<p>\u041f\u043e \u0441\u043b\u0443\u0447\u0430\u044e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044e\u0449\u0435\u0439\u0441\u044f 11-\u0439 \u0433\u043e\u0434\u043e\u0432\u0449\u0438\u043d\u044b \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 ReactOS, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e 11\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u043e\u043a \u0432\u00a0\u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445\u00a0\u2014 \u043e\u0434\u0438\u043d \u0441\u044e\u0440\u043f\u0440\u0438\u0437)! \u0411\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0442\u044c\u0441\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u00a0\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u043e\u2011\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u00ab\u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0431\u043e\u044f\u043c\u0438\u00bb.<\/p>\n<h4>\u0414\u0430, Windows \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u0442\u0430\u043a \u0436\u0435?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v501\/\">V501<\/a> There are identical sub-expressions &#8216;DCDest->dctype == DCTYPE_INFO&#8217; to the left and to the right of the &#8216;||&#8217; operator. bitblt.c 64<\/p>\n<pre><code class=\"cpp\">BOOL APIENTRY NtGdiAlphaBlend(   HDC hDCDest,   LONG XOriginDest,   LONG YOriginDest,   LONG WidthDest,   LONG HeightDest,   HDC hDCSrc,   LONG XOriginSrc,   LONG YOriginSrc,   LONG WidthSrc,   LONG HeightSrc,   BLENDFUNCTION BlendFunc,   HANDLE hcmXform) {   PDC DCDest;   PDC DCSrc;   ....   if (DCDest->dctype == DCTYPE_INFO || DCDest->dctype == DCTYPE_INFO)  \/\/ &lt;=   {     GDIOBJ_vUnlockObject(&amp;DCSrc->BaseObject);     GDIOBJ_vUnlockObject(&amp;DCDest->BaseObject);     \/* Yes, Windows really returns TRUE in this case *\/     return TRUE;   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e Windows \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <em>TRUE<\/em> \u043f\u0440\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/gdi\/windows-gdi\">GDI<\/a>, \u043d\u043e <em>DCSrc<\/em> \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442! \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430: \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0441\u0442\u043e\u044f\u0442 \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u043e\u0434\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <em>\u0418\u041b\u0418<\/em>.<\/p>\n<h4>\u0412\u0430\u0448 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v564\/\">V564<\/a> The &#8216;&amp;&#8217; operator is applied to bool type value. You&#8217;ve probably forgotten to include parentheses or intended to use the &#8216;&amp;&amp;&#8217; operator. loaddlg.cpp 376<\/p>\n<pre><code class=\"cpp\">#define SECURITY_FLAG_SECURE                 0x00000001  static BOOL CertGetSubjectAndIssuer(HINTERNET hFile,                         CLocalPtr&lt;char> &amp;subjectInfo,                         CLocalPtr&lt;char> &amp;issuerInfo) {   ....   DWORD size, flags;    size = sizeof(flags);   if (!InternetQueryOptionA(hFile,                             INTERNET_OPTION_SECURITY_FLAGS,                             &amp;flags,                             &amp;size))   {     return FALSE;   }    if (!flags &amp; SECURITY_FLAG_SECURE)  \/\/ &lt;=   {     return FALSE;   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0442\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u0441\u043a\u043e\u0431\u043a\u0438: \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>flags<\/em> \u0440\u0430\u0432\u043d\u0430 0. \u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f &#8216;!&#8217; \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>false<\/em>. \u041f\u043e\u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <em>\u0418<\/em> \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0436\u0435 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u043e\u043b\u0438: \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u043e \u0438 \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0435.<\/p>\n<h4>Frown The Pointers<\/h4>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0434 \u0440\u0443\u043a\u0443 \u043f\u043e\u043f\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 FTP-\u043a\u043b\u0438\u0435\u043d\u0442. \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043c\u0435\u043d\u044f \u0440\u0430\u0432\u043d\u043e\u0434\u0443\u0448\u043d\u044b\u043c \u043a \u043e\u0441\u043e\u0431\u043e \u0436\u0435\u0441\u0442\u043e\u043a\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445. \u041a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c? \u0413\u0434\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430? \u0427\u044c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u044b? \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/0063\/\">Access Violation<\/a>!<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v692\/\">V692<\/a> An inappropriate attempt to append a null character to a string. To determine the length of a string by &#8216;strlen&#8217; function correctly, a string ending with a null terminator should be used in the first place. ftp.c 1355<\/p>\n<pre><code class=\"cpp\">#define MAXHOSTNAMELEN 64 char* hostname;  void pswitch(int flag) {   ....   static struct comvars {     int connect;     char name[MAXHOSTNAMELEN];     ....   } proxstruct, tmpstruct;   struct comvars *ip, *op;   ....   if (flag) {     if (proxy)       return;     ip = &amp;tmpstruct;     op = &amp;proxstruct;     proxy++;   }   ....   if (hostname) {     (void) strncpy(ip->name, hostname, sizeof(ip->name) - 1);     ip->name[strlen(ip->name)] = '\\0';   } else     ip->name[0] = 0;   .... }<\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"cpp\">ip->name[strlen(ip->name)] = '\\0';<\/code><\/pre>\n<p>\u0412 \u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/0088\/\">\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c<\/a> (&#8216;\\0&#8217;) \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438. \u042e\u043c\u043e\u0440 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 &#8216;\\0&#8217; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>strlen<\/em>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044f \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0443\u043b\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0430\u0434\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438 \ud83d\ude42<\/p>\n<p>\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043e\u043d \u0438 \u0442\u0430\u043a \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0431\u0443\u0444\u0435\u0440\u0430. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0430 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c Access Violation.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 <em>tmpstruct<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0435\u0433\u043e \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0443\u0442 <a href=\"https:\/\/en.cppreference.com\/w\/c\/language\/initialization#Empty_initialization\">empty-\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/a>. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0431\u0443\u0444\u0435\u0440 <em>name<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0443\u043b\u044f\u043c\u0438.<\/p>\n<p>\u0412 \u0431\u0443\u0444\u0435\u0440 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>strncpy<\/em> \u043d\u0435 \u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435 &#8216;\\0&#8217;, \u043e\u043d \u0442\u0430\u043c \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">ip->name[strlen(ip->name)] = '\\0';<\/code><\/pre>\n<p>\u0412\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442, \u043d\u043e \u0441\u0430\u043c\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0430. &#8216;\\0&#8217; \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u043e\u043d \u0438 \u0442\u0430\u043a \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u0421\u0442\u0440\u043e\u0447\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u043a\u043e\u0434\u0430.<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1010\/\">V1010<\/a> Unchecked tainted data is used in index: &#8216;strlen(tmp)&#8217;. ftp.c 216<\/p>\n<pre><code class=\"cpp\">int login(const char *host) {   char tmp[80];   ....   while (user == NULL) {     const char *myname = \"none\"; \/\/ This needs to become the username env          if (myname)       printf(\"Name (%s:%s): \", host, myname);     else       printf(\"Name (%s): \", host);     (void) fflush(stdout);     (void) fgets(tmp, sizeof(tmp) - 1, stdin);     tmp[strlen(tmp) - 1] = '\\0';                 \/\/ &lt;=     if (*tmp == '\\0')       user = myname;     else       user = tmp;   }   .... }<\/code><\/pre>\n<p>\u0415\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v692\/\">V692<\/a>. \u041f\u0440\u043e\u00a0\u0442\u043e, \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432\u0435\u0447\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <em>fgets<\/em>, \u043c\u044b \u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u00ab<a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0599\/\">\u0421\u0442\u0440\u0435\u043b\u044f\u0435\u043c \u0432\u00a0\u043d\u043e\u0433\u0443, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/a>\u00bb. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0432\u043e\u0445.<\/p>\n<h4>\u041d\u0438\u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b!<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 FTP \u0441\u0440\u043e\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u0434\u043b\u044f \u0443\u0441\u043f\u043e\u043a\u043e\u0435\u043d\u0438\u044f. \u041c\u0435\u0441\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f Windows Installer \u0440\u0430\u0434\u0443\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u0431\u0443\u0444\u0435\u0440\u0430 <em>lpValue<\/em> (\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <em>pcchValue<\/em> <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/msi\/nf-msi-msigetpatchinfoexw\">\u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/a>):<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v519\/\">V519<\/a> The &#8216;* pcchValue&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1779, 1782. msi.c 1782<\/p>\n<pre><code class=\"cpp\">UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode,                                LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext,                                LPCWSTR szProperty, LPWSTR lpValue,                                DWORD *pcchValue) {   ....   if ((*val &amp;&amp; *pcchValue &lt; len + 1) || !lpValue)   {     if (lpValue)       r = ERROR_MORE_DATA;     *pcchValue = len * sizeof(WCHAR);   }   *pcchValue = len;   .... }<\/code><\/pre>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v519\/\">V519<\/a> The &#8216;Status&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1254, 1255. cabinet.c 1255<\/p>\n<pre><code class=\"cpp\">ULONG CabinetExtractFile(IN PCABINET_CONTEXT CabinetContext,                    IN PCAB_SEARCH Search) {   ....   if (Status != CS_SUCCESS)   {     DPRINT(\"Cannot uncompress block\\n\");     if (Status == CS_NOMEMORY)       Status = CAB_STATUS_NOMEMORY;     Status = CAB_STATUS_INVALID_CAB;     goto UnmapDestFile;   }   .... }<\/code><\/pre>\n<p>\u0413\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a Windows Installer, \u0442\u0430\u043c \u0438 CAB\u2011\u0430\u0440\u0445\u0438\u0432\u044b, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435, \u043a\u0430\u043a\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f\u00a0\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u0435\u0441\u0442\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0430\u0432\u0442\u043e\u0440 \u0445\u043e\u0442\u0435\u043b \u0432\u0435\u0440\u043d\u0443\u0442\u044c <em>CAB_STATUS_NOMEMORY<\/em>, \u043d\u043e\u00a0\u043d\u0435\u00a0\u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u0442\u0443\u0441 \u043d\u0435\u00a0\u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u00ab\u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 CAB\u2011\u0444\u0430\u0439\u043b\u00bb, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a\u00a0\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<h4>\u0412\u0430\u0448 \u043c\u0438\u043d\u0443\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v605\/\">V605<\/a> Consider verifying the expression. An unsigned value is compared to the number -3. link.c 267<\/p>\n<pre><code class=\"cpp\">typedef enum {   HLINKSETF_TARGET   = 0x00000001,   HLINKSETF_LOCATION = 0x00000002 } HLINKSETF;  typedef unsigned long       DWORD;  static HRESULT WINAPI IHlink_fnSetStringReference(   IHlink* iface,   DWORD grfHLSETF,   LPCWSTR pwzTarget,   LPCWSTR pwzLocation) {   HlinkImpl  *This = impl_from_IHlink(iface);    TRACE(\"(%p)->(%i %s %s)\\n\", This, grfHLSETF, debugstr_w(pwzTarget),             debugstr_w(pwzLocation));    if(grfHLSETF > (HLINKSETF_TARGET | HLINKSETF_LOCATION) &amp;&amp;      grfHLSETF &lt; -(HLINKSETF_TARGET | HLINKSETF_LOCATION))  \/\/ &lt;=        return grfHLSETF;    .... }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430 \u0441\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u0433\u043b\u0443\u0431\u0436\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. COM, ActiveX \u2014 \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u043b\u0438 \u0432\u0430\u0441 \u0432 \u0434\u0440\u043e\u0436\u044c \u043f\u0440\u0438 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439? \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043e\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0412\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b.<\/p>\n<h4>\u0417\u0432\u0443\u043a \u043d\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always true: adsi->pwfxSrc->wBitsPerSample == 16. imaadp32.c 794<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always true: adsi->pwfxSrc->wBitsPerSample == 16. imaadp32.c 796<\/p>\n<pre><code class=\"cpp\">static LRESULT ADPCM_StreamOpen(PACMDRVSTREAMINSTANCE adsi) {   ....   if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||       adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||       adsi->pwfxSrc->wBitsPerSample != 16)         \/\/ &lt;=         goto theEnd;    nspb = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxDst)->wSamplesPerBlock;   TRACE(\"spb=%u\\n\", nspb);    \/* we check that in a block, after the header, samples are present on    * 4-sample packet pattern    * we also check that the block alignment is bigger than    * the expected size    *\/   if (((nspb - 1) &amp; 3) != 0) goto theEnd;   if ((((nspb - 1) \/ 2) + 4) * adsi->pwfxDst->nChannels     &lt; adsi->pwfxDst->nBlockAlign   ) goto theEnd;    \/* adpcm coding... *\/   if (adsi->pwfxSrc->wBitsPerSample == 16 \/\/ &lt;=    &amp;&amp; adsi->pwfxSrc->nChannels == 2)      aad->convert = cvtSS16imaK;   if (adsi->pwfxSrc->wBitsPerSample == 16 \/\/ &lt;=    &amp;&amp; adsi->pwfxSrc->nChannels == 1)      aad->convert = cvtMM16imaK;   .... }<\/code><\/pre>\n<p>\u0417\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 ReactOS \u0442\u043e\u0436\u0435 \u0431\u043e\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041f\u0435\u0440\u0435\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (resampling) \u043d\u0435\u0442, \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430&#8230; \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043a\u043e\u0434\u0430 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0441\u0432\u044f\u0437\u0430\u043d \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e: \u044d\u0442\u043e \u043a\u043e\u0434\u0435\u043a <em>ADPCM<\/em>.<\/p>\n<p>\u0421\u0443\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438: \u0443\u0436\u0435 \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0441\u044d\u043c\u043f\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u044d\u043c\u043f\u043b\u043e\u0432 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 16 \u0431\u0438\u0442, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043c\u0435\u0442\u043a\u0435 <em>theEnd<\/em>. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u0442\u0438\u043d\u043d\u044b.<\/p>\n<h4>\u0412\u0437\u0430\u0438\u043c\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u044b<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v637\/\">V637<\/a> Two opposite conditions were encountered. The second condition is always false. Check lines: 2389, 2392. devinst.c 2389<\/p>\n<pre><code class=\"cpp\">HDEVINFO WINAPI SetupDiGetClassDevsExW(   CONST GUID *class,   PCWSTR enumstr,   HWND parent,   DWORD flags,   HDEVINFO deviceset,   PCWSTR machine,   PVOID reserved) {   if (flags &amp; DIGCF_ALLCLASSES)   {     \/* The caller wants all classes. Check if      * the deviceset limits us to one class *\/      ....   }   else if (class)   {     \/* The caller wants one class. Check if it matches deviceset class *\/     ....   }   else if (!IsEqualIID(&amp;list->ClassGuid, &amp;GUID_NULL))            \/\/ &lt;=   {     \/* No class specified. Try to use the one of the deviceset *\/     if (IsEqualIID(&amp;list->ClassGuid, &amp;GUID_NULL))                \/\/ &lt;=       pClassGuid = &amp;list->ClassGuid;     else     {       SetLastError(ERROR_INVALID_PARAMETER);       goto cleanup;     }   }   else   {     SetLastError(ERROR_INVALID_PARAMETER);     goto cleanup;   }   .... }<\/code><\/pre>\n<p>\u041a\u043e\u0434 \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u00ab\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0GUID \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435\u00a0\u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d, \u0438 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435\u00a0\u043e\u0442\u043e\u0448\u043b\u0438 \u043e\u0442\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430\u00a0\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 <em>UniATA<\/em>. \u0414\u0430, \u044d\u0442\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0435\u0433\u043e \u043d\u0430\u0434\u043e\u00a0\u0431\u044b\u043b\u043e \u0438\u0437\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0440\u044f\u0434\u0443 \u0441\u00a0\u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438, \u043d\u043e\u00a0\u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u043c\u0438\u043c\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u043d\u0435\u00a0\u043d\u0430\u0434\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u043a\u043e\u0434&#8230; \u041d\u0435\u0442, \u0442\u0430\u043a\u043e\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043f\u0443\u0441\u043a\u0430\u0442\u044c.<\/p>\n<h4>\u0412 DMA \u043f\u043e\u0437\u0432\u043e\u043d\u0438\u043b\u0438 \u0438 \u0441\u0431\u0440\u043e\u0441\u0438\u043b\u0438<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v646\/\">V646<\/a> Consider inspecting the application&#8217;s logic. It&#8217;s possible that &#8216;else&#8217; keyword is missing. id_ata.cpp 7820<\/p>\n<pre><code class=\"cpp\">ULONG NTAPI AtapiSendCommand(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb,                  IN ULONG CmdAction) {   ....   if((Srb->Cdb[0] == SCSIOP_REQUEST_SENSE)   &amp;&amp; !(deviceExtension->HwFlags &amp; UNIATA_SATA)) {     KdPrint2((     PRINT_PREFIX \"AtapiSendCommand: SCSIOP_REQUEST_SENSE -> no dma setup (2)\\n\"     ));     ....     AtapiDmaReinit(deviceExtension, LunExt, AtaReq);   } if(AtaReq->TransferLength) {    \/\/ &lt;=     if(!dma_reinited) {       KdPrint2((PRINT_PREFIX \"AtapiSendCommand: AtapiDmaReinit()\\n\"));       AtapiDmaReinit(deviceExtension, LunExt, AtaReq);     ....     }   } else {     KdPrint2((PRINT_PREFIX \"AtapiSendCommand: zero transfer\\n\"));     ....     if(!deviceExtension->opt_AtapiDmaZeroTransfer     &amp;&amp; !(deviceExtension->HwFlags &amp; UNIATA_SATA)) {       KdPrint2((PRINT_PREFIX \"AtapiSendCommand: AtapiDmaReinit() to PIO\\n\"));       AtapiDmaReinit(deviceExtension, LunExt, AtaReq);     }   }   .... }<\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0431\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u043b\u0438\u0431\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Direct_memory_access\">DMA<\/a> \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 FALSE (\u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442), \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 PIO (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0432\u0432\u043e\u0434\/\u0432\u044b\u0432\u043e\u0434). \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0435\u0437\u043a\u0438\u0439 &#171;\u0437\u0430\u043f\u0430\u0445&#187; \u043e\u0442 \u043a\u043e\u0434\u0430 \u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0411\u044b\u043b \u043b\u0438 \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0430\u0445 \u043f\u0440\u0435\u0434\u0432\u0435\u0441\u0442\u043d\u0438\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0435\u0434\u044b? \u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e.<\/p>\n<h4>\u041a\u0430\u0441\u0442\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044c<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v610\/\">V610<\/a> Undefined behavior. Check the shift operator &#8216;&lt;&lt;&#8216;. The left operand &#8216;(~(UCHAR) 0x0d)&#8217; is negative. id_ata.cpp 2705<\/p>\n<pre><code class=\"cpp\">BOOLEAN NTAPI AtapiResetController(IN PVOID HwDeviceExtension, IN ULONG PathId,                      IN BOOLEAN CompleteType) {   ....   case ATA_NVIDIA_ID: {   ULONG offs;   ULONG Channel = deviceExtension->Channel + j;   ....   if(ChipFlags &amp; NVQ) {     KdPrint2((PRINT_PREFIX \"  NVQ, 32bits reg\\n\"));     AtapiWritePortEx4(NULL,       (ULONGIO_PTR)(&amp;deviceExtension->BaseIoAddressSATA_0), offs + 4,       AtapiReadPortEx4(NULL,          (ULONGIO_PTR)(&amp;deviceExtension->BaseIoAddressSATA_0), offs + 4)        &amp; ((~(ULONG)0x0000000d) &lt;&lt; (!Channel * 16))     );   } else {     AtapiWritePortEx1(NULL,       (ULONGIO_PTR)(&amp;deviceExtension->BaseIoAddressSATA_0), offs + 1,       AtapiReadPortEx1(NULL,          (ULONGIO_PTR)(&amp;deviceExtension->BaseIoAddressSATA_0), offs + 1)        &amp; ((~(UCHAR)0x0d) &lt;&lt; (!Channel * 4)) \/\/ &lt;=      );   }   ....   } }<\/code><\/pre>\n<p>\u0414\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 C++20 \u0441\u0434\u0432\u0438\u0433 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/operator_arithmetic#Built-in_bitwise_shift_operators\">\u0441\u0447\u0438\u0442\u0430\u043b\u0441\u044f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c<\/a>. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043a\u043e\u0434 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 <em>UniATA<\/em> \u043d\u0430\u00a0\u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0434\u043e\u043c \u043d\u0430\u00a0C, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043a\u0430\u043a\u00a0\u043a\u043e\u0434 C++, \u0438 \u044f\u0432\u043d\u043e \u0431\u0435\u0437\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 C++20, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432\u00a0\u044d\u043a\u0441\u0442\u0440\u0430\u0441\u0435\u043d\u0441\u0430 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0443\u0433\u0430\u0434\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u043e\u0436\u0438\u0434\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430: \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u043b\u0438\u00a0\u0436\u0435 \u043a\u0430\u0441\u0442 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e <em>0\u00d70D<\/em> \u0434\u043e <em>UCHAR<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u00a0\u0431\u044b \u043a\u0430\u043a <em>(UCHAR)~0\u00d70D<\/em>? \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e\u00a0\u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u0441\u043a\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0441\u00a0SATA\u2011\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c NVIDIA \u0438 \u043f\u043e\u0441\u0438\u0434\u0435\u0442\u044c \u0441\u00a0\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c&#8230;<\/p>\n<h4>\u0422\u043e \u0441\u0430\u043c\u043e\u0435, \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0435 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u0438\u0435 ReactOS<\/h4>\n<p>\u0422\u0435\u043c \u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043b\u0443\u0447\u0438\u043a \u0441\u0432\u0435\u0442\u0430 \u0432\u00a0\u0442\u0451\u043c\u043d\u043e\u043c \u0446\u0430\u0440\u0441\u0442\u0432\u0435: \u0432\u00a0\u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 ReactOS \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c PVS\u2011Studio \u043d\u0435\u00a0\u0432\u044b\u044f\u0432\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0437\u043e\u043d\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438\u00a0\u2014 \u0432\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0435. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"https:\/\/github.com\/reactos\/reactos\/milestone\/10?closed=1\">\u0414\u0436\u0430\u0441\u0442\u0438\u043d\u0443 \u041c\u0438\u043b\u043b\u0435\u0440\u0443<\/a> (DarkFire01) \u0432\u00a0ReactOS \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 <em>UEFI<\/em>, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <em>FreeLoader<\/em> \u0447\u0438\u0441\u0442 \u0441\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0433\u0440\u0430\u0434\u044b: \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u044d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=oBGAGCA9SlM\">\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u043c<\/a>, \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u0434 \u043f\u043e\u0448\u043b\u0438 <a href=\"https:\/\/www.youtube.com\/watch?v=KHZ7ZPHP1cE\">\u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=-uvUW6-jUHE\">\u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0445<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=jgK5xrieLlc\">\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445<\/a>, \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435. \u0418 \u043c\u044b \u044d\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043c 11-\u043c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c ReactOS.<\/p>\n<p>\u041d\u0430\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0438\u043b\u0438\u0441\u044c \u043a\u0443\u0434\u0430 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0430\u0434 <em>UEFI<\/em>. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e\u00a0\u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u00a0\u0436\u0435 \u0438\u0437\u044f\u0449\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u043a\u0430\u043a\u00a0\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0440\u0430 \u043d\u0435 \u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \ud83d\ude42<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430\u00a0\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0431\u043e\u0440\u043a\u0438, \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS\u2011Studio \u0441\u00a0\u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c\u044e \u0441\u043c\u043e\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432\u0441\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. ReactOS \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u043b\u0430\u0441\u044c \u0432\u00a0\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430, \u043d\u043e\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u2011\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043d\u043e\u0433\u043e. \u041e\u0447\u0435\u043d\u044c \u0440\u0430\u0434\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0\u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0440\u0432\u0443\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u00ab\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430\u043c\u00bb \u0432\u043e\u043f\u0440\u0435\u043a\u0438 \u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u044b\u043c \u0432\u043e\u043b\u043d\u0430\u043c \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u0430, \u043d\u043e\u00a0\u0440\u0430\u0441\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 <a href=\"https:\/\/github.com\/reactos\/reactos\/pull\/5744#issuecomment-1741766597\">\u0431\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u044b<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 (\u043a\u0440\u0430\u0441\u043d\u044b\u0435) \u043a \u0440\u0435\u0448\u0451\u043d\u043d\u044b\u043c (\u0437\u0435\u043b\u0451\u043d\u044b\u0435) \u0437\u0430 180 \u0434\u043d\u0435\u0439 \u0432 ReactOS Jira, \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 16.04.2024<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c14\/e6e\/26d\/c14e6e26d7c660be7ad4b08873b4c53b.png\" width=\"800\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c14\/e6e\/26d\/c14e6e26d7c660be7ad4b08873b4c53b.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e\u00a0\u044e\u0431\u0438\u043b\u0435\u0439\u043d\u044b\u0439 \u0440\u0435\u2011\u043e\u0431\u0437\u043e\u0440 ReactOS \u043f\u043e\u043c\u043e\u0433 \u0432\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438\u043b\u0438\u00a0\u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c. \u0425\u043e\u0442\u0438\u0442\u0435 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1122\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS\u2011Studio? \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u0430\u00a0\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u00a0\u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0435\u0431\u044f \u0436\u0434\u0430\u0442\u044c! \u0410\u00a0\u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0442\u043e \u0443\u00a0\u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e <a href=\"https:\/\/pvs-studio.ru\/ru\/order\/open-source-license\/\">\u0434\u043b\u044f\u00a0OSS\u2011\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441\u00a0\u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u043f\u0435\u0440\u0435\u0432\u043e\u0434: Taras Shevchenko. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/cpp\/1122\/\">Eleven moments of ReactOS: user mode gets better?<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/814173\/\"> https:\/\/habr.com\/ru\/articles\/814173\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>ReactOS \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442, \u0433\u0434\u0435 \u043f\u043e\u0431\u0435\u0434\u0443 \u043d\u0430\u0434 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439, \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0447\u0438 \u0438\u043b\u0438 \u0435\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043f\u0440\u0430\u0437\u0434\u043d\u0443\u044e\u0442 \u0442\u0430\u043a \u0433\u0440\u043e\u043c\u043a\u043e, \u0447\u0442\u043e FOSS-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043d\u0430 Rust \u0438 \u043f\u043e\u043b\u0435\u043c\u0438\u043a \u043e systemd. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 ReactOS \u0432 2013 \u0433\u043e\u0434\u0443, \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0439 \u0432\u0432\u0438\u0434\u0443 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0430\u043f\u043e\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 PVS-Studio \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b Wine. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e\u00a0ReactOS \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u00a0\u044f\u0434\u0440\u043e GNU\/Linux, \u0430\u00a0\u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Windows Server 2003\u00a0R2\u00a0\u0432 32-\u0431\u0438\u0442\u043d\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u0438 Windows Vista \u0432 64-\u0431\u0438\u0442\u043d\u043e\u0439. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Wine, <a href=\"https:\/\/www.winehq.org\/\">\u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438<\/a> Windows API \u0434\u043b\u044f\u00a0POSIX\u2011\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043b\u044f\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u044b Windows \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f\u00a0Windows \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u00a0\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0434\u0440\u043e GNU\/Linux. \u041f\u0440\u0438\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <a href=\"https:\/\/github.com\/otya128\/winevdm\">WineVDM<\/a> \u043d\u0430\u00a0Windows 11\u00a0\u044f\u0434\u0440\u043e \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043f\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u00a0\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u044f\u0434\u0440\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e Debian 12, \u0432\u0435\u0440\u043d\u043e? \ud83d\ude42<\/p>\n<p>\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Windows \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0442\u0451\u043a\u0448\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 Windows <a href=\"https:\/\/github.com\/reactos\/reactos\/blob\/master\/README.md#contributing--\">\u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e<\/a>.<\/p>\n<blockquote>\n<p><strong>Legal notice<\/strong>: If you have seen proprietary Microsoft Windows source code (including but not limited to the leaked Windows NT 3.5, NT 4, 2000 source code and the Windows Research Kernel), your contribution won&#8217;t be accepted because of potential copyright violation.<\/p>\n<\/blockquote>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430\u00bb \u0434\u043b\u044f\u00a0\u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u00a0\u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439, \u0438 \u0431\u0435\u0437\u00a0\u043e\u0448\u0438\u0431\u043e\u043a \u0435\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u042d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 FOSS\u2011\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0445 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u0432 \u0432\u043e\u0437\u043c\u0443\u0449\u0451\u043d\u043d\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0442 \u043d\u0430\u00a0\u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u043e\u0442\u043a\u0430\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 ReactOS \u043e\u0442\u00a0\u0432\u043a\u0443\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u043e\u0434\u0430, \u043d\u0430\u043c\u0435\u043a\u0430\u044f \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f 26\u00a0\u043b\u0435\u0442 \u0432\u00a0\u0430\u043b\u044c\u0444\u0430\u2011\u0442\u0435\u0441\u0442\u0435, \u0438 \u00ab\u043f\u043e\u0440\u0430\u00a0\u0431\u044b \u0443\u0436\u0435 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c\u00bb. \u041e\u0431\u00a0\u044d\u0442\u043e\u043c \u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437, \u0430\u00a0\u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 PVS\u2011Studio \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 PVS-Studio<\/h3>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PVS\u2011Studio \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1122\">\u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/a>. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1122\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 PVS\u2011Studio \u043d\u0435\u00a0\u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u043c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c, \u0430\u00a0\u043f\u0440\u0438\u00a0\u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u043e\u0434 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio-quickstart-cppwindows\/\">Windows<\/a>. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 (C and C++ Compiler Monitoring) \u0438 \u043b\u044e\u0431\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u00a0IDE. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0Visual Studio 2022. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u00a0\u2014 7.30.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0435\u0451 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>ReactOS\u00a0\u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u00a0\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u0430\u0440\u044f\u0434\u0443 \u0441\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/1110\/\">Unreal Engine<\/a>. ReactOS Build Environment (<a href=\"https:\/\/reactos.org\/wiki\/Build_Environment\">RosBE<\/a>) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0438\u043b\u0438\u00a0Live\u2011\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0442\u0438\u043b\u0438\u0442 <em>CMake<\/em>, <em>Bison<\/em>, <em>Flex<\/em> \u0438 <em>Ninja<\/em>. \u0410\u043d\u0430\u043b\u0438\u0437\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0447\u0435\u0440\u0435\u0437 <em>GCC<\/em> \u0441\u00a0\u043a\u043e\u0434\u043e\u043c, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 <a href=\"https:\/\/git.reactos.org\/?p=reactos.git;a=tree;hb=00c4b3d99f5b21bdbd402d6c6dd232f721491590\">00c4b3d<\/a> \u0432\u0435\u0442\u043a\u0438 <em>master<\/em>. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/0031\/\"><em>CLMonitor<\/em><\/a>. \u0427\u0442\u043e\u00a0\u043e\u043d \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442? \u042d\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0435 PVS\u2011Studio, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442\u00a0\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u00a0\u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0432\u00a0\u043f\u0435\u0440\u0435\u0447\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <em>GCC<\/em>, \u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432\u00a0\u0436\u0443\u0440\u043d\u0430\u043b.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <em>RosBE<\/em>, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u043f\u0430\u043f\u043a\u0443 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0438\u0437\u00a0\u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 <em>configure.cmd<\/em>. \u041f\u043e\u00a0\u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <em>CLMonitor<\/em> (\u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0432\u00a0\u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430:<\/p>\n<pre><code class=\"cpp\">\"C:\\Program Files (x86)\\PVS-Studio\\CLMonitor\" monitor<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u043b\u044e\u0431\u043e\u0439 \u0446\u0435\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <em>bootcd<\/em> (\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c):<\/p>\n<pre><code class=\"cpp\">cd output-MinGW-i386 ninja bootcd<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c <em>CLMonitor<\/em> c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">\"C:\\Program Files (x86)\\PVS-Studio\\CLMonitor\" analyze -l output.plog<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0443. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Visual Studio, \u0432 \u043e\u043a\u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <strong>Continue without code<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 <em>CLMonitor<\/em> \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430. \u041c\u044b \u0435\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0432 \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b <em>RosBE<\/em>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442 <strong>Extensions \u2192 PVS\u2011Studio \u2192 Open\/Save \u2192 Open Analysis Report<\/strong>.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u0410\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>\u00ab\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00a0\u2014 \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435\u00bb\u00a0\u2014 \u0442\u0430\u043a\u043e\u0439 \u0444\u0440\u0430\u0437\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Microsoft Office 2016\u00a0\u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a PVS\u2011Studio \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0433\u0434\u0435 \u0435\u0433\u043e \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u00a0\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0\u043f\u0435\u0440\u0435\u0447\u043d\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 ISO\u2011\u043e\u0431\u0440\u0430\u0437\u0430, \u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443 <em>RosBE<\/em> \u0438 \u0444\u0430\u0439\u043b\u044b <em>Public SDK<\/em>. \u041e\u043d\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u00a0\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 <em>Windows SDK<\/em>, \u0432\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043e\u00a0\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438\u043b\u0438\u00a0\u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 PVS\u2011Studio \u0432\u00a0\u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>Don&#8217;t Check Files<\/strong>.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u0438\u0437 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b ReactOS \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439. \u041f\u0443\u0442\u044c \u0434\u043e \u043f\u0430\u043f\u043a\u0438 <em>share<\/em> \u0438\u0437 <em>RosBE<\/em> \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<pre><code class=\"cpp\">dll\\directx\\wine\\ dll\\win32\\advapi32\\wine\\ dll\\win32\\dbghelp\\ drivers\\filesystems\\btrfs\\ drivers\\filesystems\\udfs\\ sdk\\include\\psdk\\ sdk\\lib\\3rdparty\\ sdk\\tools\\<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043e\u0447\u043a\u0438, \u0432\u0435\u0434\u044c ReactOS \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u0432\u043e\u0438\u043c \u0443\u043c\u0435\u043d\u0438\u0435\u043c \u00ab\u0432\u0437\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u043e\u0442\u00a0\u043a\u043e\u0441\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430, \u043d\u0430\u0434 \u0447\u0435\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0448\u0443\u0442\u044f\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/reactos\/articles\/418029\/\">\u0438 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438<\/a> \ud83d\ude42<\/p>\n<p>\u041f\u043e \u0441\u043b\u0443\u0447\u0430\u044e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044e\u0449\u0435\u0439\u0441\u044f 11-\u0439 \u0433\u043e\u0434\u043e\u0432\u0449\u0438\u043d\u044b \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 ReactOS, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e 11\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u043e\u043a \u0432\u00a0\u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445\u00a0\u2014 \u043e\u0434\u0438\u043d \u0441\u044e\u0440\u043f\u0440\u0438\u0437)! \u0411\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0442\u044c\u0441\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u00a0\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u043e\u2011\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u00ab\u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0431\u043e\u044f\u043c\u0438\u00bb.<\/p>\n<h4>\u0414\u0430, Windows \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u0442\u0430\u043a \u0436\u0435?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v501\/\">V501<\/a> There are identical sub-expressions &#8216;DCDest->dctype == DCTYPE_INFO&#8217; to the left and to the right of the &#8216;||&#8217; operator. bitblt.c 64<\/p>\n<pre><code class=\"cpp\">BOOL APIENTRY NtGdiAlphaBlend(   HDC hDCDest,   LONG XOriginDest,   LONG YOriginDest,   LONG WidthDest,   LONG HeightDest,   HDC hDCSrc,   LONG XOriginSrc,   LONG YOriginSrc,   LONG WidthSrc,   LONG HeightSrc,   BLENDFUNCTION BlendFunc,   HANDLE hcmXform) {   PDC DCDest;   PDC DCSrc;   ....   if (DCDest->dctype == DCTYPE_INFO || DCDest->dctype == DCTYPE_INFO)  \/\/ &lt;=   {     GDIOBJ_vUnlockObject(&amp;DCSrc->BaseObject);     GDIOBJ_vUnlockObject(&amp;DCDest->BaseObject);     \/* Yes, Windows really returns TRUE in this case *\/     return TRUE;   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e Windows \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <em>TRUE<\/em> \u043f\u0440\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/gdi\/windows-gdi\">GDI<\/a>, \u043d\u043e <em>DCSrc<\/em> \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442! \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430: \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0441\u0442\u043e\u044f\u0442 \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u043e\u0434\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <em>\u0418\u041b\u0418<\/em>.<\/p>\n<h4>\u0412\u0430\u0448 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v564\/\">V564<\/a> The &#8216;&amp;&#8217; operator is applied to bool type value. You&#8217;ve probably forgotten to include parentheses or intended to use the &#8216;&amp;&amp;&#8217; operator. loaddlg.cpp 376<\/p>\n<pre><code class=\"cpp\">#define SECURITY_FLAG_SECURE                 0x00000001  static BOOL CertGetSubjectAndIssuer(HINTERNET hFile,                         CLocalPtr&lt;char> &amp;subjectInfo,                         CLocalPtr&lt;char> &amp;issuerInfo) {   ....   DWORD size, flags;    size = sizeof(flags);   if (!InternetQueryOptionA(hFile,                             INTERNET_OPTION_SECURITY_FLAGS,                             &amp;flags,                             &amp;size))   {     return FALSE;   }    if (!flags &amp; SECURITY_FLAG_SECURE)  \/\/ &lt;=   {     return FALSE;   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0442\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u0441\u043a\u043e\u0431\u043a\u0438: \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>flags<\/em> \u0440\u0430\u0432\u043d\u0430 0. \u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f &#8216;!&#8217; \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>false<\/em>. \u041f\u043e\u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <em>\u0418<\/em> \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0436\u0435 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u043e\u043b\u0438: \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u043e \u0438 \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0435.<\/p>\n<h4>Frown The Pointers<\/h4>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0434 \u0440\u0443\u043a\u0443 \u043f\u043e\u043f\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 FTP-\u043a\u043b\u0438\u0435\u043d\u0442. \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043c\u0435\u043d\u044f \u0440\u0430\u0432\u043d\u043e\u0434\u0443\u0448\u043d\u044b\u043c \u043a \u043e\u0441\u043e\u0431\u043e \u0436\u0435\u0441\u0442\u043e\u043a\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445. \u041a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c? \u0413\u0434\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430? \u0427\u044c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u044b? \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/0063\/\">Access Violation<\/a>!<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v692\/\">V692<\/a> An inappropriate attempt to append a null character to a string. To determine the length of a string by &#8216;strlen&#8217; function correctly, a string ending with a null terminator should be used in the first place. ftp.c 1355<\/p>\n<pre><code class=\"cpp\">#define MAXHOSTNAMELEN 64 char* hostname;  void pswitch(int flag) {   ....   static struct comvars {     int connect;     char name[MAXHOSTNAMELEN];     ....   } proxstruct, tmpstruct;   struct comvars *ip, *op;   ....   if (flag) {     if (proxy)       return;     ip = &amp;tmpstruct;     op = &amp;proxstruct;     proxy++;   }   ....   if (hostname) {     (void) strncpy(ip->name, hostname, sizeof(ip->name) - 1);     ip->name[strlen(ip->name)] = '\\0';   } else     ip->name[0] = 0;   .... }<\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"cpp\">ip->name[strlen(ip->name)] = '\\0';<\/code><\/pre>\n<p>\u0412 \u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/0088\/\">\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c<\/a> (&#8216;\\0&#8217;) \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438. \u042e\u043c\u043e\u0440 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 &#8216;\\0&#8217; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>strlen<\/em>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044f \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0443\u043b\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0430\u0434\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438 \ud83d\ude42<\/p>\n<p>\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043e\u043d \u0438 \u0442\u0430\u043a \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0431\u0443\u0444\u0435\u0440\u0430. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0430 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c Access Violation.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 <em>tmpstruct<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0435\u0433\u043e \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0443\u0442 <a href=\"https:\/\/en.cppreference.com\/w\/c\/language\/initialization#Empty_initialization\">empty-\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/a>. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0431\u0443\u0444\u0435\u0440 <em>name<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0443\u043b\u044f\u043c\u0438.<\/p>\n<p>\u0412<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-376078","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/376078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=376078"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/376078\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=376078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=376078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=376078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}