指定ファイルストリームに対する帯域予約を要求する。予約は指定ファイルハンドル上の I/O リクエストに対する「ミリ秒周期あたりのバイト数」として指定される。
SetFileBandwidthReservation hFile, nPeriodMilliseconds, nBytesPerPeriod, bDiscardable, lpTransferSize, lpNumOutstandingRequests
hFile : [intptr] ファイルへのハンドル。 nPeriodMilliseconds : [int] 予約の周期 (ミリ秒)。周期は I/O がカーネルに発行されてから完了すべき時刻までの時間である。ファイルストリームに対してサポートされる最小値は、帯域予約が設定されていないハンドルで GetFileBandwidthReservation を呼び出した際の lpPeriodMilliseconds の戻り値で判定できる。 nBytesPerPeriod : [int] 予約する帯域幅 (1 周期あたりのバイト数)。ファイルストリームに対してサポートされる最大値は、帯域予約が設定されていないハンドルで GetFileBandwidthReservation を呼び出した際の lpBytesPerPeriod の戻り値で判定できる。 bDiscardable : [int] 期間満了前にドライバが I/O 操作を満たせなかった場合に、I/O をエラーで完了させるかどうかを示す。指定ファイルストリームのドライバのいずれかがこの機能をサポートしない場合、関数は成功を返しフラグを無視することがある。設定が尊重されたかを確認するには、同じ hFile ハンドルで GetFileBandwidthReservation を呼び出し *pDiscardable の戻り値を調べる。 lpTransferSize : [var] アプリケーションが発行する個々の I/O リクエストの最小サイズを受け取る変数へのポインタ。すべての I/O リクエストは TransferSize の倍数でなければならない。 lpNumOutstandingRequests : [var] OS に対して未処理のまま許容する TransferSize チャンク数を受け取る変数へのポインタ。これによりストレージスタックはデバイスをビジー状態に保ち、最大スループットを得られる。
(プラグイン / モジュール : kernel32.dll)
指定ファイルストリームに対する帯域予約を要求する。予約は指定ファイルハンドル上の I/O リクエストに対する「ミリ秒周期あたりのバイト数」として指定される。 [戻り値] 成功した場合は非ゼロ、そうでない場合はゼロを返す。既存の予約のためにボリュームに十分な帯域がない場合、予約は失敗することがあり、その場合 ERROR_NO_SYSTEM_RESOURCES が返る。拡張エラー情報を取得するには GetLastError を呼び出す。 [備考] 要求する帯域予約は周期あたり 1 パケット以上でなければならない。特定ボリュームの最小周期 (ミリ秒)、周期あたり最大バイト数、最小転送サイズ (バイト) は、SetFileBandwidthReservation で未使用のハンドルで GetFileBandwidthReservation を呼び出したときに lpPeriodMilliseconds、lpBytesPerPeriod、lpTransferSize から得られる。すなわち: 1 ? (nBytesPerPeriod)×(*lpPeriodMilliseconds)/(*lpTransferSize)/(nPeriodMilliseconds)。Windows 8 および Windows Server 2012 では、この関数は以下の技術によってサポートされている。 (以下省略)
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |