2017-10-28 110 views
-2

我收到錯誤消息說 \ dll \ dll.cpp | 206 |錯誤:'PTHREAD_START_ROUTINE'未在此範圍內聲明| \ dll \ dll.cpp | 208 |錯誤:'pfnThreadRtn'未在此範圍內聲明| | 208 |錯誤:'pfnThreadRtn'未在此範圍內聲明|我在C++中遇到錯誤'PTHREAD_START_ROUTINE'未在此範圍內聲明

如何解決

char CurPath[256]; 
strcpy(CurPath,dllpath); 
int len = (strlen(CurPath)+1)*2; 
WCHAR wCurPath[256]; 
MultiByteToWideChar(CP_ACP,0,CurPath,-1,wCurPath,256); 

pszLibFileRemote = (PWSTR) 
    VirtualAllocEx(hRemoteProcess,NULL,len,MEM_COMMIT,PAGE_READWRITE); 

WriteProcessMemory(hRemoteProcess,pszLibFileRemote, 
       (PVOID)wCurPath,len,NULL); 

PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE) 
    GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW"); 

hRemoteThread = CreateRemoteThread(hRemoteProcess,NULL,0, 
    pfnThreadRtn,pszLibFileRemote,0,NULL); 
+1

然後您還沒有包含定義該名稱的標題。 –

+0

試試'LPTHREAD_START_ROUTINE'。這裏似乎有很多錯誤。 –

+0

爲什麼你使用C++標籤? – 2017-10-28 23:00:03

回答

1

typedef的名稱爲線程程序LPTHREAD_START_ROUTINE

在實際代碼中,您還需要在每次函數調用後檢查錯誤,遠程進程可能隨時死亡。