OpenFile 함수(winbase.h)
파일을 만들거나, 열거나, 다시 열거나, 삭제합니다.
구문
HFILE OpenFile(
[in] LPCSTR lpFileName,
[out] LPOFSTRUCT lpReOpenBuff,
[in] UINT uStyle
);
매개 변수
[in] lpFileName
파일 이름입니다.
문자열은 8비트 Windows 문자 집합의 문자로 구성되어야 합니다. OpenFile 함수는 유니코드 파일 이름 또는 명명된 파이프 열기를 지원하지 않습니다.
[out] lpReOpenBuff
처음 열 때 파일에 대한 정보를 수신하는 OFSTRUCT 구조체에 대한 포인터입니다.
구조체는 OpenFile 함수에 대한 후속 호출에서 열려 있는 파일을 확인하는 데 사용할 수 있습니다.
OFSTRUCT 구조체에는 길이가 128자인 OFS_MAXPATHNAME 문자로 제한되는 경로 문자열 멤버가 포함되어 있습니다. 따라서 OpenFile 함수를 사용하여 경로 길이가 128자를 초과하는 파일을 열 수 없습니다. CreateFile 함수에는 이 경로 길이 제한이 없습니다.
[in] uStyle
수행할 작업입니다.
이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.
값 | 의미 |
---|---|
|
무시됩니다.
취소 단추가 포함된 대화 상자를 생성하려면 OF_PROMPT 사용합니다. |
|
새 파일을 만듭니다.
파일이 있는 경우 길이가 0으로 잘립니다. |
|
파일을 삭제합니다. |
|
파일을 연 다음 닫습니다.
이를 사용하여 파일의 존재를 테스트합니다. |
|
OFSTRUCT 구조를 채우지만 다른 작업은 수행하지 않습니다. |
|
요청된 파일이 없는 경우 대화 상자를 표시합니다.
대화 상자는 시스템에서 파일을 찾을 수 없으며 다시 시도 및 취소 단추가 포함되어 있음을 사용자에게 알립니다. 취소 단추는 파일을 찾을 수 없는 오류 메시지를 반환하도록 OpenFile에 지시합니다. |
|
읽으려는 경우에만 파일을 엽니다. |
|
읽기/쓰기 권한으로 파일을 엽니다. |
|
다시 열기 버퍼의 정보를 사용하여 파일을 엽니다. |
|
MS-DOS 기반 파일 시스템의 경우 호환성 모드가 있는 파일을 열고 지정된 컴퓨터의 모든 프로세스에서 파일을 여러 번 열 수 있습니다.
다른 공유 모드를 사용하여 파일을 열려는 다른 노력이 실패합니다. 이 플래그는 CreateFile 함수의 FILE_SHARE_READ|FILE_SHARE_WRITE 플래그에 매핑됩니다. |
|
다른 프로세스에 대한 읽기 또는 쓰기 액세스를 거부하지 않고 파일을 엽니다.
MS-DOS 기반 파일 시스템에서 파일이 다른 프로세스에 의해 호환 모드로 열려 있으면 함수가 실패합니다. 이 플래그는 CreateFile 함수의 FILE_SHARE_READ|FILE_SHARE_WRITE 플래그에 매핑됩니다. |
|
파일을 열고 다른 프로세스에 대한 읽기 액세스를 거부합니다.
MS-DOS 기반 파일 시스템에서 파일이 호환 모드로 열려 있거나 다른 프로세스의 읽기 액세스를 위해 열려 있는 경우 함수가 실패합니다. 이 플래그는 CreateFile 함수의 FILE_SHARE_WRITE 플래그에 매핑됩니다. |
|
파일을 열고 다른 프로세스에 대한 쓰기 액세스를 거부합니다.
MS-DOS 기반 파일 시스템에서 파일이 호환 모드로 열려 있거나 다른 프로세스의 쓰기 액세스에 대해 열려 있는 경우 함수가 실패합니다. 이 플래그는 CreateFile 함수의 FILE_SHARE_READ 플래그에 매핑됩니다. |
|
전용 모드로 파일을 열고 다른 프로세스에 대한 읽기/쓰기 액세스를 모두 거부합니다. 현재 프로세스에서도 읽기/쓰기 액세스를 위해 다른 모드로 파일을 연 경우 함수가 실패합니다. |
|
파일의 날짜와 시간이 이전에 열린 날짜와 같은지 확인합니다.
이는 읽기 전용 파일에 대한 추가 검사 유용합니다. |
|
쓰기 액세스용으로만 파일을 엽니다. |
반환 값
함수가 성공하면 반환 값은 파일 I/O를 수행할 때 사용할 파일 핸들을 지정합니다. 파일을 닫려면 이 핸들을 사용하여 CloseHandle 함수를 호출합니다.
함수가 실패하면 반환 값이 HFILE_ERROR. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
lpFileName 매개 변수가 파일 이름과 확장명만 지정하는 경우 이 함수는 다음 디렉터리와 표시된 순서에서 일치하는 파일을 검색합니다.
- 애플리케이션이 로드되는 디렉터리입니다.
- 현재 디렉터리
-
Windows 시스템 디렉터리입니다.
GetSystemDirectory 함수를 사용하여 이 디렉터리의 경로를 가져옵니다.
-
16비트 Windows 시스템 디렉터리입니다.
이 디렉터리의 경로를 검색하는 함수는 없지만 검색됩니다.
-
Windows 디렉터리입니다.
GetWindowsDirectory 함수를 사용하여 이 디렉터리의 경로를 가져옵니다.
- PATH 환경 변수에 나열된 디렉터리입니다.
OpenFile 함수는 16비트 Windows OpenFile 함수가 지원하는 OF_SEARCH 플래그를 지원하지 않습니다. OF_SEARCH 플래그는 파일 이름에 전체 경로가 포함된 경우에도 시스템에서 일치하는 파일을 검색하도록 지시합니다. SearchPath 함수를 사용하여 파일을 검색합니다.
uStyle 매개 변수의 값이 다른 액세스 플래그가 있는 OF_DELETE 액세스 플래그 OR'ed이고 FILE_SHARE_DELETE 공유 액세스를 사용하여 원격 파일 또는 디렉터리를 열지 않은 경우 원격 컴퓨터에서 삭제를 위해 파일 또는 디렉터리를 열려고 하면 공유 위반이 발생합니다. 이 시나리오에서 공유 위반을 방지하려면 OF_DELETE 액세스만 있는 원격 파일 또는 디렉터리를 열거나 삭제를 위해 파일 또는 디렉터리를 먼저 열지 않고 DeleteFile 을 호출합니다.
Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술을 통해 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 예 |
SMB 3.0 TFO(투명 장애 조치(failover)) | 예 |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | 예 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 예 |
ReFS(Resilient File System) | 예 |
CsvF는 압축된 파일에 대해 리디렉션된 IO를 수행합니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |