Доброго времени суток, господа!
Пишу свою GINA DLL, как обертку вокруг MS GINA. Столкнулся с непонятным ее поведением под Windows XP.
Диспозиция:
В GINA DLL (в функции WlxInitialize) запускаю отдельный поток, который общается с моим же сервисом, получая от него команды на вход в систему, блокировку, выход из системы. При получении команды этот поток инициализирует некоторые перменные и вызывает WlxSASNotify для активации соотв. функций GINA DLL. Изничально все разрабатывалось и тестировалось под Win2k, но с прицелом на WinXP.
Непосредственно проблема:
Под WinXP не происходит logoff, когда я из функции WlxWkstaLockedSAS возвращаю WLX_SAS_ACTION_FORCE_LOGOFF. Разблокировка работает (WLX_SAS_ACTION_UNLOCK_WKSTA).
Код:
int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext,DWORD dwSasType)
{
LogMessage(hLogFile, "+++ WlxWkstaLockedSAS");
switch (lThreadCommand) // переменная, которая устанавливается во вспом. потоке
{
case COMMAND_UNLOCK:
{
return WLX_SAS_ACTION_UNLOCK_WKSTA;
}
case COMMAND_LOGOFF:
{
return WLX_SAS_ACTION_FORCE_LOGOFF;
}
default:
{
return WLX_SAS_ACTION_NONE;
}
}
// return Wlxtbl.WlxWkstaLockedSAS(pWlxContext,dwSasType);
}
12.10.04 00:27: Перенесено модератором из 'C/C++' — Павел Кузнецов