CreateFile2FromAppW 함수(fileapifromapp.h)

파일 또는 I/O 디바이스를 만들거나 엽니다. 이 함수는 유니버설 Windows 플랫폼 앱 보안 모델을 준수한다는 점을 제외하고 이 함수의 동작은 CreateFile2와 동일합니다.

구문

WINSTORAGEAPI HANDLE CreateFile2FromAppW(
  LPCWSTR                           lpFileName,
  DWORD                             dwDesiredAccess,
  DWORD                             dwShareMode,
  DWORD                             dwCreationDisposition,
  LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
) noexcept;

매개 변수

lpFileName

만들거나 열 파일 또는 디바이스의 이름입니다.

특수 디바이스 이름에 대한 자세한 내용은 MS-DOS 디바이스 이름 정의를 참조하세요.

파일 스트림을 만들려면 파일 이름, 콜론 및 스트림 이름을 지정합니다. 자세한 내용은 파일 스트림을 참조하세요.

"\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 옵트아웃하는 방법에 대한 자세한 내용은 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을 참조하세요.

dwDesiredAccess

파일 또는 디바이스에 대한 요청된 액세스이며 읽기, 쓰기, 둘 다 또는 0으로 요약할 수 있습니다.

가장 일반적으로 사용되는 값은 GENERIC_READ, GENERIC_WRITE 또는 둘 다(GENERIC_READ | GENERIC_WRITE)입니다. 자세한 내용은 일반 액세스 권한, 파일 보안 및 액세스 권한, 파일 액세스 권한상수ACCESS_MASK 참조하세요.

이 매개 변수가 0인 경우 애플리케이션은 GENERIC_READ 액세스가 거부된 경우에도 해당 파일 또는 디바이스에 액세스하지 않고 파일, 디렉터리 또는 디바이스 특성과 같은 특정 메타데이터를 쿼리할 수 있습니다.

열려 있는 핸들이 이미 있는 열린 요청에서 dwShareMode 매개 변수로 지정된 공유 모드와 충돌하는 액세스 모드를 요청할 수 없습니다.

dwShareMode

파일 또는 디바이스의 요청된 공유 모드로, 읽기, 쓰기, 모두, 삭제, 모두 또는 없음(다음 표 참조)입니다. 특성 또는 확장 특성에 대한 액세스 요청은 이 플래그의 영향을 받지 않습니다.

이 매개 변수가 0이고 함수가 성공하면 파일 또는 디바이스를 공유할 수 없으며 파일 또는 디바이스에 대한 핸들이 닫혀 있을 때까지 다시 열 수 없습니다. 자세한 내용은 주의 섹션을 참조하세요.

열린 핸들이 있는 기존 요청에 지정된 액세스 모드와 충돌하는 공유 모드를 요청할 수 없습니다. 이 함수는 실패하고 GetLastError 함수는 ERROR_SHARING_VIOLATION 반환합니다.

다른 프로세스에 파일 또는 디바이스가 열려 있는 동안 프로세스에서 파일 또는 디바이스를 공유할 수 있도록 하려면 다음 값 중 하나 이상의 호환 가능한 조합을 사용합니다. 이 매개 변수와 dwDesiredAccess 매개 변수의 유효한 조합에 대한 자세한 내용은 파일 만들기 및 열기를 참조하세요.

참고 각 열린 핸들에 대한 공유 옵션은 프로세스 컨텍스트에 관계없이 해당 핸들이 닫히기 전까지 계속 적용됩니다.

 

의미
0 0x00000000

삭제, 읽기 또는 쓰기 액세스를 요청하는 경우 다른 프로세스가 파일 또는 디바이스를 열지 못하게 합니다. 파일 또는 디렉터리에 대한 단독 액세스 권한은 애플리케이션이 파일에 대한 쓰기 권한이 있는 경우에만 부여됩니다.

FILE_SHARE_DELETE 0x00000004

파일 또는 디바이스에서 후속 열기 작업을 사용하여 액세스 삭제를 요청할 수 있습니다.

그렇지 않으면 다른 프로세스에서 삭제 액세스를 요청하는 경우 파일 또는 디바이스를 열 수 없습니다.

