С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Снежок
#1

Обертка GinaDLL (msgina.dll) - C++

12.03.2008, 16:52. Просмотров 869. Ответов 0
Метки нет (Все метки)

Написал обертку GinaDLL. Мне нужно отловить события авторизации пользователя, завершения сессии, перезагрузки и завершения работы.
Все ловится если используется SAS, т.е. когда пользователь выполняет необходимыве действия через Ctrl+Alt+Del.
Но я никак немогу добиться того что бы события отлавливались когда пользователь завершает сессию и работу через меню Пуск.

Подскажите как нужно сделать.

VOID WINAPI PKP(ULONG NumEv, PWSTR AUserName)
{
//эта процедурка вызывает из другой длл метод который просто добавляет строку в лог-файл.
if(!hExtPKP) hExtPKP=LoadLibrary('ExtPKP.dll');
hPKPProc=(PKPWinlogonNotif)::GetProcAddress(hExtPKP,'PKPWinlogonNotif');
if (hPKPProc) hPKPProc(NumEv,AUserName);
hPKPProc=NULL;
FreeLibrary(hExtPKP);
hExtPKP=NULL;

}

//Используемые методы-обертки

BOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext)
{
PKP(ULONG(100+8),NULL);//до
return Wlxtbl.WlxIsLogoffOk(pWlxContext);
PKP(ULONG(100+8),NULL);//после
//лог-файл остается неизмененным
}

int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,DWORD dwSasType,PVOID pReserved)
{
int iRet;
iRet=Wlxtbl.WlxLoggedOnSAS(pWlxContext,dwSasType,pReserved);
PKP((ULONG)iRet,NULL);
return iRet;
//выполняется только при использовании Ctrl+Alt+Del, что и понятно
}

int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE phToken,PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,PVOID *pProfile)
{
int iRet;
iRet = Wlxtbl.WlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,pLogonSid,pdwOptions,phToken,pNprNotifyInfo,pProfile);
PKP((ULONG)iRet,pNprNotifyInfo->pszUserName);
return iRet;
//выполняется только при использовании Ctrl+Alt+Del, что и понятно
}

VOID WINAPI WlxLogoff(PVOID pWlxContext)
{
PKP(ULONG(100+11),NULL);//до
Wlxtbl.WlxLogoff(pWlxContext);
PKP(ULONG(100+11),NULL);//после
//лог-файл остается неизмененным
}

VOID WINAPI WlxShutdown(PVOID pWlxContext,DWORD ShutdownType)
{
PKP(ULONG(100+17),NULL);//до
Wlxtbl.WlxShutdown(pWlxContext,ShutdownType);
PKP(ULONG(100+17),NULL);//после
//лог-файл остается неизмененным
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2008, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обертка GinaDLL (msgina.dll) (C++):

C++ обертка для dll C - C++
Как написать C++ обертку для динамической библиотеки C?

обертка С строки - C++
подскажите, насколько разумно выделять больше памяти под строку, чем нужно? скажем инициализирую класс каким то значением и выделяю...

Обертка для list - C++
Есть следующая иерархия классов: class A {}; class B : public A {}; class C : public A {}; class D : public C {}; Я...

Что такое обертка функции? - C++
дана функция на входе получает 2 параметра имя и возраст. srting children(string ima, int age) Нужно написать обертку, для...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Обертка над boost::lexical_cast для работы с unsigned типами - C++
Пару дней назад выяснилось, что boost::lexical_cast не удовлетворяет нескольким требованиям в моей программе. boost::lexical_cast...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2008, 16:52
Привет! Вот еще темы с ответами:

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик. - C++
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Добавление своей dll в список dll подгружаемых процессом чужого процесса - C++
Вообще вопрос такой,как можно внедрить свою dll в список Import чужого не запущенного процесса?Не изменяя структуры файла.

Точка входа в процедуру InterlockedCompareExchange64 не найдена в библиотеке DLL KERNEL32.DLL - C++
День добрый! При запуске моей программы (много моего кода + много разных сторонних dll) на WinXP SP2, получаем соответствующую ошибку...

Запись из внедренной dll в другую dll этого процесса - C++
main.cpp #include <Windows.h> extern int writeprocess(); DWORD WINAPI MainThread(LPVOID lpParam) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.