UpdateDriverForPlugAndPlayDevicesA 함수(newdev.h)
INF 파일과 하드웨어 ID가 지정된 경우 UpdateDriverForPlugAndPlayDevices 함수는 하드웨어 ID와 일치하는 디바이스에 대해 업데이트된 드라이버를 설치합니다.
구문
BOOL UpdateDriverForPlugAndPlayDevicesA(
[in, optional] HWND hwndParent,
[in] LPCSTR HardwareId,
[in] LPCSTR FullInfPath,
[in] DWORD InstallFlags,
[out, optional] PBOOL bRebootRequired
);
매개 변수
[in, optional] hwndParent
디바이스 설치와 관련된 모든 UI에 사용할 최상위 창에 대한 핸들입니다.
[in] HardwareId
컴퓨터의 기존 디바이스와 일치하도록 하드웨어 식별자를 제공하는 NULL로 끝나는 문자열에 대한 포인터입니다. NULL로 종료된 하드웨어 식별자의 최대 길이는 MAX_DEVICE_ID_LEN. 하드웨어 식별자에 대한 자세한 내용은 디바이스 식별 문자열을 참조하세요.
[in] FullInfPath
INF 파일의 전체 경로 파일 이름을 제공하는 NULL로 끝나는 문자열에 대한 포인터입니다. 파일은 %SystemRoot%\inf와 같은 시스템 위치가 아닌 배포 미디어 또는 공급업체에서 만든 디렉터리에 있어야 합니다. UpdateDriverForPlugAndPlayDevices는 설치에 성공하면 드라이버 파일을 적절한 시스템 위치에 복사합니다.
[in] InstallFlags
OR을 사용하여 다음 비트 플래그를 0개 이상 결합하여 만든 호출자 제공 값입니다.
INSTALLFLAG_FORCE
이 플래그가 설정되고 함수가 HardwareId 값과 일치하는 디바이스를 찾으면 함수는 컴퓨터에 더 나은 드라이버가 이미 있는지 여부에 관계없이 디바이스에 대한 새 드라이버를 설치합니다.
INSTALLFLAG_READONLY
이 플래그를 설정하면 함수는 설치 파일을 복사, 이름 바꾸기 또는 삭제하지 않습니다. 이 플래그의 사용은 "포함된" 운영 체제와 같이 파일 액세스가 제한되거나 불가능한 환경으로 제한되어야 합니다.
INSTALLFLAG_NONINTERACTIVE
이 플래그를 설정하면 UI를 표시하려는 시도가 감지되면 함수가 FALSE 를 반환합니다. UI를 표시할 수 없는 구성 요소(예: 서비스)에서 함수가 호출되는 경우에만 이 플래그를 설정합니다.
[out, optional] bRebootRequired
다시 시작해야 하는지 여부와 해당 변수를 묻는 메시지를 표시해야 하는 사용자를 나타내는 BOOL 형식 변수에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.
포인터가 NULL인 경우 UpdateDriverForPlugAndPlayDevices는 필요한 경우 드라이버를 설치한 후 다시 시작하라는 메시지를 표시합니다. 포인터가 제공되면 시스템을 다시 시작해야 하는 경우 함수는 TRUE 인 BOOLEAN 값을 반환합니다. 그런 다음 다시 시작하라는 메시지를 표시하는 것은 호출자의 책임입니다.
자세한 내용은 다음 주의 섹션을 참조 하세요 .
반환 값
디바이스가 지정된 드라이버로 업그레이드된 경우 함수는 TRUE 를 반환합니다.
그렇지 않으면 FALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 오류 값은 다음 표에 포함되어 있습니다.
반환 코드 | 설명 |
---|---|
|
FullInfPath에 대해 지정된 경로가 없습니다. |
|
호출 애플리케이션은 64비트 환경에서 실행하려고 시도하는 32비트 애플리케이션으로, 허용되지 않습니다. |
|
InstallFlags에 지정된 값이 잘못되었습니다. |
|
HardwareId에 지정된 값이 시스템의 디바이스와 일치하지 않습니다. 즉, 디바이스가 연결되어 있지 않습니다. |
|
함수는 HardwareId 값에 대한 일치 항목을 찾았지만 지정된 드라이버가 현재 드라이버보다 더 일치하지 않으며 호출자가 INSTALLFLAG_FORCE 플래그를 지정하지 않았습니다. |
설명
UpdateDriverForPlugAndPlayDevices는 시스템의 디바이스를 검사하고 지정된 HardwareId 값과 일치하는 모든 디바이스에 대해 FullInfPath로 지정된 드라이버를 설치하려고 시도합니다.
기본 동작은 지정된 드라이버가 현재 설치된 드라이버보다 더 일치하고 지정된 드라이버가 %SystemRoot%\inf의 드라이버보다 더 일치하는 경우에만 설치하는 것입니다. 자세한 내용은 Windows에서 드라이버를 선택하는 방법을 참조하세요.
UpdateDriverForPlugAndPlayDevices 를 사용하여 지정된 HardwareId 값을 가진 디바이스가 연결되어 있는지 여부를 확인할 수도 있습니다. 자세한 내용은 디바이스 설치 애플리케이션 작성을 참조하세요.
UpdateDriverForPlugAndPlayDevices 는 지정된 디바이스, 디바이스의 모든 자식 및 디바이스에 대한 제거 관계의 재귀적으로 일부인 다른 모든 디바이스에 IRP_MN_QUERY_REMOVE_DEVICE 요청을 보냅니 다. 이러한 디바이스가 쿼리 제거 요청에 실패하면 UpdateDriverForPlugAndPlayDevices는 디바이스에 대한 SP_DEVINSTALL_PARAMS 구조의 Flags 멤버에 DI_NEEDREBOOT 플래그를 설정합니다. 제거 관계에 대한 자세한 내용은 IRP_MN_QUERY_DEVICE_RELATIONS 요청을 참조하세요.
일반적으로 디바이스 설치 애플리케이션은bRebootRequired에 대해 NULL을 제공해야 합니다. 따라서 필요한 경우 시스템이 다시 시작을 시작합니다. 애플리케이션은 다음 경우에만 포인터 값을 지정 해야 합니다.
- 설치를 완료하려면 애플리케이션에서 UpdateDriverForPlugAndPlayDevices 를 여러 번 호출해야 합니다.
- 애플리케이션은 다시 시작(필요한 경우)이 발생하기 전에 다른 작업을 수행해야 합니다.
- 애플리케이션은 클래스 설치 관리자이며, 다시 시작해야 하는 경우 SP_DEVINSTALL_PARAMS DI_NEEDREBOOT 설정해야 합니다.
함수가 32비트 애플리케이션에서 ERROR_IN_WOW64 반환하는 경우 애플리케이션은 허용되지 않는 64비트 시스템에서 실행됩니다. 자세한 내용은 64비트 시스템에 디바이스 설치를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Microsoft Windows 2000 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | newdev.h(Newdev.h 포함) |
라이브러리 | Newdev.lib |