SetFileBandwidthReservation 함수(winbase.h)
지정된 파일 스트림의 대역폭을 예약하도록 요청합니다. 예약은 지정된 파일 핸들의 I/O 요청에 대한 밀리초 단위 바이트 수로 지정됩니다.
구문
BOOL SetFileBandwidthReservation(
[in] HANDLE hFile,
[in] DWORD nPeriodMilliseconds,
[in] DWORD nBytesPerPeriod,
[in] BOOL bDiscardable,
[out] LPDWORD lpTransferSize,
[out] LPDWORD lpNumOutstandingRequests
);
매개 변수
[in] hFile
파일에 대한 핸들입니다.
[in] nPeriodMilliseconds
예약 기간(밀리초)입니다. 기간은 I/O가 완료될 때까지 I/O가 커널에 발급되는 시간입니다. 파일 스트림에 대해 지원되는 최소 값은 대역폭 예약 집합이 없는 핸들에서 lpPeriodMilliseconds 매개 변수를 통해 GetFileBandwidthReservation 함수로 반환된 값을 확인하여 확인할 수 있습니다.
[in] nBytesPerPeriod
예약할 대역폭(기간당 바이트)입니다. 파일 스트림에 대해 지원되는 최대 값은 대역폭 예약 집합이 없는 핸들에서 lpBytesPerPeriod 매개 변수를 통해 GetFileBandwidthReservation 함수로 반환된 값을 확인하여 확인할 수 있습니다.
[in] bDiscardable
기간이 만료되기 전에 드라이버가 I/O 작업을 충족할 수 없는 경우 오류로 I/O를 완료해야 하는지 여부를 나타냅니다. 지정된 파일 스트림의 드라이버 중 하나가 이 기능을 지원하지 않는 경우 이 함수는 성공을 반환하고 플래그를 무시할 수 있습니다. 설정이 적용되는지 확인하려면 동일한 hFile 핸들을 사용하여 GetFileBandwidthReservation 함수를 호출하고 *pDiscardable 반환 값을 검사합니다.
[out] lpTransferSize
애플리케이션에서 발급할 수 있는 개별 I/O 요청의 최소 크기를 수신하는 변수에 대한 포인터입니다. 모든 I/O 요청은 TransferSize의 배수여야 합니다.
[out] lpNumOutstandingRequests
애플리케이션이 운영 체제에서 처리할 수 있도록 허용해야 하는 TransferSize 청크 수를 수신하는 변수에 대한 포인터입니다. 이렇게 하면 스토리지 스택이 디바이스를 사용 중인 상태로 유지하고 최대 처리량을 허용합니다.
반환 값
성공하면 0이 아닌 값을 반환하고 그렇지 않으면 0을 반환합니다.
기존 예약으로 인해 볼륨에서 사용할 수 있는 대역폭이 충분하지 않으면 예약이 실패할 수 있습니다. 이 경우 ERROR_NO_SYSTEM_RESOURCES 반환됩니다.
확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
요청된 대역폭 예약은 기간당 하나의 패킷보다 크거나 같아야 합니다. 특정 볼륨의 최소 기간(밀리초, 기간당 최대 바이트 및 최소 전송 크기)은 SetFileBandwidthReservation 호출에 사용되지 않은 핸들에서 GetFileBandwidthReservation에 대한 lpPeriodMilliseconds, lpBytesPerperiod 및 lpTransferSize 매개 변수를 통해 반환됩니다. 다시 말하면,
1 ≤(nBytesPerPeriod)×(lpPeriodMilliseconds)/(lpTransferSize)/(nPeriodMilliseconds)
IIn Windows 8 및 Windows Server 2012 이 함수는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | No |
SMB 3.0 TFO(투명 장애 조치(failover)) | No |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | No |
CsvFS(클러스터 공유 볼륨 파일 시스템) | No |
ReFS(Resilient File System) | Yes |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |