setFileBandwidthReservation 函式 (winbase.h)
要求保留指定檔案數據流的頻寬。 保留是以指定之檔句柄上 I/O 要求的毫秒數指定為位元組數。
語法
BOOL SetFileBandwidthReservation(
[in] HANDLE hFile,
[in] DWORD nPeriodMilliseconds,
[in] DWORD nBytesPerPeriod,
[in] BOOL bDiscardable,
[out] LPDWORD lpTransferSize,
[out] LPDWORD lpNumOutstandingRequests
);
參數
[in] hFile
檔案的句柄。
[in] nPeriodMilliseconds
保留的期間,以毫秒為單位。 期間是從 I/O 發出到核心的時間,直到 I/O 應該完成為止。 在尚未設定頻寬保留的句柄上,查看透過 lpPeriodMilliseconds 參數傳回的值,即可判斷檔案數據流的最小支援值。
[in] nBytesPerPeriod
每個期間要保留的頻寬,以位元組為單位。 在尚未設定頻寬保留的句柄上,查看透過 lpBytesPeriod 參數傳回的值,即可判斷檔案數據流的最大支援值。
[in] bDiscardable
指出如果驅動程式無法在期間到期之前滿足 I/O 作業,是否應該完成 I/O 並出現錯誤。 如果指定檔案數據流的其中一個驅動程式不支援此功能,此函式可能會傳回成功並忽略旗標。 若要確認是否接受設定,請使用相同的 hFile 句柄呼叫 GetFileBandwidthReservation 函式,並檢查 *pDiscardable 傳回值。
[out] lpTransferSize
變數的指標,可接收應用程式可能發出之任何個別 I/O 要求的大小下限。 所有 I/O 要求都應該是 TransferSize 的倍數。
[out] lpNumOutstandingRequests
接收應用程式應允許未完成操作系統之 TransferSize 區塊數目的變數指標。 這可讓存儲設備堆疊保持忙碌狀態,並允許最大輸送量。
傳回值
如果成功或零,則傳回非零。
如果磁碟區上沒有足夠的頻寬可用,因為現有的保留,保留可能會失敗;在此情況下 ,會傳回ERROR_NO_SYSTEM_RESOURCES 。
若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
要求的頻寬保留必須大於或等於每個期間一個封包。 特定磁碟區的最小期間、以毫秒為單位、每個期間的最大位元元組數,以及傳輸大小下限,會透過 lpPeriodMilliseconds、 lpBytesPerPeriod 和 lpTransferSize 參數傳回給 GetFileBandwidthReservation 的句柄上尚未用於 SetFileBandwidthReservation 的句柄。 換句話說:
1 ≤ (nBytesPeriod) × (lpPeriodMilliseconds) / (lpTransferSize) / (nPeriodMilliseconds)
IIn Windows 8 和 Windows Server 2012,下列技術支援此函式。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | No |
SMB 3.0 透明故障轉移 (TFO) | No |
具有向外延展檔案共用的SMB 3.0 (SO) | No |
叢集共用磁碟區文件系統 (CsvFS) | No |
彈性檔案系統 (ReFS) | Yes |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |