2009-05-17 26 views
5

Nếu tôi có một dll gọi là "foo.dll" và người dùng cuối đổi tên thành "bar.dll" và LoadLibrary của nó, làm thế nào tôi có thể nhận được tên "bar.dll "từ bên trong dll của tôi?Lấy tên của một DLL từ bên trong dll

Có phải GetModuleFilename (hModule, buffer); ?

Trả lời

7

có, bạn cần phải lưu trữ hModule trong DllMain

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) 
{ 
    switch (fdwReason) 
    { 
    case DLL_PROCESS_ATTACH: 
     hModule = hinstDLL; 
     break; 
    } 
} 
4

Bạn cần cung cấp DllMain chức năng, lưu trữ các mô-đun xử lý bạn có được thông qua trong một biến tĩnh, và sau đó sử dụng biến mà gọi GetModuleFilename. Bạn nên tránh gọi GetModuleFilename (hoặc bất kỳ chức năng nào khác) trong chính DllMain, vì Windows rất kén chọn về những gì bạn có thể và không thể làm trong đó.

Các vấn đề liên quan