IoGetDriverDirectory 함수(wdm.h)
드라이버가 파일을 읽고 쓸 수 있는 디스크의 디렉터리에 대한 핸들을 반환합니다. 해당 디렉터리의 파일은 특정 드라이버 개체에 적용됩니다.
구문
NTSTATUS IoGetDriverDirectory(
[_In_] PDRIVER_OBJECT DriverObject,
[_In_] DRIVER_DIRECTORY_TYPE DirectoryType,
[_In_] ULONG Flags,
[_Out_] PHANDLE DriverDirectoryHandle
);
매개 변수
[_In_] DriverObject
호출 드라이버의 드라이버 개체(DRIVER_OBJECT 구조)에 대한 포인터입니다.
[_In_] DirectoryType
요청된 디렉터리의 형식을 나타내는 _DRIVER_DIRECTORY_TYPE 형식 값입니다.
[_In_] Flags
0이어야 합니다.
[_Out_] DriverDirectoryHandle
요청된 드라이버 디렉터리에 대한 HANDLE을 수신하는 변수에 대한 포인터입니다. 호출자가 NULL을 전달해서는 안됩니다.
반환 값
적절한 NTSTATUS 값을 반환합니다. 가능한 값은 다음과 같습니다.
오류 코드 | Description |
---|---|
STATUS_SUCCESS | 호출이 요청된 드라이버 디렉터리에 대한 핸들을 성공적으로 열었습니다. |
STATUS_INVALID_PARAMETER | 이 함수에 대한 입력 값이 잘못되었습니다. 예를 들어 DriverObject 또는 DriverDirectoryHandle 은 NULL입니다. 플래그 는 0이 아닙니다. |
설명
필요한 디스크와 볼륨이 시작되기 전에 IoGetDriverDirectory 가 호출되면 함수는 핸들을 열지 않고 오류를 반환합니다.
드라이버는 일반적으로 ZwOpenFile 및 ZwCreateFile 을 사용하여 파일에 액세스/만듭니다. 이러한 함수에 대한 매개 변수 중 하나는 개체 이름과 루트 디렉터리를 포함하는 OBJECT_ATTRIBUTES 구조체입니다. 루트 디렉터리가 NULL이면 개체 이름은 정규화된 경로여야 합니다. 그러나 루트 디렉터리에 대한 핸들을 제공하는 경우 개체 이름은 핸들이 나타내는 개체(파일의 경우 디렉터리)를 기준으로 해야 합니다.
IoGetDriverDirectory 호출이 성공하면 받은 HANDLE을 ZwOpenFile 및 ZwCreateFile에 전달하는 OBJECT_ATTRIBUTES 루트 디렉터리로 사용합니다.
드라이버는 액세스가 더 이상 필요하지 않을 때 받은 핸들을 닫기 위해 ZwClose 를 호출해야 합니다.
IoGetDriverDirectory의 호출자는 시스템 스레드의 컨텍스트에서 IRQL = PASSIVE_LEVEL 실행되어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10, 버전 1803 |
머리글 | wdm.h |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |