파일에 대한 핸들 열기
파일에 대한 핸들을 열려면 다음 단계를 수행합니다.
OBJECT_ATTRIBUTES 구조를 만들고 InitializeObjectAttributes 매크로를 호출하여 구조를 초기화합니다. 파일의 개체 이름을 InitializeObjectAttributes에 대한 ObjectName 매개 변수로 지정합니다.
OBJECT_ATTRIBUTES 구조를 IoCreateFile, ZwCreateFile 또는 ZwOpenFile에 전달하여 파일에 대한 핸들을 엽니다.
파일이 없으면 IoCreateFile 및 ZwCreateFile 에서 파일을 만드는 반면 ZwOpenFile 은 STATUS_OBJECT_NAME_NOT_FOUND 반환합니다.
드라이버는 거의 항상 IoCreateFile 대신 ZwCreateFile 또는 ZwOpenFile을 사용합니다.
IoCreateFile, ZwCreateFile 또는 ZwOpenFile을 호출하면 Windows 임원이 파일을 나타내는 새 파일 개체를 만들고 개체에 대한 열린 핸들을 제공합니다. 이 파일 개체는 열려 있는 모든 핸들을 닫을 때까지 유지됩니다.
어떤 루틴을 호출하든 필요한 액세스 권한을 DesiredAccess 매개 변수로 전달해야 합니다. 이러한 권한은 드라이버가 수행할 모든 작업을 포함해야 합니다. 다음 표에는 이러한 작업과 요청할 수 있는 해당 액세스 권한이 나와 있습니다.
작업 | 필요한 액세스 권한 |
---|---|
파일에서 읽습니다. |
FILE_READ_DATA 또는 GENERIC_READ |
파일에 씁니다. |
FILE_WRITE_DATA 또는 GENERIC_WRITE |
파일의 끝에만 씁니다. |
FILE_APPEND_DATA |
파일의 생성 시간과 같은 파일의 메타데이터를 읽습니다. |
FILE_READ_ATTRIBUTES 또는 GENERIC_READ |
파일의 생성 시간과 같은 파일의 메타데이터를 작성합니다. |
FILE_WRITE_ATTRIBUTES 또는 GENERIC_WRITE |
DesiredAccess에 사용할 수 있는 값에 대한 자세한 내용은 ZwCreateFile을 참조하세요.