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 |