MessageBox for KernelMode

Тема в разделе "WASM.WIN32", создана пользователем PavPS, 10 сен 2004.

  1. PavPS

    PavPS New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2004
    Сообщения:
    109
    Адрес:
    Russia
    Всем огромный привет.

    Вот всё же начинаю, мож и заново, но, тема такова:

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

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Ну сделай флажок показа мессаги. Если мессага есть на экране - флажок установлен. Как только мессага падает - флажок сбрасывается. Перед выводом новой мессаги проверяешь флаг и, если он установлен, делаешь задержку и проверяешь снова (можно и без задержки, но лагать будет из-за цикла бесконечного).
     
  3. PavPS

    PavPS New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2004
    Сообщения:
    109
    Адрес:
    Russia
    И как же это проверить то?

    -Mutex молчит - всегла "0", а GetPixel - только в User-e

    ???