Dear all,
First, Have a nice week! How are you?
Hope that everybody had a nice weekend.
Now, i found that in ares_init.c
From line 366 to 399, code below:
FIXED_INFO * FixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING * pIPAddr;
HANDLE hLib;
int num;
DWORD (WINAPI *GetNetworkParams)(FIXED_INFO*, DWORD*);
hLib = LoadLibraryA("iphlpapi.dll");
if(!hLib)
{
return ARES_ENOTIMP;
}
(void*)GetNetworkParams = GetProcAddress(hLib, "GetNetworkParams");
if(!GetNetworkParams)
{
FreeLibrary(hLib);
return ARES_ENOTIMP;
}
//printf("ARES: figuring out DNS servers\n");
FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
ulOutBufLen = sizeof( FIXED_INFO );
if( ERROR_BUFFER_OVERFLOW == (*GetNetworkParams)( FixedInfo, &ulOutBufLen )
)
{
GlobalFree( FixedInfo );
FixedInfo = (FIXED_INFO *)GlobalAlloc( GPTR, ulOutBufLen );
}
if ( dwRetVal = (*GetNetworkParams)( FixedInfo, &ulOutBufLen ) )
{
//printf("ARES: couldn't get network params\n");
GlobalFree( FixedInfo );
FreeLibrary(hLib);
return ARES_ENODATA;
}
I don't understand why author use LoadLibraryA and GetProcAddress only to
load the function GetNetworkParams
Can you explain for me the purpose of author? thank so much. Cos in evc++
4.0 emulator, sometimes it makes the
error access violation.
So i try to use the code like below:
#ifdef _WIN32_WCE
FIXED_INFO* FixedInfo = new FIXED_INFO;
ULONG* ulOutBufLen= new ULONG;
DWORD iResponse = 0;
*ulOutBufLen = sizeof( FIXED_INFO );
iResponse = GetNetworkParams(FixedInfo,ulOutBufLen);
if (iResponse == ERROR_BUFFER_OVERFLOW)
{
.....
}
etc...
Julien
_______________________________________________
http://cool.haxx.se/mailman/listinfo/c-ares
Received on Mon May 2 11:13:07 2005