다음을 통해 공유


IoQueryFullDriverPath 함수(ntddk.h)

IoQueryFullDriverPath 루틴은 지정된 드라이버 개체에 대해 로드되는 이진 파일의 전체 경로 이름을 검색합니다. Windows 10 버전 1709부터 호출자는 적절한 동기화를 사용하여 호출 중에 DRIVER_OBJECT 구조가 유효한지 확인하는 한 자체 드라이버 개체가 아닌 드라이버 개체를 쿼리할 수 있습니다.

구문

NTSTATUS IoQueryFullDriverPath(
  [in]  PDRIVER_OBJECT  DriverObject,
  [out] PUNICODE_STRING FullPath
);

매개 변수

[in] DriverObject

DRIVER_OBJECT 구조체에 대한 포인터입니다. 버전 1709 이전 버전의 Windows 10 실행하는 컴퓨터에서 IoQueryFullDriverPath를 호출하는 경우 이 구조는 호출 드라이버의 드라이버 개체여야 합니다.

[out] FullPath

호출자가 할당한 UNICODE_STRING 구조체에 대한 포인터입니다. 반환이 성공하면 이 구조체에 경로 이름이 포함됩니다.

반환 값

호출이 경로 이름을 성공적으로 가져오면 IoQueryFullDriverPath는 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값에는 다음 상태 코드가 포함됩니다.

반환 코드 설명
STATUS_ACCESS_DENIED 대상 드라이버 개체가 호출자에 속하지 않습니다. 이 상태 코드는 1709 이전의 Windows 10 버전에서만 반환됩니다.
STATUS_NOT_FOUND 드라이버 개체에 연결된 섹션(로드된 메모리 이미지)이 없습니다.
STATUS_INSUFFICIENT_RESOURCES 요청된 작업을 수행할 수 있는 리소스가 부족합니다.

설명

드라이버는 이 루틴을 호출하여 이진 파일의 전체 경로 이름을 쿼리하거나, Windows 10 버전 1709부터 다른 드라이버에 대한 이진 파일의 전체 경로 이름을 쿼리할 수 있습니다.

호출자는 FullPath 매개 변수가 가리키는 UNICODE_STRING 구조를 할당하지만 이 구조를 초기화할 필요는 없습니다. IoQueryFullDriverPath 는 이 구조체의 원래 내용이 유효하지 않다고 가정하고 덮어씁니다. 이 루틴은 페이징된 시스템 메모리에서 문자열 버퍼를 할당하고, 구조체의 Buffer 멤버를 이 버퍼를 가리키도록 설정하고, 버퍼 및 해당 내용을 설명하는 MaximumLengthBuffer 멤버를 설정합니다.

호출자는 전체 경로 문자열이 더 이상 필요하지 않은 경우 FullPath-Buffer>가 가리키는 스토리지를 해제할 책임이 있습니다. 일반적으로 호출자는 ExFreePool과 같은 루틴을 호출하여 이 스토리지를 해제합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1 사용하여 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

DRIVER_OBJECT

ExFreePool

UNICODE_STRING