Microsoft 未公開文件化的 ICMP.DLL 提供 IcmpCreateFile/IcmpSendEcho/IcmpCloseHandle 三個函數,可簡單實作 Ping。本文提供完整 C 程式碼 (BCC32/VC5 編譯通過)。
LoadLibrary("ICMP.DLL") 載入。gethostbyname 解析目標 IP。GetProcAddress 取得三個函數指標 (函數簽章複雜,文中給出 typedef)。IcmpCreateFile 開啟 Ping 服務取得 Handle。IP_ECHO_REPLY 緩衝區 (含 IP_OPTION_INFORMATION),填入測試資料 (0xAA)。IcmpSendEcho 發送請求,等待回應 (Timeout 5000ms)。GlobalFree/FreeLibrary 清理。DWORD dwStatus = pIcmpSendEcho(hIP, *(DWORD*)phe->h_addr_list[0],
acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,
sizeof(IP_ECHO_REPLY)+sizeof(acPingBuffer), 5000);
注意:微軟宣稱未來可能替換此 API,建議改用 Raw Socket 實作 (見下集)。