Freigeben über


SetFileBandwidthReservation-Funktion (winbase.h)

Fordert an, dass Bandbreite für den angegebenen Dateistream reserviert wird. Die Reservierung wird als Anzahl von Bytes in einem Zeitraum von Millisekunden für E/A-Anforderungen für das angegebene Dateihandle angegeben.

Syntax

BOOL SetFileBandwidthReservation(
  [in]  HANDLE  hFile,
  [in]  DWORD   nPeriodMilliseconds,
  [in]  DWORD   nBytesPerPeriod,
  [in]  BOOL    bDiscardable,
  [out] LPDWORD lpTransferSize,
  [out] LPDWORD lpNumOutstandingRequests
);

Parameter

[in] hFile

Ein Handle zur Datei.

[in] nPeriodMilliseconds

Der Zeitraum der Reservierung in Millisekunden. Der Zeitraum ist der Zeitpunkt, ab dem die E/A an den Kernel ausgegeben wird, bis die E/A abgeschlossen werden soll. Der unterstützte Mindestwert für den Dateidatenstrom kann ermittelt werden, indem sie den Wert betrachten, der über den lpPeriodMilliseconds-Parameter für die GetFileBandwidthReservation-Funktion für ein Handle zurückgegeben wird, für das keine Bandbreitenreservierung festgelegt ist.

[in] nBytesPerPeriod

Die zu reservierende Bandbreite in Bytes pro Zeitraum. Der maximal unterstützte Wert für den Dateidatenstrom kann ermittelt werden, indem sie den Wert betrachten, der über den lpBytesPerPeriod-Parameter für die GetFileBandwidthReservation-Funktion für ein Handle zurückgegeben wird, für das keine Bandbreitenreservierung festgelegt ist.

[in] bDiscardable

Gibt an, ob die E/A mit einem Fehler abgeschlossen werden soll, wenn ein Treiber einen E/A-Vorgang nicht erfüllen kann, bevor der Zeitraum abläuft. Wenn einer der Treiber für den angegebenen Dateidatenstrom diese Funktionalität nicht unterstützt, gibt diese Funktion möglicherweise den Erfolg zurück und ignoriert das Flag. Um zu überprüfen, ob die Einstellung eingehalten wird, rufen Sie die GetFileBandwidthReservation-Funktion mit demselben hFile-Handle auf, und untersuchen Sie den Rückgabewert *pDiscardable .

[out] lpTransferSize

Ein Zeiger auf eine Variable, die die Mindestgröße einer einzelnen E/A-Anforderung empfängt, die von der Anwendung ausgestellt werden kann. Alle E/A-Anforderungen sollten ein Vielfaches von TransferSize sein.

[out] lpNumOutstandingRequests

Ein Zeiger auf eine Variable, die die Anzahl von TransferSize-Blöcken empfängt, die die Anwendung für das Betriebssystem ausstehen lassen sollte. Dadurch kann der Speicherstapel das Gerät beschäftigt halten und einen maximalen Durchsatz ermöglichen.

Rückgabewert

Gibt nonzero zurück, wenn der Vorgang erfolgreich war oder andernfalls null.

Eine Reservierung kann fehlschlagen, wenn aufgrund vorhandener Reservierungen nicht genügend Bandbreite auf dem Volume verfügbar ist. in diesem Fall wird ERROR_NO_SYSTEM_RESOURCES zurückgegeben.

Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die angeforderte Bandbreitenreservierung muss größer oder gleich einem Paket pro Zeitraum sein. Der Mindestzeitraum in Millisekunden, die maximalen Bytes pro Zeitraum und die minimale Übertragungsgröße in Bytes für ein bestimmtes Volume werden über die Parameter lpPeriodMilliseconds, lpBytesPerPeriod und lpTransferSize an GetFileBandwidthReservation für ein Handle zurückgegeben, das nicht in einem Aufruf von SetFileBandwidthReservation verwendet wurde. Anders gesagt:

1 ≤ (nBytesPerPeriod)×(lpPeriodMilliseconds)/(lpTransferSize)/(nPeriodMilliseconds)

IIn Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) No
Robustes Dateisystem (Resilient File System, ReFS) Ja

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Dateiverwaltungsfunktionen

GetFileBandwidthReservation