Re[3]: GINA:пропадает Logon диалог
От: Vladimir_the_Red_Sunny  
Дата: 12.05.04 07:03
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>Она не должна быть пустая, в ней как раз то и должен выводится диалог логина юзера. ТОлько нельзя забывать, что когда основной поток будет ползать по message loop диалога, вполне может возникнуть какой нибудь SAS и winlogon вызовет соответствующую ф-ю GINA в другом потоке. Это остается на контроле программиста, что делать в данном случае, я в таких случаях всегда возвращал WLX_SAS_ACTION_NONE, а весь контроль держал сам в диалоге.


У меня в WlxDisplaySASNotice выводилось предложение нажать Ctrl+Alt+del, а диалог логина — в WlxLoggedOutSAS. Это чем-то неправильно?

M>Если в WlxScreenSaverNotify вернуть FALSE то никаких засыпаний не будет.


Категорически утверждать не возьмусь, потому что не помню, но, кажется, он почему-то все равно засыпал...

V__>>и еще, кажется, какая-то функция, ответственная за вывод диалога с сообщением в этом случае.


M>WlxDisplayStatusMessage, возвращаем FALSE и winlogon знает что никаких messages небыло отображено.


V__>>Щас не помню деталей, некоторое время не работал над этим проектом. Так вот, во все пустые функции WlxЧё-ТоТам, которые должны/могут отображать диалог с сообщением, я запихнул по диалогу, и проблема пропала.


M>Они не должны быть пустые, т.е. хотябы TRUE или FALSE они должны возвращать. И запихивать туда диалоги вовсе не обязательно.


Посмотрел. Бесконечно вызывалась функция WlxDisplayLockedNotice. Возвращать тру-фолс она не могёт, ибо воид.

V__>>Пока диалог (модальный!) существует, Wlx-функция работает. Пришел евент — умирает вместе с диалогом. Но если она (или диалог) закончили работу по каким-то другим причинам (напр. нажали ОК на диалоге, или вовсе его не создавали) — функция сразу же снова вызывается. Infinite loop. Отображением диалога я ее как бы "стопорил", чтобы вызывалась единожды.


M>Именно так оно и работает, это нужно самому контролировать.


А как?

M>Как я уже сказал можно просто возвращать везде FALSE и говорить о том что никаких display messages мы не отображаем и тогда вышеописанная проблема отпадает сама собой.


Так не всякая функция что-то возвращает...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.