2013-12-17 197 views
0

實際上我需要專家的建議來解決在Windows 7(代碼附加)中調用InitPK.dll(C++ dll)作爲服務的情況。該DLL成功加載,但PKAgentInit方法返回0(假)在Windows 7使用Windows服務相同的作品在Windows XP中也沒有問題,當代碼在Windows 7上作爲控制檯程序執行時,代碼工作正常。 能否請您指導一下爲什麼PKAgentInit方法在Windows 7上返回0,什麼是使用Windows服務在Windows 7下調用代理的推薦方式**從Windows 7中的Windows服務運行DLL/EXE程序

代碼:

typedef UINT (CALLBACK* INITPK)();  
m_LogDebug->Log(2,nThreadId,cMethod, 
    "Pre-requisite applications are running so executing Agent...");    
hDll = LoadLibrary(AgentPath.c_str());  
if(hDll == NULL)  
{  
    m_LogDebug->Log(0,nThreadId,cMethod, 
     "Failed to load  [%s]",AgentPath.c_str());  
    return false;  
}  
INITPK InitPK_Func;  
if((InitPK_Func = (INITPK)GetProcAddress(HMODULE(hDll), "PKAgentInit")) == NULL) 
{  
    m_LogDebug->Log(0,nThreadId,cMethod, 
     "Failed to load proc address [%s]",AgentPath.c_str());  
    return false;  
}  
UINT Res = InitPK_Func();    
// returning 0 which means Agent is not executed successfully. 
// Ideally it should return 1.  
m_LogDebug->Log(0,nThreadId,cMethod,"PKAgentInit returned [%d]",Res);  
+0

不需要使用粗體字體。普通文字就好了。 –

+1

什麼是InitPK.dll? ...標籤爲C#和C++? – parrowdice

+0

除非在這裏有人碰巧熟悉InitPK,否則你不可能得到答案。你問過這個供應商嗎? –

回答

0

沒有看到源到InitPK_Func()這很難說,但我猜測這是一個權限問題,並且該服務沒有作爲可以做你需要做的事情的用戶運行。也許這個代碼需要提升(可能是爲什麼它可以在XP上運行),或者它可能觸及一個網絡資源(可能是爲什麼它在Win7上作爲一個控制檯應用程序運行)。

但是,實際上,您需要調試問題函數,並可能將其更改爲返回關於失敗原因的更多信息。

相關問題