Всем огромный привет. Вот всё же начинаю, мож и заново, но, тема такова: Для простого юзера компа мессаги о результате работы драйвера неудобно наблюдать ч/з спец. Программы неплохо бы видеть их как MsgBox. Очевидны 2 варианта 1) ухитриться и вызвать MessageBox из юзера 2) послать при помощи IoRaiseInformationalHardError. Вариант номер 1- изврат, и того не стоит. Остановимся на 2-ом. Так вот тут какой прикол: прога посылает 2 раза IoRaiseInformationalHardError 2 разные строки, но отображается только 1-я, а последняя как-то пролетает. Если же успеть (ессно, при больших промежутках времени можду послониями мессаг) нажать на «окошечко» в трее, то первая соотв-но пропадет, и, как раз вызовется к этому времени и появится вторая. Но если выхвать подряд, то… а чаще всего подряд и идет… Надеюсь проблема ясна. Теперь это: Return Value: BOOLEAN - TRUE if we decided to dispatch a pop-up. FALSE if we decided not to because: - pop-ups are disabled in the requested thread, or - a pool allocation failed, or - an equivalent pop-up is currently pending a user response (i.e. waiting for the user to press <OK>) or in the queue, or - too many pop-ups have already been queued. Так вот, решение проблемы может заключатся в следующем: посалем мессагу, если есть еще какая-то(waiting for the user to press <OK>) or in the queue), то помещаем в очередь асинхронных операций, при условии, повторять вызов, пока не будет TRUE. Так вот, извините, хрен, всегда возвращается TRUE, даже когда хоть одна есть. Может я не так трактую фразу «waiting for the user to press <OK>», но тогда вопрос – как решить мою проблему???? Вопрос по ходу: для контроля макс кол-ва мессаг используется семафор (max==19h у меня), но при уже показанной 1-й мессаги, и при вызове 2-й значение семафора, всё равно 0. Мож опять где ошибся… Пожалуйста help. P.S.: Может проблема и не столь глобальна, важна, но не тривиальна, в смысле задачи о выдаче мессаг без помощи спец. программ. Может есть каки-то другие способы, тогда очччень буду рад их услышать. Заранее огромное спасибо! --==PPS==--
Ну сделай флажок показа мессаги. Если мессага есть на экране - флажок установлен. Как только мессага падает - флажок сбрасывается. Перед выводом новой мессаги проверяешь флаг и, если он установлен, делаешь задержку и проверяешь снова (можно и без задержки, но лагать будет из-за цикла бесконечного).