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