· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› MessageBox for KernelMode

Посл.отвђт Сообщенiе


Дата: Сен 10, 2004 22:30:36

Всем огромный привет.
Вот всё же начинаю, мож и заново, но, тема такова:
Для простого юзера компа мессаги о результате работы драйвера неудобно наблюдать ч/з спец. Программы неплохо бы видеть их как 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==--


Дата: Сен 12, 2004 09:00:14

Ну сделай флажок показа мессаги. Если мессага есть на экране - флажок установлен. Как только мессага падает - флажок сбрасывается. Перед выводом новой мессаги проверяешь флаг и, если он установлен, делаешь задержку и проверяешь снова (можно и без задержки, но лагать будет из-за цикла бесконечного).


Дата: Сен 12, 2004 19:06:25

И как же это проверить то?
-Mutex молчит - всегла "0", а GetPixel - только в User-e
???


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069