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) | Sí |
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 |