다음을 통해 공유


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를 표시할 수 없는 구성 요소(예: 서비스)에서 함수가 호출되는 경우에만 이 플래그를 설정합니다.

참고 이 플래그가 설정되고 UI 디스플레이가 시도되면 디바이스가 확정되지 않은 상태로 남을 수 있습니다.
 
InstallFlags 매개 변수는 일반적으로 0입니다.

[out, optional] bRebootRequired

다시 시작해야 하는지 여부와 해당 변수를 묻는 메시지를 표시해야 하는 사용자를 나타내는 BOOL 형식 변수에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.

포인터가 NULL인 경우 UpdateDriverForPlugAndPlayDevices는 필요한 경우 드라이버를 설치한 후 다시 시작하라는 메시지를 표시합니다. 포인터가 제공되면 시스템을 다시 시작해야 하는 경우 함수는 TRUE 인 BOOLEAN 값을 반환합니다. 그런 다음 다시 시작하라는 메시지를 표시하는 것은 호출자의 책임입니다.

자세한 내용은 다음 주의 섹션을 참조 하세요 .

반환 값

디바이스가 지정된 드라이버로 업그레이드된 경우 함수는 TRUE 를 반환합니다.

그렇지 않으면 FALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 오류 값은 다음 표에 포함되어 있습니다.

반환 코드 설명
ERROR_FILE_NOT_FOUND
FullInfPath에 대해 지정된 경로가 없습니다.
ERROR_IN_WOW64
호출 애플리케이션은 64비트 환경에서 실행하려고 시도하는 32비트 애플리케이션으로, 허용되지 않습니다.
ERROR_INVALID_FLAGS
InstallFlags에 지정된 값이 잘못되었습니다.
ERROR_NO_SUCH_DEVINST
HardwareId에 지정된 값이 시스템의 디바이스와 일치하지 않습니다. 즉, 디바이스가 연결되어 있지 않습니다.
ERROR_NO_MORE_ITEMS
함수는 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 설정해야 합니다.
애플리케이션이 UpdateDriverForPlugAndPlayDevices를 여러 번 호출해야 하는 경우 수신된 모든 TRUE 다시 시작 상태 값을 저장한 다음 최종 호출이 반환된 후 다시 시작하라는 메시지를 표시해야 합니다.

함수가 32비트 애플리케이션에서 ERROR_IN_WOW64 반환하는 경우 애플리케이션은 허용되지 않는 64비트 시스템에서 실행됩니다. 자세한 내용은 64비트 시스템에 디바이스 설치를 참조하세요.

요구 사항

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