Partager via


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

Voir aussi

Fonctions de gestion des fichiers

GetFileBandwidthReservation