DiInstallDevice 함수(newdev.h)
DiInstallDevice 함수는 시스템에 있는 지정된 디바이스의 드라이버 저장소에 미리 설치된 지정된 드라이버를 설치합니다.
구문
BOOL DiInstallDevice(
[in, optional] HWND hwndParent,
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in, optional] PSP_DRVINFO_DATA DriverInfoData,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
매개 변수
[in, optional] hwndParent
DiInstallDevice가 디바이스 설치와 관련된 모든 사용자 인터페이스 구성 요소를 표시하는 데 사용하는 최상위 창에 대한 핸들입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다.
[in] DeviceInfoSet
지정된 디바이스를 나타내는 디바이스 정보 요소가 포함된 디바이스 정보 집합에 대한 핸들입니다.
[in] DeviceInfoData
지정된 디바이스 정보 집합에서 지정된 디바이스를 나타내는 SP_DEVINFO_DATA 구조체에 대한 포인터입니다.
[in, optional] DriverInfoData
지정된 디바이스에 설치할 드라이버를 지정하는 SP_DRVINFO_DATA 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다. 이 매개 변수가 NULL인 경우 DiInstallDevice 는 드라이버 저장소 에 미리 설치된 드라이버에서 지정된 디바이스와 가장 일치하는 드라이버를 검색하고, 드라이버가 발견되면 지정된 디바이스에 드라이버를 설치합니다.
[in] Flags
0 또는 다음 플래그를 지정하는 DWORD 형식의 값입니다.
DIIDFLAG_SHOWSEARCHUI
호출자가 드라이버를 지정하지 않는 경우(DriverInfoData 가 NULL로 설정됨) DiInstallDevice 는 지정된 디바이스와 일치하는 사전 설치된 드라이버를 찾지 않습니다. 대신 DiInstallDevice 는 디바이스에 대한 새 하드웨어 발견 마법사를 표시합니다.
DIIDFLAG_NOFINISHINSTALLUI
DiInstallDevice 는 마침 설치 마법사 페이지 또는 마침 설치 작업을 시작하지 않습니다. DiInstallDevice의 호출자는 이러한 작업을 시작해야 합니다. 호출자는 호출자가 호출자가 제공한 사용자 인터페이스 구성 요소의 컨텍스트에서 마침 설치 마법사 페이지를 호출해야 하는 경우에만 이 플래그를 지정해야 합니다.
DIIDFLAG_INSTALLNULLDRIVER
DiInstallDevice 는 지정된 디바이스에 null 드라이버를 설치하려고 시도합니다. 이 플래그가 설정되면 DiInstallDevice 는 DriverInfoData 매개 변수를 사용하지 않습니다. DiInstallDevice는 모든 디바이스 설정을 제거하고, 디바이스를 원시 모드로 실행할 수 없는 경우 함수는 디바이스의 상태 CM_PROB_FAILED_INSTALL 설정합니다. DiInstallDevice에서 null 드라이버를 설치할 수 없는 경우 디바이스의 결과 상태는 디바이스가 컴퓨터에 처음으로 연결되고 Windows에서 디바이스에 대한 드라이버를 찾지 못한 경우와 동일합니다.
DIIDFLAG_INSTALLCOPYINFDRIVERS
CopyINF 지시문을 통해 지정된 추가 INF 파일은 적용 가능한 모든 디바이스에 설치됩니다. 추가 INF를 설치하지 못하면 기본 INF 설치가 실패하지 않습니다.
[out, optional] NeedReboot
DiInstallDevice가 설치를 완료하는 데 시스템 다시 시작이 필요한지 여부를 나타내기 위해 설정하는 BOOL 형식의 값에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다. 이 매개 변수가 제공되고 설치를 완료하기 위해 시스템을 다시 시작해야 하는 경우 DiInstallDevice 는 값을 TRUE로 설정합니다. 이 경우 호출자는 시스템을 다시 시작해야 합니다. 이 매개 변수가 제공되고 시스템 다시 시작이 필요하지 않은 경우 DiInstallDevice 는 이 매개 변수를 FALSE로 설정합니다. 이 매개 변수가 NULL 이고 설치를 완료하려면 시스템 다시 시작이 필요한 경우 DiInstallDevice 는 시스템 다시 시작 대화 상자를 표시합니다.
반환 값
함수가 지정된 디바이스에 지정된 드라이버를 성공적으로 설치한 경우 DiInstallDevice는 TRUE를 반환합니다. 그렇지 않으면 DiInstallDevice 가 FALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 몇 가지 일반적인 오류 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
호출자에게 관리자 권한이 없습니다. 기본적으로 Windows Vista 및 Windows Server 2008에서는 호출 프로세스에 디바이스에 드라이버를 설치할 수 있는 관리자 권한이 있어야 합니다. |
|
Flags에 대해 지정된 값이 유효한 플래그 의 0 또는 비트 OR이 아닙니다. |
|
호출 애플리케이션은 허용되지 않는 64비트 환경에서 실행하려는 32비트 애플리케이션입니다. 자세한 내용은 64비트 시스템에 디바이스 설치를 참조하세요. |
설명
특정 디바이스에 특정 드라이버를 설치해야 하는 경우에만 DiInstallDevice 를 호출합니다. 그렇지 않으면 UpdateDriverForPlugAndPlayDevices 또는 DiInstallDriver 를 사용하여 디바이스용 드라이버를 설치합니다. 디바이스에 드라이버를 설치하기 위해 호출할 이러한 함수에 대한 자세한 내용은 드라이버 설치 간소화 설치API 함수를 참조하세요.
DiInstallDevice를 호출하기 전에 호출자는 디바이스를 지정하는 SP_DEVINFO_DATA 구조와 필요에 따라 디바이스에 대한 드라이버를 지정하는 SP_DRVINFO_DATA 구조를 가져와야 합니다.
지정된 디바이스가 포함된 디바이스 정보 집합을 만들고 디바이스에 대한 SP_DEVINFO_DATA 구조를 가져오려면 다음 중 하나를 수행합니다.
-
SetupDiGetClassDevs를 호출하여 디바이스가 포함된 디바이스 정보 집합을 검색한 다음 SetupDiEnumDeviceInfo를 호출하여 디바이스 정보 집합의 디바이스를 열거합니다. 각 호출에서 SetupDiEnumDeviceInfo 는 디바이스 정보 집합의 열거된 디바이스를 나타내는 SP_DEVINFO_DATA 구조를 반환합니다. 열거된 디바이스에 대한 특정 정보를 가져오려면 SetupDiGetDeviceProperty를 호출하고 SetupDiEnumDeviceInfo에서 반환되는 SP_DEVINFO_DATA 구조를 제공하세요.
- 또는
- SetupDiOpenDeviceInfo를 호출하여 알려진 디바이스 instance ID가 있는 디바이스를 디바이스 정보 집합에 추가합니다. SetupDiOpenDeviceInfo 는 디바이스 정보 집합의 디바이스를 나타내는 SP_DEVINFO_DATA 구조를 반환합니다.
일반적으로 설치 애플리케이션은 NeedReboot 를 NULL로 설정해야 합니다. 이렇게 하면 설치를 완료하기 위해 다시 시작해야 하는 경우 DiInstallDevice 에서 사용자에게 시스템을 다시 시작하라는 메시지를 표시합니다. 애플리케이션은 다음 경우에만 NeedReboot 포인터를 제공해야 합니다.
- 애플리케이션은 설치를 완료하려면 DiInstallDevice 를 여러 번 호출해야 합니다. 이 경우 애플리케이션은 DiInstallDevice 에 대한 호출에서 TRUENeedReboot 값이 반환되는지 여부를 기록해야 하며, 이 경우 DiInstallDevice에 대한 최종 호출이 반환된 후 사용자에게 시스템을 다시 시작하라는 메시지를 표시합니다.
- 애플리케이션은 시스템을 다시 시작하기 전에 DiInstallDevice를 호출하는 것 외에 필요한 작업을 수행해야 합니다. 시스템 다시 시작이 필요한 경우 애플리케이션은 필요한 작업을 완료한 다음 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
- 애플리케이션은 클래스 설치 관리자입니다. 이 경우 클래스 설치 관리자는 디바이스에 대한 SP_DEVINSTALL_PARAMS 구조의 Flags 멤버에서 DI_NEEDREBOOT 플래그를 설정해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 및 이후 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | newdev.h(Newdev.h 포함) |
라이브러리 | Newdev.lib |
DLL | Newdev.dll |