SetFileBandwidthReservation, fonction (winbase.h)
Demande que la bande passante pour le flux de fichiers spécifié soit réservée. La réservation est spécifiée sous la forme d’un nombre d’octets sur une période de quelques millisecondes pour les demandes d’E/S sur le descripteur de fichier spécifié.
Syntaxe
BOOL SetFileBandwidthReservation(
[in] HANDLE hFile,
[in] DWORD nPeriodMilliseconds,
[in] DWORD nBytesPerPeriod,
[in] BOOL bDiscardable,
[out] LPDWORD lpTransferSize,
[out] LPDWORD lpNumOutstandingRequests
);
Paramètres
[in] hFile
Descripteur du fichier.
[in] nPeriodMilliseconds
Période de la réservation, en millisecondes. La période est la période à partir de laquelle les E/S sont émises au noyau jusqu’à l’heure à laquelle les E/S doivent être terminées. La valeur minimale prise en charge pour le flux de fichiers peut être déterminée en examinant la valeur retournée par le biais du paramètre lpPeriodMilliseconds à la fonction GetFileBandwidthReservation , sur un handle qui n’a pas de jeu de réservation de bande passante.
[in] nBytesPerPeriod
Bande passante à réserver, en octets par période. La valeur maximale prise en charge pour le flux de fichiers peut être déterminée en examinant la valeur retournée par le biais du paramètre lpBytesPerPeriod à la fonction GetFileBandwidthReservation , sur un handle qui n’a pas de jeu de réservation de bande passante.
[in] bDiscardable
Indique si les E/S doivent être effectuées avec une erreur si un pilote ne parvient pas à satisfaire une opération d’E/S avant l’expiration de la période. Si l’un des pilotes du flux de fichiers spécifié ne prend pas en charge cette fonctionnalité, cette fonction peut retourner la réussite et ignorer l’indicateur. Pour vérifier si le paramètre est respecté, appelez la fonction GetFileBandwidthReservation à l’aide du même handle hFile et examinez la valeur de retour *pDiscardable .
[out] lpTransferSize
Pointeur vers une variable qui reçoit la taille minimale de toute demande d’E/S individuelle qui peut être émise par l’application. Toutes les demandes d’E/S doivent être des multiples de TransferSize.
[out] lpNumOutstandingRequests
Pointeur vers une variable qui reçoit le nombre de blocs TransferSize que l’application doit autoriser à être en attente avec le système d’exploitation. Cela permet à la pile de stockage de maintenir l’appareil occupé et permet un débit maximal.
Valeur retournée
Retourne une valeur différente de zéro en cas de réussite ou de zéro dans le cas contraire.
Une réservation peut échouer s’il n’y a pas suffisamment de bande passante disponible sur le volume en raison des réservations existantes ; dans ce cas , ERROR_NO_SYSTEM_RESOURCES est retourné.
Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
La réservation de bande passante demandée doit être supérieure ou égale à un paquet par période. La période minimale, en millisecondes, le nombre maximal d’octets par période et la taille de transfert minimale, en octets, pour un volume spécifique sont renvoyées via les paramètres lpPeriodMilliseconds, lpBytesPerPeriod et lpTransferSize à GetFileBandwidthReservation sur un handle qui n’a pas été utilisé dans un appel à SetFileBandwidthReservation. En d’autres termes :
1 ≤ (nBytesPerPeriod)×(lpPeriodMilliseconds)/(lpTransferSize)/(nPeriodMilliseconds)
IIn Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.
Technologie | Prise en charge |
---|---|
Protocole Server Message Block (SMB) 3.0 | No |
Basculement transparent SMB 3.0 (TFO) | No |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | No |
Système de fichiers du volume partagé de cluster (CsvFS) | No |
Système de fichiers résilient (ReFS) | Oui |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winbase.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |