다음을 통해 공유


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-type 값입니다.

[_In_] Flags

0이어야 합니다.

[_Out_] DriverDirectoryHandle

요청된 드라이버 디렉터리에 대한 HANDLE을 수신하는 변수에 대한 포인터입니다. 호출자가 NULL을 전달해서는 안됩니다.

반환 값

적절한 NTSTATUS 값반환합니다. 가능한 값은 다음과 같습니다.

오류 코드 묘사
STATUS_SUCCESS 호출이 요청된 드라이버 디렉터리에 대한 핸들을 성공적으로 열었습니다.
STATUS_INVALID_PARAMETER 이 함수에 대한 입력 값이 잘못되었습니다. 예를 들어 DriverObject 또는 DriverDirectoryHandle NULL입니다. 플래그 0이 아닙니다.

발언

필요한 디스크 및 볼륨이 시작되기 전에 IoGetDriverDirectory 호출되면 함수는 핸들을 열지 않고 오류를 반환합니다.

드라이버는 일반적으로 ZwOpenFileZwCreateFile 사용하여 파일에 액세스/만듭니다. 이러한 함수에 대한 매개 변수 중 하나는 개체 이름과 루트 디렉터리를 포함하는 OBJECT_ATTRIBUTES 구조체입니다. 루트 디렉터리가 NULL이면 개체 이름은 정규화된 경로여야 합니다. 그러나 루트 디렉터리에 대한 핸들을 제공하는 경우 개체 이름은 핸들이 나타내는 개체(파일의 경우 디렉터리)를 기준으로 해야 합니다.

IoGetDriverDirectory 호출이 성공하면 수신된 HANDLE을 ZwOpenFile 전달하고 ZwCreateFileOBJECT_ATTRIBUTES 루트 디렉터리로 사용합니다.

드라이버는 ZwClose 호출하여 액세스가 더 이상 필요하지 않은 경우 수신된 핸들을 닫아야 합니다.

IoGetDriverDirectory 호출자는 시스템 스레드의 컨텍스트에서 IRQL = PASSIVE_LEVEL 실행되어야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 1803
헤더 wdm.h
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

참고 항목

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes