ローカルコンピュータで連続する TCP ポートブロックに対する永続的な TCP ポート予約を作成する。
CreatePersistentTcpPortReservation StartPort, NumberOfPorts, Token
StartPort : [int] ネットワークバイトオーダーでの開始 TCP ポート番号。 NumberOfPorts : [int] 予約する TCP ポート番号の個数。 Token : [var] 成功時に返されるポート予約トークンへのポインタ。
(プラグイン / モジュール : iphlpapi.dll)
ローカルコンピュータで連続する TCP ポートブロックに対する永続的な TCP ポート予約を作成する。 [戻り値] 関数が成功すると戻り値は NO_ERROR となる。失敗した場合の戻り値は以下のいずれかのエラーコードとなる。 このドキュメントは省略されている。 [備考] CreatePersistentTcpPortReservation 関数は Windows Vista 以降で定義され、TCP ポートブロックを永続的に予約する。アプリケーションやサービスがポートを予約する理由には 2 種類ある。動作に特定のポートを必要とする場合 (インストール時にマニフェストで指定するケース) と、実行時に任意の空きポート (ブロック) を必要とする場合である。前者は永続予約 / ランタイム予約のどちらも可能だが、ワイルドカード予約はランタイムのみ対応する。本関数は永続 TCP ポートブロック予約を提供し、Windows の TCP モジュール用永続ストアに記録される。必要なポート数と特定範囲の要否を指定し、要求が満たせれば ULONG64 型の不透明トークンが返される。解放は DeletePersistentTcpPortReservation で行う。再起動するとトークン値は変わりうる。永続予約にはコンポーネント間のセキュリティ制御はなく、永続予約を取得可能なコンポーネントは他コンポーネントの永続予約も消費できる。ランタイム予約はプロセスレベルのセキュリティが強制される。取得後は TCP ソケットに対し WSAIoctl で SIO_ASSOCIATE_PORT_RESERVATION IOCTL を呼んでトークンを渡し、その後 bind を行えばよい。SIO_ACQUIRE_PORT_RESERVATION IOCTL でランタイム予約も可能。本関数は Administrators グループのメンバーとしてログオンしたユーザーからのみ呼び出せる。Administrators グループのメンバーでないユーザーが呼び出すと ERROR_ACCESS_DENIED を返して失敗する。Windows Vista 以降のユーザーアカウント制御 (UAC) によっても失敗しうる。この関数を含むアプリケーションをビルトイン Administrator 以外の Administrators グループのメンバーが実行した場合、マニフェストファイルで requestedExecutionLevel を requireAdministrator に設定していない限りこの呼び出しは失敗する。マニフェストがない場合は、昇格シェル (管理者として実行) から起動する必要がある。
| プラグイン / モジュール | iphlpapi.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の iphlpapi.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_iphlpapi_gen2.hs |