那位用过RasGetEntryProperties和RasSetEntryProperties两个函数?帮忙看看我的代码错在那里了?
#include "Ras.h"
typedef DWORD(*RASGETPRO)(LPCTSTR,LPCTSTR,LPRASENTRY,LPDWORD,LPBYTE,LPDWORD);
RASENTRY Info = {0};
DWORD dwSize,dwDevInfo,code;
dwSize = Info.dwSize = sizeof(RASENTRY);
dwDevInfo = 0;
HINSTANCE hinstLib;
RASGETPRO hsRasGetEntryProperties;
BOOL FreeSuccess,RunTimeLinkSuccess = FALSE;
hinstLib = LoadLibrary("Rasapi32");
if (NULL != hinstLib)
{
hsRasGetEntryProperties = (RASGETPRO)GetProcAddress(hinstLib,"RasGetEntryProperties");
if (NULL != hsRasGetEntryProperties)
{
RunTimeLinkSuccess = TRUE;
//--------------------------------------------------------------
RASENTRY *pRasEntry;
DWORD dw=0;
DWORD ret = (hsRasGetEntryProperties)(NULL, "GPRS", NULL, &dw, NULL, NULL);
// (hsRasGetEntryProperties)(NULL, "GPRS", NULL, &dw, NULL, NULL);
// if(ret == ERROR_BUFFER_TOO_SMALL)
// {
pRasEntry=(RASENTRY *)HeapAlloc(GetProcessHeap(),0,dw);
pRasEntry->dwSize = sizeof(RASENTRY);;
// ret = (hsRasGetEntryProperties)(NULL, "GPRS", pRasEntry, &dw, NULL, NULL);
// if(ret!=NULL)
// {
// GetRasErr(ret);
// return 0;
// }
// }
//--------------------------------------------------------------
}
FreeSuccess = FreeLibrary(hinstLib);
}
else
{
AfxMessageBox("加载DLL失败!");
}
if ( ! RunTimeLinkSuccess )
{
AfxMessageBox("不能确定对应函数地址!");
}
注释部分一放开更是错误重重。现在是运行到DWORD ret = (hsRasGetEntryProperties)(NULL, "GPRS", NULL, &dw, NULL, NULL);这句就出错。
另外我加载自己的测试DLL,却没问题,看来问题出在函数参数设置上,有谁调用过RasGetEntryProperties,和RasSetEntryProperties函数的?请帮忙指点一下。谢谢~!
DLL的CPP中:
int hytestdll( int x )
{
int i=0;
i=x+1;
return i;
}
DLL的DEF中:
LIBRARY FINGER
EXPORTS
………………
hytestdll @4
应用程序的CPP中:
typedef int (*TESTDLLFUN)( int );
HINSTANCE hinstLib;
TESTDLLFUN testdllfunhy;
BOOL FreeSuccess,RunTimeLinkSuccess = FALSE;
int i=5;
hinstLib = LoadLibrary("UserHsRasDll2");
if (NULL != hinstLib)
{
testdllfunhy = (TESTDLLFUN)GetProcAddress(hinstLib,"hytestdll");
if (NULL != testdllfunhy)
{
RunTimeLinkSuccess = TRUE;
i = (testdllfunhy)(i);
switch (i)
{
case 6:
AfxMessageBox("调用成功!");
break;
case 5:
AfxMessageBox("调用失败!");
break;
}
}
FreeSuccess = FreeLibrary(hinstLib);
}
else
{
AfxMessageBox("加载DLL失败!");
}
if ( ! RunTimeLinkSuccess )
{
AfxMessageBox("不能确定对应函数地址!");
}
这是我写的小测试代码,已经在WIN98,VC6下通过