NtOpenFile 함수(ntifs.h)
NtOpenFile 루틴은 기존 파일, 디렉터리, 디바이스 또는 볼륨을 엽니다.
통사론
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenFile(
[out] PHANDLE FileHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG ShareAccess,
[in] ULONG OpenOptions
);
매개 변수
[out] FileHandle
파일에 대한 핸들을 받는 HANDLE 변수에 대한 포인터입니다.
[in] DesiredAccess
개체에 대한 요청된 액세스를 결정하는 ACCESS_MASK 값을 지정합니다. 자세한 내용은 NtCreateFileDesiredAccess 매개 변수를 참조하세요.
[in] ObjectAttributes
개체 이름 및 기타 특성을 지정하는 OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. InitializeObjectAttributes 사용하여 이 구조를 초기화합니다. 호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 InitializeObjectAttributes를 호출할 때 OBJ_KERNEL_HANDLE 특성을 설정해야 합니다.
[out] IoStatusBlock
요청된 작업에 대한 최종 완료 상태 및 정보를 수신하는 IO_STATUS_BLOCK 구조체에 대한 포인터입니다.
[in] ShareAccess
파일에 대한 공유 액세스 유형을 지정합니다. 자세한 내용은 NtCreateFileShareAccess 매개 변수를 참조하세요.
[in] OpenOptions
파일을 열 때 적용할 옵션을 지정합니다. 자세한 내용은 NtCreateFileCreateOptions 매개 변수를 참조하세요.
반환 값
NtOpenFile STATUS_SUCCESS 또는 적절한 NTSTATUS 오류 코드를 반환합니다. 후자의 경우 호출자는 IoStatusBlock 매개 변수를 확인하여 오류의 원인에 대한 자세한 정보를 찾을 수 있습니다.
발언
NtOpenFile 호출자가 파일의 데이터 또는 파일 개체의 상태 및 특성을 조작하는 데 사용할 수 있는 핸들을 제공합니다. NtOpenFileNtCreateFile제공하는 기능의 하위 집합을 제공합니다. 자세한 내용은 드라이버 파일 사용참조하세요.
FileHandle 가리키는 핸들이 더 이상 사용되지 않으면 드라이버는 NtClose 호출하여 닫아야 합니다.
호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않은 경우 호출자가 만드는 핸들이 프라이빗 핸들인지 확인해야 합니다. 그렇지 않으면 드라이버가 실행 중인 컨텍스트의 프로세스에서 핸들에 액세스할 수 있습니다. 자세한 내용은 개체 핸들참조하세요.
NtOpenFile 호출자는 IRQL = PASSIVE_LEVEL 실행 중이어야 하며 특수 커널 APC가 사용하도록 설정된.
이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenFile" 대신 "NtOpenFile" 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. NtXxxZwXxx 루틴 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL(설명 섹션 참조) |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, PowerIrpDDis |