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

備註

要求的頻寬保留必須大於或等於每個期間一個封包。 特定磁碟區的最小期間、以毫秒為單位、每個期間的最大位元元組數,以及傳輸大小下限,會透過 lpPeriodMillisecondslpBytesPerPeriodlpTransferSize 參數傳回給 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

另請參閱

檔案管理功能

GetFileBandwidthReservation