次の方法で共有


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 ファイルに静的にリンクしないでください。 代わりに、アプリケーションは、LoadLibraryGetProcAddress の呼び出しを使用して、Iphlpapi.dllIcmpCreateFile が存在することをチェックする必要があります。 失敗すると、アプリケーションは LoadLibraryGetProcAddress の呼び出しを使用して、Icmp.dllIcmpCreateFile が存在することをチェックする必要があります。

IPv6 の場合は、 Icmp6CreateFileIcmp6SendEcho2および 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 Professional [デスクトップ アプリ |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 Professional での Icmp.dll

関連項目

GetLastError

Icmp6CreateFile

Icmp6ParseReplies

Icmp6SendEcho2

IcmpCloseHandle

IcmpParseReplies

IcmpSendEcho

IcmpSendEcho2

IcmpSendEcho2Ex