Re: Winlogon Notification DLL
От: Alex Fedotov США  
Дата: 05.06.03 13:53
Оценка:
Здравствуйте, Sphinks, Вы писали:

S>

S>#include <windows.h>
S>#include <SysUtils.hpp>
S>#include "Winwlx.h"

S>#pragma argsused
S>BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
S>{


S>    switch (fwdreason)
S>    {
S>        case DLL_PROCESS_ATTACH:
S>            {
S>             //Disable DLL_THREAD_ATTACH & DLL_THREAD_DETACH
S>             //notification calls. This is a performance optimization
S>             //for multi-threaded applications that do not need
S>             //thread-level notifications of attachment or detachment.
S>            DisableThreadLibraryCalls (hinstDLL);
S>            }
S>            break;
S>    }

S>    return TRUE;
S>
S>extern "C" VOID __declspec(dllexport) WLEventLock(PWLX_NOTIFICATION_INFO pInfo)
S>{ int fHandle;
S> FileCreate("C:\\Logons.txt");
S> FileWrite(fHandle,IntToStr(Now()).c_str(),StrLen(IntToStr(Now()).c_str()));
S> FileWrite(fHandle,"\n",StrLen("\n"));
S> FileWrite(fHandle,"User logoff : ",StrLen("User logoff : "));
S> AnsiString buf;
S> buf =pInfo->UserName;
S> FileWrite(fHandle,buf.c_str(),StrLen(buf.c_str()));
S> FileWrite(fHandle,"\n",StrLen("\n"));
S> FileClose(fHandle);
S>}
S>

S>(реализация — Borland CBuilder 6)
S>так вот, если цеплятьс як этой DLL из какой нибудь проги, то все нормально, а Winlogon ее не загружает, по-видимому(((
S>В чем может быть ошибка?

А как ты ее регистрируешь? Я, конечно, не знаю тонкостей Builder, но на первый взгляд здесь две проблемы:

1) отсутствует __stdcall, то есть должно быть

extern "C" VOID __declspec(dllexport) __stdcall WLEventLock(...);

2) имя, под которым экспортируется функция, а именно _WLEventLock@4, не совпадает с тем, которое ты регистрируешь для WinLogon.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.