ReasonCodeNeedsBugID возвращает значение 25-го бита unsigned long'a или unsigned int'а ReasonCodeNeedsComment возвращает значение 24-го бита.
на счет того, что разобрать в том, что они реально делают просто. но по моему в любом уважающем себя языке есть функции алгебры логики получения нужного бита из байтов, слов, и т.д. мне не ясно зачем они нужны впринципе, может тут кроется какой-то подвох и система совершает некие непонятные действия при их вызове или они нужны чтобы повысить рейтинг вызовов библиотеки P.S. если меня еще не поняли, то обратите внимание на название функций, а не суть их работы
Код (Text): .text:77D872BE _ReasonCodeNeedsBugID@4 proc near .text:77D872BE .text:77D872BE arg_0 = dword ptr 8 .text:77D872BE .text:77D872BE mov edi, edi .text:77D872C0 push ebp .text:77D872C1 mov ebp, esp .text:77D872C3 mov eax, [ebp+arg_0] .text:77D872C6 shr eax, 19h .text:77D872C9 and eax, 1 .text:77D872CC pop ebp .text:77D872CD retn 4 .text:77D872CD _ReasonCodeNeedsBugID@4 endp как видишь ничего интересного.
ReasonCodeNeedsBugID - что тут не понятного, вызывающая программа, временно исключается из виндоусофского планировщика багов на время Rand(1000) мс. ReasonCodeNeedsComment - устанавливает значение сообщения чтобы оправдать баг все того же планировщика. Функции используются системой и естественно не позволяют вызывать себя из несистемных библиотек. Маскируясь бессмысленным кодом.
MaKsIm Покопался тут. Короче так понял, что на входе некий код, который сообщает о причине перезагрузки/завершения работы ситсемы и т.д. По этому коду можно определить саму причину перезагрузки с пом. ф-ции GetReasonTitleFromReasonCode в виде строкового сообщения. Все биты кода не используются для определения текста сообщения. shutdown.exe вызывает из user32 эти 2 ф-ции чтобы определить, нужно-ли показывать юзеру сообщение о причине завершения работы системы и соотв. показывать ли сам текст сообщения. Что-то вроде этого. Короче, разбирай shutdown.exe, если интересно.