LoadLibraryを使用してiphlpapi.dllをロードすると、スタックバッファがオーバーランします。どうすればこの問題を解決できますか?!
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