Función SetFileBandwidthReservation (winbase.h)

Solicita que se reserve ancho de banda para la secuencia de archivos especificada. La reserva se especifica como un número de bytes en un período de milisegundos para las solicitudes de E/S en el identificador de archivo especificado.

Sintaxis

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

Parámetros

[in] hFile

Identificador del archivo.

[in] nPeriodMilliseconds

Período de la reserva, en milisegundos. El período es el tiempo desde el que se emite la E/S al kernel hasta que se debe completar la E/S. El valor mínimo admitido para la secuencia de archivos se puede determinar examinando el valor devuelto a través del parámetro lpPeriodMilliseconds a la función GetFileBandwidthReservation , en un identificador que no tiene establecido una reserva de ancho de banda.

[in] nBytesPerPeriod

Ancho de banda que se va a reservar, en bytes por período. El valor máximo admitido para la secuencia de archivos se puede determinar examinando el valor devuelto a través del parámetro lpBytesPerPeriod a la función GetFileBandwidthReservation , en un identificador que no tiene establecido una reserva de ancho de banda.

[in] bDiscardable

Indica si se debe completar la E/S con un error si un controlador no puede satisfacer una operación de E/S antes de que expire el período. Si uno de los controladores de la secuencia de archivos especificada no admite esta funcionalidad, esta función puede devolver éxito e ignorar la marca. Para comprobar si se respetará la configuración, llame a la función GetFileBandwidthReservation con el mismo identificador hFile y examine el valor devuelto *pDiscardable .

[out] lpTransferSize

Puntero a una variable que recibe el tamaño mínimo de cualquier solicitud de E/S individual que la aplicación pueda emitir. Todas las solicitudes de E/S deben ser múltiplas de TransferSize.

[out] lpNumOutstandingRequests

Puntero a una variable que recibe el número de fragmentos TransferSize que la aplicación debe permitir que esté pendiente con el sistema operativo. Esto permite que la pila de almacenamiento mantenga el dispositivo ocupado y permita el rendimiento máximo.

Valor devuelto

Devuelve un valor distinto de cero si es correcto o cero de lo contrario.

Se puede producir un error en una reserva si no hay suficiente ancho de banda disponible en el volumen debido a las reservas existentes; en este caso , se devuelve ERROR_NO_SYSTEM_RESOURCES.

Para obtener información de error extendida, llame a GetLastError.

Comentarios

La reserva de ancho de banda solicitada debe ser mayor o igual que un paquete por período. El período mínimo, en milisegundos, los bytes máximos por período y el tamaño mínimo de transferencia, en bytes, para un volumen específico se devuelven a través de los parámetros lpPeriodMilliseconds, lpBytesPerPeriod y lpTransferSize a GetFileBandwidthReservation en un identificador que no se ha usado en una llamada a SetFileBandwidthReservation. En otras palabras:

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

IIn Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS) No
Sistema de archivos resistente a errores (ReFS)

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Funciones de administración de archivos

GetFileBandwidthReservation