Когда я загружаю iphlpapi.dll с помощью LoadLibrary, мой буфер стека переполняется!Как я могу решить эту проблему?!
typedef DWORD (*GetExtendedTcpTable)(PVOID, PDWORD, BOOL, ULONG, TCP_TABLE_CLASS, ULONG);
GetExtendedTcpTable _GetExtendedTcpTable;
// load function at runtime
HINSTANCE hstLibrary = LoadLibrary("C:\\Windows\\System32\\Iphlpapi.dll");
if(!hstLibrary)
{
::MessageBox(NULL,"Can't load Iphlpapi.dll!\n","Error",
MB_OK + MB_ICONEXCLAMATION + MB_TASKMODAL);
FreeLibrary(hstLibrary); // free memory
exit(0);
}
// load function address from dll
_GetExtendedTcpTable = (GetExtendedTcpTable)GetProcAddress(hstLibrary, "GetExtendedTcpTable");
Загрузка функции lib и ее выполнение работают нормально, но в какой-то момент моя программа выдает исключение STATUS_STACK_BUFFER_OVERRUN!(некоторый момент: когда я комментирую строковую операцию, ошибка происходит несколькими строками позже)
Когда я не использую LoadLibrary и GetProcAddress (статическое связывание) -> переполнение буфера отсутствует!
Спасибо и привет,
leon22