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 |