DiInstallDriverW 함수(newdev.h)

DiInstallDriver 함수는 드라이버 저장소에 드라이버를 사전 설치한 다음 드라이버가 지원하는 시스템에 있는 디바이스에 드라이버를 설치합니다.

구문

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

매개 변수

[in, optional] hwndParent

DiInstallDriver가 디바이스 설치와 관련된 모든 사용자 인터페이스 구성 요소를 표시하는 데 사용하는 최상위 창에 대한 핸들입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다.

[in] InfPath

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

[in] Flags

여기에 설명된 대로 0 또는 하나 이상의 플래그 조합을 지정하는 DWORD 형식의 값입니다(Flags 는 일반적으로 0으로 설정됨).

Flags가 0인 경우 DiInstallDriver는 드라이버가 디바이스에 현재 설치된 드라이버보다 디바이스와 더 일치하는 경우에만 지정된 드라이버를 디바이스에 설치합니다. Windows에서 디바이스용 드라이버를 선택하는 방법에 대한 자세한 내용은 Windows에서 드라이버를 선택하는 방법을 참조하세요.

Flags에 DIIRFLAG_FORCE_INF 포함된 경우 DiInstallDriver는 드라이버가 디바이스에 현재 설치된 드라이버보다 디바이스와 더 일치하는지 여부에 관계없이 지정된 드라이버를 일치하는 디바이스에 설치합니다. DIIRFLAG_INSTALL_AS_SET 지정한 경우 DIIRFLAG_FORCE_INF 무시됩니다.

주의 드라이버를 강제로 설치하면 호환성이 더 높거나 최신 드라이버를 호환성이 떨어지거나 오래된 드라이버로 대체할 수 있습니다.
 

Flags에 DIIRFLAG_INSTALL_AS_SET(Windows 10 버전 1709 이상에서 지원됨)가 포함된 경우 InfPath는 INF 파일에 대한 정규화된 경로 대신 디렉터리를 지정해야 하며 DiInstallDriver는 특별한 동작으로 해당 디렉터리에 모든 INF 파일을 설치합니다. 모든 드라이버 패키지는드라이버 스토어 에 스테이징되지만 아직 디바이스에 설치할 수 없습니다. 시스템의 다음 종료 시 이러한 드라이버 패키지는 앞으로 디바이스에 설치할 수 있게 되며, 디바이스가 시스템의 다음 부팅 시 준비되도록 가장 일치하는 모든 디바이스에 설치됩니다.

[out, optional] NeedReboot

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

반환 값

함수가 드라이버 저장소에 지정된 드라이버 패키지를 성공적으로 사전 설치한 경우 DiInstallDriverTRUE를 반환합니다. 또한 DiInstallDriver는 함수가 시스템의 하나 이상의 디바이스에 드라이버를 성공적으로 설치한 경우 TRUE 를 반환합니다. 드라이버 패키지가 드라이버 저장소에 성공적으로 설치되지 않은 경우 DiInstallDriverFALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 몇 가지 일반적인 오류 값은 다음과 같습니다.

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

설명

DiInstallDriver 는 다음 작업을 수행합니다.

  1. 드라이버 저장소드라이버 패키지를 미리 설치합니다. 드라이버 저장소에 이미 사전 설치된 동일한 드라이버 패키지의 instance 있는 경우 DiInstallDriver는 먼저 해당 instance 제거한 다음 드라이버 패키지의 새 instance 드라이버 저장소에 추가합니다.
  2. 시스템에 있는 디바이스를 열거합니다.
  3. Flags가 0과 같으면 지정된 드라이버가 디바이스에 현재 설치된 드라이버보다 디바이스와 더 일치하는 경우에만 디바이스에 드라이버를 설치합니다.
  4. 플래그가 DIIRFLAG_FORCE_INF 같으면 드라이버 패키지가 디바이스에 현재 설치된 드라이버보다 디바이스와 더 일치하는지 여부에 관계없이 디바이스에 드라이버를 설치합니다.
일반적으로 설치 애플리케이션은 설치를 완료하기 위해 다시 시작해야 하는 경우 사용자에게 시스템을 다시 시작하라는 메시지를 표시하도록 DiInstallDriver에 지시하도록 NeedRebootNULL로 설정해야 합니다. 애플리케이션은 다음 경우에만 NeedReboot 포인터를 제공해야 합니다.
  • 설치를 완료하려면 애플리케이션 에서 DiInstallDriver 를 여러 번 호출해야 합니다. 이 경우 애플리케이션은 DiInstallDriver에 대한 호출에서 TRUENeedReboot 값이 반환되는지 여부를 기록하고, 이 경우 DiInstallDriver에 대한 최종 호출이 반환된 후 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
  • 애플리케이션은 시스템을 다시 시작하기 전에 DiInstallDriver를 호출하는 것 외에 필요한 작업을 수행해야 합니다. 시스템 다시 시작이 필요한 경우 애플리케이션은 필요한 작업을 완료한 다음 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
  • 애플리케이션은 클래스 설치 관리자입니다. 이 경우 클래스 설치 관리자는 디바이스에 대한 SP_DEVINSTALL_PARAMS 구조의 Flags 멤버에서 DI_NEEDREBOOT 플래그를 설정해야 합니다.
선택한 디바이스에 선택한 드라이버를 설치하려면 DiInstallDevice를 호출합니다. 자세한 내용은 드라이버 설치를 간소화하는 SetupAPI 함수를 참조하세요.

참고

newdev.h 헤더는 DIInstallDriver를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

추가 정보

DiInstallDevice