Função SetFileBandwidthReservation (winbase.h)

Solicita que a largura de banda para o fluxo de arquivos especificado seja reservada. A reserva é definida como um número de bytes em um período de milissegundos para solicitações de E/S no identificador de arquivo especificado.

Sintaxe

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

Parâmetros

[in] hFile

Um manipulador para o arquivo.

[in] nPeriodMilliseconds

O período da reserva, em milissegundos. O período é o tempo do qual a E/S é emitida para o kernel até o momento em que a E/S deve ser concluída. O valor mínimo com suporte para o fluxo de arquivos pode ser determinado examinando o valor retornado por meio do parâmetro lpPeriodMilliseconds para a função GetFileBandwidthReservation , em um identificador que não teve uma reserva de largura de banda definida.

[in] nBytesPerPeriod

A largura de banda a ser reservada, em bytes por período. O valor máximo com suporte para o fluxo de arquivos pode ser determinado examinando o valor retornado por meio do parâmetro lpBytesPeriod para a função GetFileBandwidthReservation , em um identificador que não teve uma reserva de largura de banda definida.

[in] bDiscardable

Indica se a E/S deve ser concluída com um erro se um driver não conseguir atender a uma operação de E/S antes que o período expire. Se um dos drivers para o fluxo de arquivos especificado não der suporte a essa funcionalidade, essa função poderá retornar êxito e ignorar o sinalizador. Para verificar se a configuração será respeitada, chame a função GetFileBandwidthReservation usando o mesmo identificador hFile e examine o valor retornado *pDiscardable .

[out] lpTransferSize

Um ponteiro para uma variável que recebe o tamanho mínimo de qualquer solicitação de E/S individual que possa ser emitida pelo aplicativo. Todas as solicitações de E/S devem ser múltiplas de TransferSize.

[out] lpNumOutstandingRequests

Um ponteiro para uma variável que recebe o número de partes TransferSize que o aplicativo deve permitir que seja pendente com o sistema operacional. Isso permite que a pilha de armazenamento mantenha o dispositivo ocupado e permite a taxa de transferência máxima.

Retornar valor

Retornará diferente de zero se tiver êxito ou zero caso contrário.

Uma reserva poderá falhar se não houver largura de banda suficiente disponível no volume devido às reservas existentes; nesse caso , ERROR_NO_SYSTEM_RESOURCES é retornado.

Para obter informações de erro estendidas, chame GetLastError.

Comentários

A reserva de largura de banda solicitada deve ser maior ou igual a um pacote por período. O período mínimo, em milissegundos, o máximo de bytes por período e o tamanho mínimo da transferência, em bytes, para um volume específico são retornados por meio dos parâmetros lpPeriodMilliseconds, lpBytesPeriod e lpTransferSize para GetFileBandwidthReservation em um identificador que não foi usado em uma chamada para SetFileBandwidthReservation. Em outras palavras:

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

IIn Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) No
ReFS (Sistema de Arquivos Resiliente) Sim

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (incluir Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Funções de gerenciamento de arquivos

GetFileBandwidthReservation