當我用LoadLibrary加載iphlpapi.dll時,我的堆棧緩衝區溢出!我該如何解決 這個問題?帶LoadLibrary的STATUS_STACK_BUFFER_OVERRUN
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
庫頭文件中'GetExtendedTcpTable()'的確切定義是什麼? – sharptooth 2011-03-10 12:02:20