CreateIoCompletionPort

入出力 (I/O) 完了ポートを作成し、指定されたファイルハンドルに関連付けるか、まだファイルハンドルに関連付けられていない I/O 完了ポートを作成し、後で関連付けができるようにする。

CreateIoCompletionPort FileHandle, ExistingCompletionPort, CompletionKey, NumberOfConcurrentThreads

FileHandle : [intptr] 開かれたファイルハンドル、または INVALID_HANDLE_VALUE。ハンドルはオーバーラップ I/O をサポートするオブジェクトへのハンドルでなければならない。ハンドルを提供する場合、オーバーラップ I/O 完了のために開かれている必要がある。例えば、CreateFile 関数でハンドルを取得する際に FILE_FLAG_OVERLAPPED フラグを指定しなければならない。INVALID_HANDLE_VALUE が指定された場合、関数はファイルハンドルに関連付けずに I/O 完了ポートを作成する。この場合、ExistingCompletionPort パラメータは NULL でなければならず、CompletionKey パラメータは無視される。
ExistingCompletionPort : [intptr] 既存の I/O 完了ポートへのハンドル、または NULL。このパラメータが既存の I/O 完了ポートを指定する場合、関数はそれを FileHandle パラメータで指定されたハンドルに関連付ける。成功時、関数は既存の I/O 完了ポートのハンドルを返し、新しい I/O 完了ポートは作成しない。このパラメータが NULL の場合、関数は新しい I/O 完了ポートを作成し、FileHandle パラメータが有効であればそれを新しい I/O 完了ポートに関連付ける。そうでなければファイルハンドルの関連付けは行われない。成功時、関数は新しい I/O 完了ポートのハンドルを返す。
CompletionKey : [int] 指定されたファイルハンドルのすべての I/O 完了パケットに含まれる、ハンドルごとのユーザー定義完了キー。詳細は備考を参照。
NumberOfConcurrentThreads : [int] OS が I/O 完了ポートに対して I/O 完了パケットを同時に処理できるスレッドの最大数。このパラメータは ExistingCompletionPort が NULL でない場合は無視される。このパラメータがゼロの場合、システムはシステムにあるプロセッサ数と同数のスレッドを同時実行できるようにする。

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

解説

入出力 (I/O) 完了ポートを作成し、指定されたファイルハンドルに関連付けるか、まだファイルハンドルに関連付けられていない I/O
完了ポートを作成し、後で関連付けができるようにする。

[戻り値]
関数が成功した場合、戻り値は I/O 完了ポートへのハンドル:
(以下省略)

[備考]
I/O システムは、I/O 完了通知パケットを I/O
完了ポートに送信するよう指示することができ、そこにキューされる。CreateIoCompletionPort
関数がこの機能を提供する。I/O
完了ポートとそのハンドルは、それを作成したプロセスに関連付けられており、プロセス間で共有できない。ただし、単一のハンドルは同じプロセス内のスレッド間で共有できる。CreateIoCompletionPort
は 3 つの異なるモードで使える:
(以下省略)

情報

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