Здравствуйте, 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.