이 플래그를 지정하지 않았지만 삭제 액세스를 위해 파일 또는 디바이스가 열려 있으면 함수가 실패합니다.

참고 액세스 삭제를 사용하면 삭제 및 이름 바꾸기 작업을 모두 수행할 수 있습니다.
 
FILE_SHARE_READ 0x00000001

파일 또는 디바이스에서 후속 열기 작업을 사용하여 읽기 액세스를 요청할 수 있습니다.

그렇지 않으면 다른 프로세스에서 읽기 액세스를 요청하는 경우 파일 또는 디바이스를 열 수 없습니다.

이 플래그를 지정하지 않았지만 읽기 액세스를 위해 파일 또는 디바이스가 열려 있으면 함수가 실패합니다.

파일 또는 디렉터리가 열리고 이 플래그가 지정되지 않은 경우 호출자에게 파일 또는 디렉터리에 대한 쓰기 권한이 없으면 함수가 실패합니다.

FILE_SHARE_WRITE 0x00000002

파일 또는 디바이스에서 후속 열기 작업을 사용하여 쓰기 액세스를 요청할 수 있습니다.

그렇지 않으면 다른 프로세스에서 쓰기 액세스를 요청하는 경우 파일 또는 디바이스를 열 수 없습니다.

이 플래그를 지정하지 않았지만 파일 또는 디바이스가 쓰기 액세스를 위해 열렸거나 쓰기 액세스 권한이 있는 파일 매핑이 있는 경우 함수가 실패합니다.

dwCreationDisposition

존재하거나 존재하지 않는 파일 또는 디바이스에서 수행할 작업입니다.

파일 이외의 디바이스의 경우 이 매개 변수는 일반적으로 OPEN_EXISTING 설정됩니다.

이 매개 변수는 결합할 수 없는 다음 값 중 하나여야 합니다.

의미
CREATE_ALWAYS 2

항상 새 파일을 만듭니다.

지정된 파일이 있고 쓸 수 있는 경우 함수는 파일을 잘라내고, 함수가 성공하고, 마지막 오류 코드가 ERROR_ALREADY_EXISTS (183)로 설정됩니다.

지정된 파일이 존재하지 않고 유효한 경로인 경우 새 파일이 만들어지고 함수가 성공하며 마지막 오류 코드가 0으로 설정됩니다.

CREATE_NEW 1

새 파일이 없는 경우에만 새 파일을 만듭니다.

지정된 파일이 있으면 함수가 실패하고 마지막 오류 코드가 ERROR_FILE_EXISTS (80)으로 설정됩니다.

지정된 파일이 존재하지 않고 쓰기 가능한 위치에 대한 유효한 경로인 경우 새 파일이 만들어집니다.

OPEN_ALWAYS 4

항상 파일을 엽니다.

지정된 파일이 있으면 함수가 성공하고 마지막 오류 코드가 ERROR_ALREADY_EXISTS (183)로 설정됩니다.

지정된 파일이 존재하지 않고 쓰기 가능한 위치에 대한 유효한 경로인 경우 함수는 파일을 만들고 마지막 오류 코드는 0으로 설정됩니다.

OPEN_EXISTING 3

파일 또는 디바이스가 있는 경우에만 엽니다.

지정된 파일 또는 디바이스가 없으면 함수가 실패하고 마지막 오류 코드가 ERROR_FILE_NOT_FOUND (2)로 설정됩니다.

TRUNCATE_EXISTING 5

파일을 열고 파일이 있는 경우에만 크기가 0바이트가 되도록 파일을 자립니다.

지정된 파일이 없으면 함수가 실패하고 마지막 오류 코드가 ERROR_FILE_NOT_FOUND (2)로 설정됩니다.

호출 프로세스는 GENERIC_WRITE 비트가 dwDesiredAccess 매개 변수의 일부로 설정된 파일을 열어야 합니다.

pCreateExParams

선택적 CREATEFILE2_EXTENDED_PARAMETERS 구조체에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값은 지정된 파일, 디바이스, 명명된 파이프 또는 메일 슬롯에 대한 열린 핸들입니다.

함수가 실패하는 경우 반환 값은 INVALID_HANDLE_VALUE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1803
머리글 fileapifromapp.h