線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1250
推到 Plurk!
推到 Facebook!

在Driver內傳指標到DLL回來後位址跑掉

尚未結案
wuming
一般會員


發表:1
回覆:0
積分:0
註冊:2005-04-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-05 09:06:39 IP:60.248.xxx.xxx 未訂閱
各位前輩請教一下 我寫了一個有傳入參數沒有回傳值的DLL 並且在我的Driver裡面傳一個指標(p_test)到該DLL 該DLL執行結束後回到Driver卻發現之前傳進去的指標(p_test)位址跑掉了 即使我的那個DLL什麼事都沒做,我把程式刪減一下.請大家幫我看一下哪裡有問題 /////////////////////////////////////////////////////////////////// #include  #define MALLOC(bytes) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (bytes)) #define FREE(address) if ((address) != NULL) { HeapFree(GetProcessHeap(), 0, (address)); address = NULL; } HMODULE hLibModule = NULL; void TIS_Trace(LPCTSTR format, ...); typedef struct{ short v1; short v2; }MyStruct, *LPMyStruct; BOOL WINAPI DllMain (HMODULE hmod, DWORD dwReason, LPVOID lpRes) { BOOL rc = TRUE; switch (dwReason) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_PROCESS_DETACH: case DLL_THREAD_DETACH: break; default: rc = FALSE; break; } return rc; } extern "C" __declspec(dllexport) void TmpFun2(LPMyStruct p_test) { p_test->v1 = 111; p_test->v2 = 222; } /////////////////下面是我的Driver裡面呼叫的方式///////////////// typedef struct{ short v1; short v2; }MyStruct, *LPMyStruct; typedef VOID (*MYTYPE2)(LPMyStruct); LPMyStruct p_test; HMODULE hLibModule; MYTYPE2 FnTmpFun2; hLibModule = LoadLibrary(TEXT("c:\\CoverPage.DLL")); FnTmpFun2 = (MYTYPE2)GetProcAddress(hLibModule, "TmpFun2"); (FnTmpFun2)(p_test); FREE(p_test); FreeLibrary(hLibModule);
系統時間:2024-03-29 6:18:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!