다음을 통해 공유


OpenFile 함수(winbase.h)

파일을 만들거나, 열거나, 다시 열거나, 삭제합니다.

참고 이 함수에는 제한된 기능이 있으며 권장되지 않습니다. 새 애플리케이션 개발의 경우 CreateFile 함수를 사용합니다.
 

구문

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_CANCEL
0x00000800
무시됩니다.

취소 단추가 포함된 대화 상자를 생성하려면 OF_PROMPT 사용합니다.

OF_CREATE
0x00001000
새 파일을 만듭니다.

파일이 있는 경우 길이가 0으로 잘립니다.

OF_DELETE
0x00000200
파일을 삭제합니다.
OF_EXIST
0x00004000
파일을 연 다음 닫습니다.

이를 사용하여 파일의 존재를 테스트합니다.

OF_PARSE
0x00000100
OFSTRUCT 구조를 채우지만 다른 작업은 수행하지 않습니다.
OF_PROMPT
0x00002000
요청된 파일이 없는 경우 대화 상자를 표시합니다.

대화 상자는 시스템에서 파일을 찾을 수 없으며 다시 시도취소 단추가 포함되어 있음을 사용자에게 알립니다. 취소 단추는 파일을 찾을 수 없는 오류 메시지를 반환하도록 OpenFile에 지시합니다.

OF_READ
0x00000000
읽으려는 경우에만 파일을 엽니다.
OF_READWRITE
0x00000002
읽기/쓰기 권한으로 파일을 엽니다.
OF_REOPEN
0x00008000
다시 열기 버퍼의 정보를 사용하여 파일을 엽니다.
OF_SHARE_COMPAT
0x00000000
MS-DOS 기반 파일 시스템의 경우 호환성 모드가 있는 파일을 열고 지정된 컴퓨터의 모든 프로세스에서 파일을 여러 번 열 수 있습니다.

다른 공유 모드를 사용하여 파일을 열려는 다른 노력이 실패합니다. 이 플래그는 CreateFile 함수의 FILE_SHARE_READ|FILE_SHARE_WRITE 플래그에 매핑됩니다.

OF_SHARE_DENY_NONE
0x00000040
다른 프로세스에 대한 읽기 또는 쓰기 액세스를 거부하지 않고 파일을 엽니다.

MS-DOS 기반 파일 시스템에서 파일이 다른 프로세스에 의해 호환 모드로 열려 있으면 함수가 실패합니다.

이 플래그는 CreateFile 함수의 FILE_SHARE_READ|FILE_SHARE_WRITE 플래그에 매핑됩니다.

OF_SHARE_DENY_READ
0x00000030
파일을 열고 다른 프로세스에 대한 읽기 액세스를 거부합니다.

MS-DOS 기반 파일 시스템에서 파일이 호환 모드로 열려 있거나 다른 프로세스의 읽기 액세스를 위해 열려 있는 경우 함수가 실패합니다.

이 플래그는 CreateFile 함수의 FILE_SHARE_WRITE 플래그에 매핑됩니다.

OF_SHARE_DENY_WRITE
0x00000020
파일을 열고 다른 프로세스에 대한 쓰기 액세스를 거부합니다.

MS-DOS 기반 파일 시스템에서 파일이 호환 모드로 열려 있거나 다른 프로세스의 쓰기 액세스에 대해 열려 있는 경우 함수가 실패합니다.

이 플래그는 CreateFile 함수의 FILE_SHARE_READ 플래그에 매핑됩니다.

OF_SHARE_EXCLUSIVE
0x00000010
전용 모드로 파일을 열고 다른 프로세스에 대한 읽기/쓰기 액세스를 모두 거부합니다. 현재 프로세스에서도 읽기/쓰기 액세스를 위해 다른 모드로 파일을 연 경우 함수가 실패합니다.
OF_VERIFY
파일의 날짜와 시간이 이전에 열린 날짜와 같은지 확인합니다.

이는 읽기 전용 파일에 대한 추가 검사 유용합니다.

OF_WRITE
0x00000001
쓰기 액세스용으로만 파일을 엽니다.

반환 값

함수가 성공하면 반환 값은 파일 I/O를 수행할 때 사용할 파일 핸들을 지정합니다. 파일을 닫려면 이 핸들을 사용하여 CloseHandle 함수를 호출합니다.

함수가 실패하면 반환 값이 HFILE_ERROR. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

lpFileName 매개 변수가 파일 이름과 확장명만 지정하는 경우 이 함수는 다음 디렉터리와 표시된 순서에서 일치하는 파일을 검색합니다.

  1. 애플리케이션이 로드되는 디렉터리입니다.
  2. 현재 디렉터리
  3. Windows 시스템 디렉터리입니다.

    GetSystemDirectory 함수를 사용하여 이 디렉터리의 경로를 가져옵니다.

  4. 16비트 Windows 시스템 디렉터리입니다.

    이 디렉터리의 경로를 검색하는 함수는 없지만 검색됩니다.

  5. Windows 디렉터리입니다.

    GetWindowsDirectory 함수를 사용하여 이 디렉터리의 경로를 가져옵니다.

  6. PATH 환경 변수에 나열된 디렉터리입니다.
lpFileName 매개 변수는 와일드카드 문자를 포함할 수 없습니다.

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

참고 항목

CreateFile

파일 관리 함수

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

SearchPath