ReOpenFile 함수(winbase.h)
액세스 권한, 공유 모드 및 플래그가 다른 지정된 파일 시스템 개체를 다시 엽니다.
구문
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
매개 변수
[in] hOriginalFile
다시 열 개체에 대한 핸들입니다. 개체는 CreateFile 함수에 의해 만들어졌어야 합니다.
[in] dwDesiredAccess
개체에 필요한 액세스 권한입니다. 값 목록은 파일 보안 및 액세스 권한을 참조하세요. 핸들이 아직 열려 있는 이전 열린 요청에 지정된 공유 모드와 충돌하는 액세스 모드를 요청할 수 없습니다.
이 매개 변수가 0인 경우 애플리케이션은 디바이스에 액세스하지 않고 디바이스 특성을 쿼리할 수 있습니다. 이는 애플리케이션이 플로피 디스크 드라이브의 크기와 드라이브에 플로피를 요구하지 않고 지원되는 형식을 확인하려는 경우에 유용합니다.
[in] dwShareMode
개체의 공유 모드입니다. 핸들이 아직 열려 있는 이전의 열린 요청에 지정된 액세스 모드와 충돌하는 공유 모드를 요청할 수 없습니다.
이 매개 변수가 0이고 CreateFile 이 성공하면 개체를 공유할 수 없으며 핸들을 닫을 때까지 다시 열 수 없습니다.
프로세스가 열려 있는 동안 다른 프로세스에서 개체를 공유할 수 있도록 하려면 다음 값 중 하나 이상을 조합하여 개체를 열 때 요청할 수 있는 액세스 유형을 지정합니다. 이러한 공유 옵션은 개체에 대한 핸들을 닫을 때까지 계속 적용됩니다.
[in] dwFlagsAndAttributes
파일 플래그입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.
값 | 의미 |
---|---|
|
백업 또는 복원 작업을 위해 파일을 열거나 만들고 있음을 나타냅니다. 시스템은 SE_BACKUP_NAME 및SE_RESTORE_NAME 권한이 있는 경우 호출 프로세스가 파일 보안 검사를 재정의하도록 합니다. 자세한 내용은 토큰의 권한 변경을 참조하세요.
이 플래그를 설정하여 디렉터리에 대한 핸들을 가져올 수도 있습니다. 표시된 경우 디렉터리 핸들을 파일 핸들 대신 일부 함수에 전달할 수 있습니다. |
|
운영 체제가 지정된 핸들뿐만 아니라 열려 있거나 중복된 다른 핸들뿐만 아니라 모든 핸들이 닫힌 직후에 파일을 삭제하는 것임을 나타냅니다.
FILE_SHARE_DELETE 사용되지 않는 한 파일에 대한 후속 열린 요청이 실패합니다. |
|
중간 버퍼링이나 캐싱 없이 파일을 열도록 시스템에 지시합니다. FILE_FLAG_OVERLAPPED 결합하면 I/O가 메모리 관리자의 동기 작업에 의존하지 않으므로 플래그는 최대 비동기 성능을 제공합니다. 그러나 데이터가 캐시에 저장되지 않으므로 일부 I/O 작업은 더 오래 걸립니다.
애플리케이션은 FILE_FLAG_NO_BUFFERING 열린 파일로 작업할 때 특정 요구 사항을 충족해야 합니다.
애플리케이션은 GetDiskFreeSpace 함수를 호출하여 볼륨 섹터 크기를 확인할 수 있습니다. |
|
파일 데이터가 요청되었지만 원격 스토리지에 계속 상주해야 했음을 나타냅니다. 로컬 스토리지로 다시 전송해서는 안 됩니다. 이 플래그는 원격 스토리지 시스템에서 사용하기 위한 것입니다. |
|
이 플래그를 사용하면 정상적인 재분석 지점 처리가 수행되지 않으며 ReOpenFile 에서 재분석 지점을 열려고 시도합니다. 파일을 열면 재분석 지점을 제어하는 필터가 작동하는지 여부에 관계없이 파일 핸들이 반환됩니다. 이 플래그는 CREATE_ALWAYS 플래그와 함께 사용할 수 없습니다. 파일이 재분석 지점이 아니면 이 플래그는 무시됩니다. |
|
반환 ERROR_IO_PENDING 처리하는 데 상당한 시간이 걸리는 작업을 수행하도록 시스템에 개체를 초기화하도록 지시합니다. 작업이 완료되면 지정된 이벤트가 신호 상태로 설정됩니다.
FILE_FLAG_OVERLAPPED 지정할 때 파일 읽기 및 쓰기 함수는 OVERLAPPED 구조를 지정해야 합니다. 즉, FILE_FLAG_OVERLAPPED 지정되면 애플리케이션이 겹치는 읽기 및 쓰기를 수행해야 합니다 . FILE_FLAG_OVERLAPPED 지정되면 시스템에서 파일 포인터를 유지 관리하지 않습니다. 파일 위치는 lpOverlapped 매개 변수( OVERLAPPED 구조를 가리키는)의 일부로 파일 읽기 및 쓰기 함수에 전달되어야 합니다. 또한 이 플래그를 사용하면 핸들을 사용하여 둘 이상의 작업을 동시에 수행할 수 있습니다(예: 동시 읽기 및 쓰기 작업). |
|
POSIX 규칙에 따라 파일에 액세스할 것임을 나타냅니다. 여기에는 이러한 명명을 지원하는 파일 시스템에 대해서만 이름이 다른 여러 파일을 허용하는 것이 포함됩니다. 이 플래그로 만든 파일은 MS-DOS 또는 16비트 Windows용으로 작성된 애플리케이션에서 액세스할 수 없으므로 이 옵션을 사용할 때는 주의해야 합니다. |
|
파일이 임의로 액세스됨을 나타냅니다. 시스템에서는 이 필드를 힌트로 사용하여 파일 캐싱을 최적화할 수 있습니다. |
|
파일이 처음부터 끝까지 순차적으로 액세스됨을 나타냅니다. 시스템에서는 이 필드를 힌트로 사용하여 파일 캐싱을 최적화할 수 있습니다. 애플리케이션에서 임의 액세스를 위해 파일 포인터를 이동하는 경우 최적 캐싱이 수행되지 않을 수 있지만 올바른 작업은 보장됩니다.
이 플래그를 지정 순차적 액세스를 사용 하 여 큰 파일을 읽는 애플리케이션의 성능을 향상 시킬 수 있습니다. 성능 향상을 훨씬 더 큰 파일을 주로 순차적으로 읽을 하지만 작은 범위의 바이트를 건너뛰는 경우에 따라 애플리케이션에 대 한 눈에 띄는 될 수 있습니다. |
|
시스템에 중간 캐시를 통해 쓰고 디스크로 직접 이동하도록 지시합니다. 시스템은 여전히 쓰기 작업을 캐시할 수 있지만 지연 플러시할 수는 없습니다. |
핸들이 명명된 파이프의 클라이언트 쪽을 나타내는 경우 dwFlags 매개 변수에는 보안 서비스 품질 정보도 포함될 수 있습니다. 자세한 내용은 가장 수준을 참조하세요. 호출 애플리케이션이 SECURITY_SQOS_PRESENT 플래그를 지정하면 dwFlags 매개 변수에 다음 값 중 하나 이상이 포함될 수 있습니다.
반환 값
함수가 성공하면 반환 값은 지정된 파일에 대한 열린 핸들입니다.
함수가 실패하는 경우 반환 값은 INVALID_HANDLE_VALUE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
dwFlags 매개 변수는 파일 특성 플래그(FILE_ATTRIBUTE_*)를 포함할 수 없습니다. 이러한 파일은 파일을 만들 때만 지정할 수 있습니다.
Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술을 통해 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 예 |
SMB 3.0 TFO(투명 장애 조치(failover)) | 예 |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | 예 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 예 |
ReFS(Resilient File System) | 예 |
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |