IcmpSendEcho2Ex

IPv4 ICMP エコー要求を送信し、Event または ApcRoutine が NULL 以外なら即座に、そうでなければ指定したタイムアウト後に返る。ReplyBuffer には ICMP 応答が格納される。

IcmpSendEcho2Ex IcmpHandle, Event, ApcRoutine, ApcContext, SourceAddress, DestinationAddress, RequestData, RequestSize, RequestOptions, ReplyBuffer, ReplySize, Timeout

IcmpHandle : [intptr] IcmpCreateFile 関数が返したオープンハンドル。
Event : [intptr] ICMP 応答が到着したときにシグナル状態にするイベント。指定する場合は有効なイベントオブジェクトへのハンドルが必要。CreateEvent または CreateEventEx でイベントを作成する。詳細は Event Objects を参照。
ApcRoutine : [int] 呼び出しスレッドがアラート可能な状態で ICMP 応答が到着したときに呼ばれるルーチン。このパラメータの型を FARPROC ではなく PIO_APC_ROUTINE にするため PIO_APC_ROUTINE_DEFINED を定義しなければならない。
ApcContext : [intptr] ICMP 応答が到着したかエラーが発生したとき、ApcRoutine で指定したコールバックルーチンに渡される任意パラメータ。
SourceAddress : [int] エコー要求を発行する IPv4 送信元アドレス。IPAddr 構造体の形式で指定する。
DestinationAddress : [int] エコー要求の IPv4 宛先アドレス。IPAddr 構造体の形式で指定する。
RequestData : [intptr] 要求で送信するデータを含むバッファへのポインタ。
RequestSize : [int] RequestData が指す要求データバッファのサイズ (バイト単位)。
RequestOptions : [var] 要求の IP ヘッダオプションへのポインタ。IP_OPTION_INFORMATION 構造体の形式で指定する。64 ビットプラットフォームでは IP_OPTION_INFORMATION32 形式となる。オプションを指定しない場合は NULL でもよい。
ReplyBuffer : [intptr] 要求に対する応答を保持するバッファへのポインタ。戻り時、バッファには ICMP_ECHO_REPLY 構造体の配列に続けてオプションとデータが格納される。バッファは少なくとも ICMP_ECHO_REPLY 構造体 1 つ分と RequestSize バイトのデータ、さらに 8 バイトの ICMP エラーメッセージおよび IO_STATUS_BLOCK 構造体分の領域を収められる大きさでなければならない。
ReplySize : [int] 応答バッファの割り当てサイズ (バイト単位)。少なくとも ICMP_ECHO_REPLY 構造体 1 つと RequestSize バイトのデータ、加えて 8 バイトの ICMP エラーメッセージ分と IO_STATUS_BLOCK 分を収められる必要がある。
Timeout : [int] 応答を待機する時間 (ミリ秒単位)。

(プラグイン / モジュール : iphlpapi.dll)

解説

IPv4 ICMP エコー要求を送信し、Event または ApcRoutine が NULL
以外なら即座に、そうでなければ指定したタイムアウト後に返る。ReplyBuffer には ICMP 応答が格納される。

[戻り値]
同期呼び出し時、IcmpSendEcho2Ex は ReplyBuffer に格納された応答の数を返す。0 の場合は
GetLastError で拡張エラー情報を取得する。非同期呼び出し時、IcmpSendEcho2Ex は操作進行中を示す
ERROR_IO_PENDING を返す。結果は Event のシグナル、または ApcRoutine
の呼び出しで取得できる。失敗した場合、GetLastError は以下のいずれかを返す。
このドキュメントは省略されている。

[備考]
IcmpSendEcho2Ex 関数は Windows Server 2008 以降で利用可能であり、IcmpSendEcho2
の拡張版でユーザが ICMP 要求を発行する IPv4
送信元アドレスを指定できる。複数のネットワークインターフェイスを持つコンピュータで有用である。ApcRoutine と Event が
NULL のときは同期的に呼び出され、戻り値は Timeout で指定した時間待機した後に ReplyBuffer
に格納された応答数となる。0 のときは GetLastError で拡張エラー情報を取得する。ApcRoutine または Event
指定時は非同期呼び出しとなり、ReplyBuffer / ReplySize が必須。応答は ReplyBuffer
にコピーされ、Event シグナルまたは ApcRoutine コールバックで通知される。アプリケーションは
IcmpParseReplies で解析する必要がある。両方指定時は Event のみが使用され ApcRoutine
は無視される。ApcRoutine 非同期呼び出しを行うアプリケーションは、型を PIO_APC_ROUTINE にするため
Icmpapi.h のインクルード前に PIO_APC_ROUTINE_DEFINED を定義しなければならない。
コールバック関数は VOID 型で次の構文に従って定義する:
このドキュメントは省略されている。

情報

プラグイン / モジュールiphlpapi.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の iphlpapi.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_iphlpapi_gen2.hs