다음을 통해 공유


DiUninstallDriverW 함수(newdev.h)

DiUninstallDriver 함수는 해당 디바이스를 다른 일치하는 드라이버 패키지(사용 가능한 경우)와 함께 설치하여 설치된 모든 디바이스에서 드라이버 패키지를 제거하거나, 일치하는 다른 드라이버 패키지를 사용할 수 없는 경우 null 드라이버를 제거합니다. 그런 다음 지정된 드라이버 패키지가 드라이버 저장소에서 제거됩니다.

구문

BOOL DiUninstallDriverW(
  [in, optional]  HWND    hwndParent,
  [in]            LPCWSTR InfPath,
  [in]            DWORD   Flags,
  [out, optional] PBOOL   NeedReboot
);

매개 변수

[in, optional] hwndParent

DiUninstallDriver가 드라이버 제거와 연결된 사용자 인터페이스 구성 요소를 표시하는 데 사용해야 하는 최상위 창에 대한 핸들입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다.

[in] InfPath

드라이버 패키지에 대한 INF 파일의 정규화된 경로를 제공하는 NULL로 끝나는 문자열에 대한 포인터입니다.

[in] Flags

다음 플래그 중 0개 이상을 지정하는 DWORD 형식의 값입니다. DIURFLAG_NO_REMOVE_INF. 일반적으로 이 플래그는 0으로 설정해야 합니다.

이 플래그가 0이면 DiUninstallDriver 는 일치하는 다른 드라이버 패키지(사용 가능한 경우)와 함께 해당 디바이스를 설치하거나 일치하는 다른 드라이버 패키지를 사용할 수 없는 경우 null 드라이버를 설치하여 설치된 모든 디바이스에서 드라이버 패키지를 제거합니다. 그러나 이 플래그가 DIURFLAG_NO_REMOVE_INF 설정된 경우 DiUninstallDriver 는 설치된 모든 장치에서 드라이버 패키지를 제거하지만 드라이버 저장소에서 드라이버 패키지를 제거하지는 않습니다.

주의: 드라이버 패키지를 강제로 제거하면 호환성이 더 높거나 최신 드라이버 패키지를 호환성이 떨어지거나 이전 드라이버로 대체할 수 있습니다.
 
Windows에서 디바이스용 드라이버 패키지를 선택하는 방법에 대한 자세한 내용은 Windows에서 드라이버를 선택하는 방법을 참조하세요.

[out, optional] NeedReboot

DiUninstallDriver가 제거를 완료하기 위해 시스템 다시 시작이 필요한지 여부를 나타내기 위해 설정하는 BOOL 형식의 값에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 제거를 완료하기 위해 매개 변수가 제공되고 시스템 다시 시작이 필요한 경우 DiUninstallDriver 는 값을 TRUE로 설정합니다. 이 경우 호출자는 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다. 이 매개 변수가 제공되고 제거를 완료하기 위해 시스템 다시 시작이 필요하지 않은 경우 DiUninstallDriver 는 값을 FALSE로 설정합니다. 제거를 완료하려면 매개 변수가 NULL 이고 시스템 다시 시작이 필요한 경우 DiUninstallDriver 는 시스템 다시 시작 대화 상자를 표시합니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션 을 참조하세요 .

반환 값

DiUninstallDriver는 함수가 설치된 모든 장치에서 드라이버 패키지를 성공적으로 제거하고 시스템의 드라이버 저장소에서 성공적으로 제거되면 TRUE를 반환합니다. 드라이버 패키지가 드라이버 저장소에서 성공적으로 제거되지 않으면 DiUninstallDriverFALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 일반적인 오류 값 중 일부는 다음과 같습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
호출자에게 관리자 권한이 없습니다. 기본적으로 Windows에서는 호출자에게 드라이버 저장소에서 드라이버 패키지를 제거할 수 있는 관리자 권한이 있어야 합니다.
ERROR_FILE_NOT_FOUND
지정된 INF 파일의 경로가 없습니다.
ERROR_INVALID_FLAGS
Flags에 지정된 값이 0 또는 DIURFLAG_NO_REMOVE_INF 같지 않습니다.
ERROR_IN_WOW64
호출 애플리케이션은 64비트 환경에서 실행을 시도하는 32비트 애플리케이션으로, 허용되지 않습니다. 자세한 내용은 64비트 시스템에 디바이스 설치를 참조하세요.

설명

일반적으로 제거 애플리케이션은 제거를 완료하기 위해 다시 시작해야 하는 경우 사용자에게 시스템을 다시 시작하라는 메시지를 표시하도록 DiUninstallDriver에 지시하도록 NeedRebootNULL로 설정해야 합니다. 애플리케이션은 다음 경우에만 NeedReboot 포인터를 제공해야 합니다.

  • 응용 프로그램에서 DiUninstallDriver 를 여러 번 호출하여 제거를 완료해야 합니다. 이 경우 애플리케이션은 DiUninstallDriver에 대한 호출에서 TRUENeedReboot 값이 반환되는지 여부를 기록하고, 이 경우 DiUninstallDriver에 대한 최종 호출이 반환된 후 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
  • 애플리케이션은 시스템을 다시 시작하기 전에 DiUninstallDriver를 호출하는 것 외에 필요한 작업을 수행해야 합니다. 시스템 다시 시작이 필요한 경우 애플리케이션은 필요한 작업을 완료한 다음 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 버전 1703 이상 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 newdev.h(Newdev.h 포함)
라이브러리 Newdev.lib

추가 정보

DiUninstallDevice