SetupDiInstallDevice 함수(setupapi.h)

SetupDiInstallDevice 함수는 DIF_INSTALLDEVICE 설치 요청에 대한 기본 처리기입니다.

구문

WINSETUPAPI BOOL SetupDiInstallDevice(
  [in]      HDEVINFO         DeviceInfoSet,
  [in, out] PSP_DEVINFO_DATA DeviceInfoData
);

매개 변수

[in] DeviceInfoSet

설치할 디바이스를 나타내는 디바이스 정보 요소가 포함된 로컬 시스템의 디바이스 정보 집합 에 대한 핸들입니다.

[in, out] DeviceInfoData

DeviceInfoSet에서 디바이스 정보 요소를 지정하는 SP_DEVINFO_DATA 구조체에 대한 포인터입니다. DeviceInfoData이기 때문에 IN-OUT 매개 변수입니다.DevInst는 반환 시 새 핸들 값으로 업데이트될 수 있습니다.

반환 값

함수가 성공하면 TRUE 를 반환합니다. 그렇지 않으면 FALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다.

설명

SetupDiInstallDevice 는 INF 파일에서 드라이버를 설치합니다. SetupAPI의 "드라이버" 정의는 실제로 "드라이버 노드"입니다. 따라서 이 함수가 드라이버를 설치하면 다음 목록에 항목도 설치됩니다.

  • 디바이스에 대한 서비스입니다.
  • 드라이버 파일입니다.
  • 디바이스별 공동 설치 관리자(있는 경우).
  • 속성 페이지 공급자(있는 경우).
  • 제어판 애플릿(있는 경우).
이 함수는 필요한 디바이스 인터페이스도 등록합니다.

성공적인 설치에는 다음 단계가 포함되지만 이에 국한되지는 않습니다.

  • 레지스트리에서 드라이버 키를 만들고 적절한 항목(예: InfPathProviderName)을 작성합니다.
  • 디바이스에 대한 INF DDInstall 섹션 을 찾아서 처리합니다. 섹션은 OS/아키텍처에 따라 다를 수 있습니다. DDInstall 섹션의 AddRegDelReg 항목은 디바이스의 소프트웨어 키를 대상으로 합니다. DDInstall을 찾아서 처리합니다. AddRegDelReg 항목이 디바이스의 하드웨어 키를 대상으로 하는 HW 섹션입니다. INF DDInstall.LogConfigOverride 섹션(있는 경우)을 찾아서 처리하여 디바이스에 대한 재정의 구성을 제공합니다. INF DDInstall.Services 섹션을 찾아서 처리하여 디바이스에 대한 서비스를 추가하고 더 이상 필요하지 않은 이전 서비스를 제거할 수 있습니다.
  • INF 파일을 시스템 INF 디렉터리에 복사합니다.
  • 디바이스 설치 매개 변수의 플래그 설정에 따라 다른 파일 작업을 수행할 수 있습니다.

    DI_NOFILECOPY 플래그와 DI_NOVCP 플래그가 명확하면 DDInstall 섹션에 지정된 모든 파일 작업을 수행합니다. DI_NOVCP 플래그가 설정된 경우 파일 작업을 큐에 대기합니다.

    DI_NOFILECOPY 플래그가 설정된 경우 파일을 복사하지 마세요. 예를 들어 이 디바이스 설치에 대해 DIF_INSTALLDEVICEFILES 작업이 이미 수행된 경우 이 플래그가 설정될 수 있습니다.

  • 디바이스에 대한 드라이버를 로드합니다. 여기에는 함수 드라이버 및 상위 또는 하위 필터 드라이버가 포함됩니다.
  • 드라이버의 AddDevice 루틴을 호출합니다.
  • IRP_MN_START_DEVICE IRP(I/O 요청 패킷)를 전송하여 디바이스를 시작합니다.
DI_NEEDRESTART, DI_NEEDREBOOT 또는 DI_DONOTCALLCONFIGMG 플래그가 SP_DEVINSTALL_PARAMS 구조에 설정된 경우 Windows에서 디바이스를 시작하지 않습니다.

클래스 설치 관리자는 DIF_INSTALLDEVICE 요청을 처리 할 때 ERROR_DI_DO_DEFAULT 반환하거나 이 함수를 호출해야 합니다. 이 함수는 디바이스 설치를 위해 많은 작업을 수행하며 해당 작업 목록은 향후 릴리스에서 확장될 수 있습니다. 클래스 설치 관리자가 이 함수를 호출하지 않고 디바이스 설치를 수행하는 경우 클래스 설치 관리자가 이후 버전의 운영 체제에서 제대로 작동하지 않을 수 있습니다.

Windows에서 디바이스에 대한 INF 파일을 찾을 수 없는 경우 null 드라이버를 설치하기 위해 DIF_INSTALLDEVICE 보냅니다. SetupDiInstallDevice 는 디바이스가 원시 모드 를 지원하거나 PnP가 아닌 디바이스( IoReportDetectedDevice에서 보고됨)인 경우에만 null 드라이버를 설치합니다. 자세한 내용은 DIF_INSTALLDEVICE 참조하세요.

DI_FLAGSEX_SETFAILEDINSTALL 플래그가 SP_DEVINSTALL_PARAMS 구조에 설정된 경우 SetupDiInstallDevice 는 디바이스의 ConfigFlags 레지스트리 값에 FAILEDINSTALL 플래그만 설정합니다.

참고클래스 설치 관리자SetupDiInstallDevice 를 호출해야 하며, SetupDiInstallDevice 가 기본 디바이스 설치 작업을 완료한 후에는 클래스 설치 관리자가 디바이스 설치 작업을 수행해야 하는 경우에만 호출해야 합니다. 이러한 상황에서는 설치 관리자가 DIF_INSTALLDEVICE 요청을 처리할 때 클래스 설치 관리자가 SetupDiInstallDevice 를 직접 호출해야 합니다. 기본 처리기를 호출하는 방법에 대한 자세한 내용은 기본 DIF 코드 처리기 호출을 참조하세요.
 
SetupDiInstallDevice의 호출자는 Administrators 그룹의 구성원이어야 합니다.

요구 사항

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

추가 정보

DIF_INSTALLDEVICE

SetupDiCallClassInstaller

SetupDiInstallDriverFiles