G
Guest
В программе сидит очень досадный жук, который генерирует BSOD в процессе сворачивания программы с последующим перезапуском компьютера. Точнее говоря, BSOD генерируется драйвером при обращении к функции чтения регистра процессора, выполняемой в режиме Ring0. Обращение происходит периодически каждые полсекунды. Процесс обращения к функции выделен в отдельный поток. Поэтому мне хотелось бы перед тем, как моё приложение будет свёрнуто на панель задач, данный поток был бы приостановлен. Для этого мне необходимо перехватывать (возможно) существующее WM-сообщение. Пока я делаю это следующим образом:
procedure TForm1.WMMES(var Msg: TMessage);
begin
case MSG.LParam of
$0012F5D0..$0012F5D4: SearchThread.Suspend;
$0012F798: MessageBox(0,'Restart the program, please!','CBId: Warning',MB_ICONWARNING or MB_TASKMODAL);
end;
end;
Метод это работает только на моём ПК
procedure TForm1.WMMES(var Msg: TMessage);
begin
case MSG.LParam of
$0012F5D0..$0012F5D4: SearchThread.Suspend;
$0012F798: MessageBox(0,'Restart the program, please!','CBId: Warning',MB_ICONWARNING or MB_TASKMODAL);
end;
end;
Метод это работает только на моём ПК