IcmpCreateFile 函数 (icmpapi.h)

IcmpCreateFile 函数打开一个句柄,可在该句柄上发出 IPv4 ICMP 回显请求。

语法

IPHLPAPI_DLL_LINKAGE HANDLE IcmpCreateFile();

返回值

IcmpCreateFile 函数在成功时返回一个打开的句柄。 失败时,函数返回 INVALID_HANDLE_VALUE。 调用 GetLastError 函数以获取扩展错误信息。

注解

IcmpCreateFile 函数是从 Windows 2000 上的Icmp.dll 导出的。 IcmpCreateFile 函数是从 Windows XP 及更高版本上的 Iphlpapi.dll 导出的。 建议不要使用此函数进行 Windows 版本检查。 需要跨 Windows 2000、Windows XP、Windows Server 2003 及更高 Windows 版本的此功能可移植性的应用程序不应静态链接到 Icmp.lib 或 Iphlpapi.lib 文件。 相反,应用程序应检查 icmpCreateFile 在 Iphlpapi.dll 中是否存在,并调用 LoadLibrary 和 GetProcAddress。 否则,应用程序应在调用 LoadLibrary 和 GetProcAddress 的 Icmp.dll 中检查 IcmpCreateFile。

对于 IPv6,请使用 Icmp6CreateFile、 Icmp6SendEcho2 和 Icmp6ParseReplies 函数。

请注意, Iphlpapi.h 头文件的 include 指令必须放在 Icmpapi.h 头文件之前。

示例

以下示例打开可对其发出 ICMP 回显请求的句柄。

#include <windows.h>
#include <stdio.h>
#include <iphlpapi.h>
#include <icmpapi.h>

// Need to link with Iplhlapi.lib
#pragma comment(lib, "IPHLPAPI.lib")

void main()
{
    HANDLE hIcmpFile;

    hIcmpFile = IcmpCreateFile();
    if (hIcmpFile == INVALID_HANDLE_VALUE) {
      printf("\tUnable to open handle.\n");
      printf("IcmpCreatefile returned error: %ld\n", GetLastError() );
    }
    else {
      printf("\tHandle created.\n");
      // Need to close the handle when done using it
      IcmpCloseHandle(hIcmpFile);
    }  
}

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 icmpapi.h
Library Iphlpapi.lib
DLL 在 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上 Iphlpapi.dll;Windows 2000 Server 和 Windows 2000 专业版上的 Icmp.dll

另请参阅

GetLastError

Icmp6CreateFile

Icmp6ParseReplies

Icmp6Sendecho2

IcmpCloseHandle

IcmpParseReplies

IcmpSendecho

IcmpSendecho2

Icmpsendecho2Ex