ZwUnloadDriver 함수(wdm.h)

ZwUnloadDriver 루틴은 시스템에서 드라이버를 언로드합니다. 이 루틴을 매우 신중하게 사용합니다(아래 설명 섹션 참조).

구문

NTSYSAPI NTSTATUS ZwUnloadDriver(
  [in] PUNICODE_STRING DriverServiceName
);

매개 변수

[in] DriverServiceName

드라이버의 레지스트리 키 \Registry\Machine\System\CurrentControlSet\Services\<DriverName>경로를 지정하는 계산된 유니코드 문자열에 대한 포인터입니다. 여기서 DriverName 은 드라이버의 이름입니다.

반환 값

ZwUnloadDriver는 STATUS_SUCCESS 또는 오류 NTSTATUS 값(예: STATUS_INVALID_DEVICE_REQUEST)을 반환합니다.

DriverServiceName에 지정된 드라이버에 DRIVER_OBJECT 구조에 설정된 DriverUnload 콜백 루틴이 없으면 ZwUnloadDriver는 STATUS_INVALID_DEVICE_REQUEST 반환합니다.

설명

ZwUnloadDriver는 현재 실행 중인 시스템에서 디바이스 또는 파일 시스템 드라이버를 동적으로 언로드합니다. 드라이버가 ZwUnloadDriver 를 자체 호출하는 것은 권장되지 않습니다.

파일 시스템 필터 드라이버는 실행 중인 시스템에서 안전하게 언로드할 수 없습니다. 따라서 필터는 디버깅 목적으로만 ZwUnloadDriver 를 사용해야 합니다. 필터의 정품 버전에서는 이 루틴을 호출해서는 안 됩니다.

DriverName이 PnP 디바이스 드라이버의 이름인 경우 ZwUnloadDriver는 STATUS_INVALID_DEVICE_REQUEST 반환하고 드라이버를 언로드하지 않습니다.

미니필터는 ZwUnloadDriver 대신 FltUnloadFilter를 사용하여 지원 미니필터를 언로드해야 합니다.

ZwUnloadDriver 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwUnloadDriver" 대신 "NtUnloadDriver"라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

FltUnloadFilter

RtlInitUnicodeString

UNICODE_STRING

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용