Condividi tramite


Funzione SetFileBandwidthReservation (winbase.h)

Richiede che la larghezza di banda per il flusso di file specificato sia riservata. La prenotazione viene specificata come numero di byte in un periodo di millisecondi per le richieste di I/O nell'handle di file specificato.

Sintassi

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

Parametri

[in] hFile

Handle per il file.

[in] nPeriodMilliseconds

Periodo della prenotazione, in millisecondi. Il periodo è l'ora da cui viene emesso l'I/O al kernel fino al completamento dell'I/O. Il valore minimo supportato per il flusso di file può essere determinato esaminando il valore restituito tramite il parametro lpPeriodMilliseconds alla funzione GetFileBandwidthReservation , in un handle che non ha avuto un set di prenotazioni di larghezza di banda.

[in] nBytesPerPeriod

Larghezza di banda da riservare, in byte per periodo. Il valore massimo supportato per il flusso di file può essere determinato esaminando il valore restituito tramite il parametro lpBytesPerPeriod alla funzione GetFileBandwidthReservation , in un handle che non dispone di un set di prenotazioni di larghezza di banda.

[in] bDiscardable

Indica se l'I/O deve essere completato con un errore se un driver non è in grado di soddisfare un'operazione di I/O prima della scadenza del periodo. Se uno dei driver per il flusso di file specificato non supporta questa funzionalità, questa funzione può restituire esito positivo e ignorare il flag. Per verificare se l'impostazione verrà rispettata, chiamare la funzione GetFileBandwidthReservation usando lo stesso handle hFile ed esaminare il valore restituito *pDiscardable .

[out] lpTransferSize

Puntatore a una variabile che riceve le dimensioni minime di qualsiasi richiesta di I/O singola che può essere rilasciata dall'applicazione. Tutte le richieste di I/O devono essere multiple di TransferSize.

[out] lpNumOutstandingRequests

Un puntatore a una variabile che riceve il numero di blocchi TransferSize deve consentire all'applicazione di essere in sospeso con il sistema operativo. Ciò consente allo stack di archiviazione di mantenere occupato il dispositivo e consente la velocità effettiva massima.

Valore restituito

Restituisce un valore diverso da zero se ha esito positivo o zero in caso contrario.

Una prenotazione può non riuscire se non è disponibile una larghezza di banda sufficiente nel volume a causa di prenotazioni esistenti; in questo caso ERROR_NO_SYSTEM_RESOURCES viene restituito.

Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

La prenotazione della larghezza di banda richiesta deve essere maggiore o uguale a un pacchetto per periodo. Il periodo minimo, in millisecondi, byte massimi per periodo e dimensioni minime di trasferimento, in byte, per un volume specifico vengono restituiti tramite i parametri lpPeriodMilliseconds, lpBytesPerPeriod e lpTransferSize per GetFileBandwidthReservation in un handle che non è stato usato in una chiamata a SetFileBandwidthReservation. In altre parole:

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

IIn Windows 8 e Windows Server 2012, questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0 No
Failover trasparente SMB 3.0 (TFO) No
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) No
File system del volume condiviso del cluster (CsvFS) No
File system resiliente (ReFS)

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni di gestione file

GetFileBandwidthReservation