SendARP

SendARP 関数は、指定した宛先 IPv4 アドレスに対応する物理アドレスを取得するために、ARP (Address Resolution Protocol) 要求を送信する。

SendARP DestIP, SrcIP, pMacAddr, PhyAddrLen

DestIP : [int] 宛先 IPv4 アドレス。IPAddr 構造体の形式で指定する。ARP 要求はこの IPv4 アドレスに対応する物理アドレスの取得を試みる。
SrcIP : [int] 送信元 IPv4 アドレス。IPAddr 構造体の形式で指定する。任意で、ARP エントリ要求を送信するインターフェイスを選択するために用いる。呼び出し元はこのパラメータに INADDR_ANY に対応するゼロを指定できる。
pMacAddr : [intptr] ULONG 変数配列へのポインタ。Ethernet / トークンリングの物理アドレスを保持するため、少なくとも 2 つの ULONG 要素を持つ必要がある。配列の最初の 6 バイトに、DestIP に対応する物理アドレスが格納される。
PhyAddrLen : [var] 入力時、アプリケーションが物理 (MAC) アドレスを受け取るために確保したバッファの最大サイズ (バイト単位) を指定する ULONG 値へのポインタ。Ethernet / トークンリングの物理アドレスを格納するには少なくとも 6 バイトが必要。物理アドレスを受け取るバッファは pMacAddr が指す。正常終了時、このパラメータは pMacAddr に書き込まれたバイト数を指す値となる。

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

解説

SendARP 関数は、指定した宛先 IPv4 アドレスに対応する物理アドレスを取得するために、ARP (Address
Resolution Protocol) 要求を送信する。

[戻り値]
関数が成功すると、戻り値は NO_ERROR である。失敗した場合は以下のエラーコードのいずれかが返される。
このドキュメントは省略されている。

[備考]
SendARP 関数は、指定した宛先 IPv4 アドレスに対応する物理ハードウェアアドレス (MAC アドレス)
を要求する。要求された情報がローカル ARP テーブルに存在しない場合、SendARP は ARP
要求を送信して物理アドレスを取得する。成功時、対応する物理アドレスは pMacAddr の配列に返される。物理アドレスは宛先 IPv4
がローカルサブネット上にある場合にのみ取得可能で、ルータを経由する場合は失敗する。Windows Vista 以降では成功時にローカル
ARP テーブルが更新されるが、Windows Server 2003 以前では影響はない。
Windows Vista 以降では、pMacAddr や PhyAddrLen に NULL
を渡すとアクセス違反で終了する。ERROR_BAD_NET_NAME、ERROR_BUFFER_OVERFLOW、ERROR_NOT_FOUND
が返る場合、PhyAddrLen は 0 に設定される。PhyAddrLen が 6 未満なら ERROR_BUFFER_OVERFLOW
を返す。SrcIp にローカルコンピュータ以外の IPv4 を指定すると ERROR_NOT_FOUND となる。Windows
Server 2003 以前では、NULL を渡すと ERROR_INVALID_PARAMETER
が返り、ERROR_GEN_FAILURE または ERROR_INVALID_USER_BUFFER が返る場合は PhyAddrLen
が 0 になる。PhyAddrLen が 6 未満でもエラーにはならず、指定バイト数分のみ格納される。SrcIp
にローカル以外を指定しても無視される。
ARP テーブル操作には
GetIpNetTableCreateIpNetEntryDeleteIpNetEntrySetIpNetEntryFlushIpNetTable
を使う。Windows Vista 以降では ResolveIpNetEntry2SendARP の代替となり、IPv4 アドレスの
MIB_IPNET_ROW2 を渡せば ARP 要求が送信される。また
GetIpNetTable2CreateIpNetEntry2DeleteIpNetEntry2FlushIpNetTable2SetIpNetEntry2
も利用できる。IPAddr データ型については Windows Data Types を、IP アドレスとドット区切り 10
進表記の変換には inet_addr / inet_ntoa を参照。

情報

プラグイン / モジュール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