다음을 통해 공유


SP_DEVINSTALL_PARAMS_A 구조체(setupapi.h)

SP_DEVINSTALL_PARAMS 구조에는 특정 디바이스 정보 요소와 연결되거나 디바이스 정보 집합과 전역적으로 연결된 디바이스 설치 매개 변수가 포함됩니다.

구문

typedef struct _SP_DEVINSTALL_PARAMS_A {
  DWORD             cbSize;
  DWORD             Flags;
  DWORD             FlagsEx;
  HWND              hwndParent;
  PSP_FILE_CALLBACK InstallMsgHandler;
  PVOID             InstallMsgHandlerContext;
  HSPFILEQ          FileQueue;
  ULONG_PTR         ClassInstallReserved;
  DWORD             Reserved;
  CHAR              DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;

멤버

cbSize

SP_DEVINSTALL_PARAMS 구조체의 크기(바이트)입니다.

Flags

설치 및 사용자 인터페이스 작업을 제어하는 플래그입니다. 일부 플래그는 디바이스 설치 요청을 보내기 전에 설정할 수 있지만 다른 플래그는 일부 요청을 처리하는 동안 자동으로 설정됩니다. 플래그 는 다음 값의 조합일 수 있습니다.

플래그 값은 디바이스 설치 애플리케이션 및 설치 관리자가 쓰기 가능, 읽기 전용(OS에서만 설정), 예약 및 사용되지 않는 그룹으로 나열됩니다. 첫 번째 그룹에는 쓰기 가능한 플래그가 나열됩니다.

DI_CLASSINSTALLPARAMS

클래스 설치 매개 변수를 사용하도록 설정합니다. SetupDiSetClassInstallParams는 호출자가 매개 변수를 지정하고 호출자가 NULL 매개 변수 포인터를 지정할 때 플래그를 지울 때 이 플래그를 설정합니다.

DI_COMPAT_FROM_CLASS

InF 파일 대신 클래스 드라이버 목록에서 호환되는 드라이버의 디바이스 목록을 빌드하도록 SetupDiBuildDriverInfoList 를 강제로 설정합니다.

DI_DRIVERPAGE_ADDED

설치 관리자가 시스템에서 제공하는 드라이버 속성 페이지를 대체하는 페이지를 제공하는 경우 클래스 설치 관리자 또는 공동 설치 관리자가 설정합니다. 이 플래그를 설정하면 운영 체제에 시스템 제공 드라이버 페이지가 표시되지 않습니다.

DI_DONOTCALLCONFIGMG

특정 디바이스 설치 함수(예: SetupDiInstallDevice)를 실행하는 동안 디바이스를 제거하거나 다시 열거하기 위해 구성 관리자를 호출하지 않아야 하는 경우 를 설정합니다.

이 플래그가 설정된 경우 디바이스 설치 애플리케이션, 클래스 설치 관리자 및 공동 설치 관리자는 다음 함수를 호출해서는 안 됩니다.

CM_Reenumerate_DevNodeCM_Reenumerate_DevNode_ExCM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTree_ExCM_Setup_DevNodeCM_Setup_DevNode_ExCM_Set_HW_Prof_Flags CM_Set_HW_Prof_Flags_ExCM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNodeCM_Disable_DevNode_Ex

DI_ENUMSINGLEINF

설치 관리자 및 기타 디바이스 설치 구성 요소가 SP_DEVINSTALL_PARAMS 지정된 INF 파일만 검색해야 하는지를 설정합니다. DriverPath. 이 플래그가 설정되면 DriverPath 에는 디렉터리의 경로 대신 단일 INF 파일의 경로가 포함됩니다.

DI_INF_IS_SORTED

디바이스 선택 페이지에서 드라이버를 사전순으로 정렬하는 대신 INF 파일에 표시되는 순서대로 나열해야 함을 나타내도록 설정합니다.

DI_INSTALLDISABLED

디바이스를 기본적으로 비활성화된 상태로 설치해야 하는지를 설정합니다. 인식하려면 Windows가 DIF_INSTALLDEVICE 요청에 대한 기본 처리기를 호출하기 전에 이 플래그를 설정해야 합니다.

DI_NEEDREBOOT

NT 기반 운영 체제의 경우 디바이스 설치 또는 디바이스 상태가 변경된 후 디바이스를 다시 시작해야 하는 경우 이 플래그가 설정됩니다. 설치 관리자가 다시 시작해야 하는 경우 클래스 설치 관리자 또는 공동 설치 관리자는 디바이스 설치 중에 언제든지 이 플래그를 설정할 수 있습니다.

DI_NEEDRESTART

DI_NEEDREBOOT 동일합니다.

DI_NOBROWSE

사용자가 OEM 디스크 경로를 선택할 때 검색을 사용하지 않도록 설정합니다. 디바이스 설치 애플리케이션은 설치 미디어 위치에서만 설치하도록 사용자를 제한하도록 이 플래그를 설정합니다.

DI_NODI_DEFAULTACTION

클래스 설치 관리자가 ERR_DI_DO_DEFAULT 반환하거나 클래스 설치 관리자가 없는 경우 SetupDiCallClassInstaller 가 기본 작업을 수행하지 않아야 하는 경우 를 설정합니다.

DI_NOFILECOPY

설치 프로그램 및 구성 요소(예: SetupDiInstallDevice)가 파일 복사를 건너뛰어야 하는 경우 를 설정합니다.

DI_NOVCP

새 복사 큐 만들기를 사용하지 않도록 설정합니다. SP_DEVINSTALL_PARAMS 호출자가 제공한 복사 큐를 사용합니다. FileQueue.

DI_NOWRITE_IDS

SetupDiInstallDevice가 INF 지정 하드웨어 ID호환 ID를 디바이스 노드(devnode)의 디바이스 속성에 쓰지 못하도록 하려면 를 설정합니다. 이 플래그는 루트 열거형 디바이스에 대해서만 설정해야 합니다.

이 플래그는 DI_FLAGSEX_ALWAYSWRITEIDS 플래그를 재정의합니다.

DI_PROPERTIES_CHANGE

설치 관리자의 사용자 인터페이스를 업데이트해야 하는 디바이스의 속성이 변경된 경우 장치 관리자 의해 설정됩니다.

DI_QUIETINSTALL

디바이스 설치 관리자 함수가 자동이어야 하며 가능한 경우 기본 선택을 사용해야 하는지를 설정합니다. 이 플래그가 설정된 경우 클래스 설치 관리자 및 공동 설치 관리자가 UI를 표시하지 않아야 합니다.

DI_RESOURCEPAGE_ADDED

설치 관리자가 시스템에서 제공하는 리소스 속성 페이지를 대체하는 페이지를 제공하는 경우 클래스 설치 관리자 또는 공동 설치 관리자가 설정합니다. 이 플래그가 설정되면 운영 체제에 시스템 제공 리소스 페이지가 표시되지 않습니다.

DI_SHOWOEM

OEM 디스크에 대한 지원을 허용하도록 설정합니다. 이 플래그가 설정되면 운영 체제는 디바이스 선택 페이지에 "디스크 있음" 단추를 표시합니다. 이 플래그는 기본적으로 시스템 제공 마법사에서 설정됩니다.

DI_USECI_SELECTSTRINGS

클래스 설치 관리자 또는 공동 설치 관리자가 SetupDiSelectDevice 중에 사용해야 하는 문자열을 제공하는 경우 를 설정합니다.

다음 플래그는 읽기 전용입니다(OS에서만 설정).

DI_DIDCLASS

SetupDiBuildDriverInfoList가 이 디바이스 클래스에 대한 드라이버 목록을 이미 빌드한 경우 를 설정합니다. 이 목록이 이미 빌드된 경우 모든 드라이버 정보가 포함되며 이 플래그는 항상 설정됩니다. SetupDiDestroyDriverInfoList 는 클래스에 대한 드라이버 목록을 삭제할 때 이 플래그를 지웁니다.

이 플래그는 읽기 전용입니다. 운영 체제만 이 플래그를 설정합니다.

DI_DIDCOMPAT

SetupDiBuildDriverInfoList가 이미 이 디바이스에 호환되는 드라이버 목록을 빌드한 경우 를 설정합니다. 이 목록이 이미 빌드된 경우 모든 드라이버 정보가 포함되며 이 플래그는 항상 설정됩니다. SetupDiDestroyDriverInfoList 는 호환되는 드라이버 목록을 삭제할 때 이 플래그를 지웁니다.

이 플래그는 전체로 설정된 디바이스 정보에 대한 매개 변수가 아니라 특정 디바이스 정보 요소와 연결된 디바이스 설치 매개 변수에서만 설정됩니다.

이 플래그는 읽기 전용입니다. 운영 체제만 이 플래그를 설정합니다.

DI_MULTMFGS

디바이스 설정 클래스의 드라이버 목록에 여러 제조업체에서 제공하는 드라이버가 포함된 경우 SetupDiBuildDriverInfoList에서 설정합니다.

이 플래그는 읽기 전용입니다. 운영 체제만 이 플래그를 설정합니다.

예약된 플래그는 다음과 같습니다.

DI_AUTOASSIGNRES

DI_DISABLED

DI_FORCECOPY

DI_GENERALPAGE_ADDED

DI_OVERRIDE_INFFLAGS

DI_SHOWALL

DI_SHOWCLASS

DI_SHOWCOMPAT

다음 플래그는 사용되지 않습니다.

DI_NOSELECTICONS

DI_PROPS_NOCHANGEUSAGE

FlagsEx

설치 및 사용자 인터페이스 작업을 제어하는 추가 플래그입니다. 일부 플래그는 디바이스 설치 관리자 함수를 호출하기 전에 설정할 수 있으며 다른 플래그는 일부 함수를 처리하는 동안 자동으로 설정됩니다. FlagsEx 는 다음 값의 조합일 수 있습니다.

플래그 값은 디바이스 설치 애플리케이션 및 설치 관리자가 쓰기 가능, 읽기 전용(OS에서만 설정), 예약 및 사용되지 않는 그룹으로 나열됩니다.

첫 번째 그룹에는 쓰기 가능한 플래그가 나열됩니다.

DI_FLAGSEX_ALLOWEXCLUDEDDRVS

설정된 경우 "선택에서 제외"로 표시된 드라이버를 포함합니다.

예를 들어 이 플래그가 설정된 경우 SetupDiSelectDevice 는 Select에서 제외 상태가 있는 드라이버를 표시하고 SetupDiBuildDriverInfoList 에는 요청된 드라이버 목록에 드라이버 선택에서 제외가 포함됩니다.

드라이버는 INF 파일에서 ExcludeFromSelect 로 표시되어 있거나 전체 설치 클래스가 클래스 설치 관리자 INF에서 NoInstallClass 또는 NoUseClass 로 표시된 디바이스의 드라이버인 경우 "선택에서 제외"입니다. PnP 디바이스용 드라이버는 일반적으로 "선택에서 제외"입니다. PnP 디바이스를 수동으로 설치하면 안 됩니다. PnP 디바이스에 대한 드라이버 파일 목록을 빌드하려면 SetupDiBuildDriverInfoList 호출자가 이 플래그를 설정해야 합니다.

DI_FLAGSEX_ALWAYSWRITEIDS

설정되고 DI_NOWRITE_IDS 플래그가 명확하면 항상 devnode에 대한 디바이스 속성에 하드웨어 및 호환 ID를 작성합니다. 이 플래그는 루트 열거형 디바이스에 대해서만 설정해야 합니다.

DI_FLAGSEX_APPENDDRIVERLIST

설정되면 SetupDiBuildDriverInfoList 가 새 드라이버 목록을 기존 목록에 추가합니다. 이 플래그는 여러 위치를 검색할 때 관련이 있습니다.

DI_FLAGSEX_DRIVERLIST_FROM_URL

설정된 경우 SP_DEVINSTALL_PARAMS 지정된 URL에서 검색된 INF에서 드라이버 목록을 빌드합니다. DriverPath. DriverPath가 빈 문자열인 경우 Windows 업데이트 웹 사이트를 사용합니다.

현재 운영 체제는 URL을 지원하지 않습니다. 이 플래그를 사용하여 SetupDiBuildDriverInfoList를 지시하여 Windows 업데이트 웹 사이트를 검색합니다.

DI_QUIETINSTALL 설정된 경우 이 플래그를 설정하지 마세요.

DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS

설정된 경우 드라이버 목록을 작성할 때 이전 인터넷 드라이버를 포함하지 마세요. 이 플래그는 디바이스에 대한 잠재적 드라이버 목록을 작성할 때마다 설정해야 합니다. 디바이스에 대해 현재 설치된 드라이버 목록을 가져오는 경우 이 플래그를 지울 수 있습니다.

DI_FLAGSEX_FILTERCLASSES

설정되면 SetupDiBuildClassInfoList가 클래스 포함 필터에 대해 검사. 즉, 클래스가 NoInstallClass로 표시된 경우 디바이스가 클래스 목록에 포함되지 않습니다.

DI_FLAGSEX_FILTERSIMILARDRIVERS

(Windows XP 이상). 설정된 경우 SetupDiBuildDriverInfoList 에는 클래스 드라이버 목록을 작성할 때 "유사한" 드라이버가 포함됩니다. "유사한" 드라이버는 INF 파일의 하드웨어 ID 또는 호환 ID 중 하나가 하드웨어 ID 또는 하드웨어의 호환 ID 중 하나와 부분적으로(또는 완전히) 일치하는 드라이버입니다.

DI_FLAGSEX_FINISHINSTALL_ACTION

(Windows Vista 이상). 자세한 내용은 수행할 Finish-Install 작업이 있는 것으로 디바이스 표시를 참조하세요.

DI_FLAGSEX_INET_DRIVER

설정된 경우 인터넷에서 드라이버를 가져옵니다. Windows는 인터넷에서 드라이버 파일을 다시 검색할 수 있다고 보장할 수 없으므로 디바이스의 INF를 사용하여 향후 디바이스를 설치하지 않습니다.

DI_FLAGSEX_INSTALLEDDRIVER

(Windows XP 이상). 설정되면 SetupDiBuildDriverInfoList 에는 클래스 드라이버 또는 디바이스 호환 드라이버 목록을 만들 때 현재 설치된 드라이버만 포함됩니다.

DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE

(Windows XP 이상). 설정된 경우 클래스 드라이버 목록을 만들 때 SetupDiBuildDriverInfoList 는 동일한 INF의 드라이버 목록에 있는 노드를 병합하지 않으며 드라이버 설명과 순위가 동일합니다.

DI_FLAGSEX_NO_DRVREG_MODIFY

디바이스의 하드웨어 및 소프트웨어(드라이버) 키에 대한 AddRegDelReg 항목을 처리하지 마세요. 즉, INF 파일 DDInstallDDInstallAddRegDelReg 항목입니다. HW 섹션.

DI_FLAGSEX_POWERPAGE_ADDED

설정하면 설치 관리자가 전원 속성 대화 상자에 대한 고유한 페이지를 추가했습니다. 운영 체제는 시스템에서 제공하는 전원 속성 페이지를 표시하지 않습니다. 이 플래그는 디바이스가 전원 관리를 지원하는 경우에만 관련이 있습니다.

DI_FLAGSEX_PROPCHANGE_PENDING

설정된 경우 사용자는 하나 이상의 디바이스 속성 시트를 변경했습니다. 속성 페이지 공급자는 일반적으로 이 플래그를 설정합니다.

사용자가 디바이스 속성 시트를 닫으면 장치 관리자 DI_FLAGSEX_PROPCHANGE_PENDING 플래그를 확인합니다. 설정된 경우 장치 관리자 이 플래그를 지우고, DI_PROPERTIES_CHANGE 플래그를 설정하고, DIF_PROPERTYCHANGE 요청을 설치 관리자에게 보내 변경되었음을 알립니다.

DI_FLAGSEX_RECURSIVESEARCH

(Windows Vista 이상). 설정되면 SetupDiBuildDriverInfoListDriverPath 값에 지정된 경로에서 INF를 검색하면 검색이 재귀적입니다.

DI_FLAGSEX_SEARCH_PUBLISHED_INFS

(Windows Vista 이상). 설정된 경우 SetupDiBuildDriverInfoList 를 사용하여 INF 경로 또는 검색 경로를 지정하지 않고 INF를 검색하면 드라이버 저장소로 가져온 INF로만 검색이 제한됩니다.

DI_FLAGSEX_SETFAILEDINSTALL

설치에 실패한 경우 를 설정합니다. 이 플래그가 설정되면 SetupDiInstallDevice 함수는 디바이스의 ConfigFlags 레지스트리 값에 FAILEDINSTALL 플래그만 설정합니다. DI_FLAGSEX_SETFAILEDINSTALL 설정된 경우 공동 설치 관리자는 DIF_INSTALLDEVICE 대한 응답으로 NO_ERROR 반환해야 하며, 클래스 설치 관리자는 NO_ERROR 또는 ERROR_DI_DO_DEFAULT 반환해야 합니다.

DI_FLAGSEX_USECLASSFORCOMPAT

호환되는 드라이버 목록을 작성할 때 디바이스의 설정 클래스에서 INF 파일을 필터링합니다. 디바이스의 설정 클래스가 알려진 경우 이 플래그를 설정하면 미리 컴파일되지 않은 INF 파일을 검색할 때 호환되는 드라이버 목록을 작성하는 데 필요한 시간이 줄어듭니다. DI_COMPAT_FROM_CLASS 설정된 경우 이 플래그는 무시됩니다.

다음 플래그는 읽기 전용입니다. 운영 체제에서만 다음 플래그를 설정합니다.

DI_FLAGSEX_CI_FAILED

클래스 설치 관리자가 로드하거나 시작하지 못한 경우 운영 체제에서 설정합니다. 이 플래그는 읽기 전용입니다.

DI_FLAGSEX_DIDCOMPATINFO

Windows는 디바이스와 호환되는 드라이버 노드 목록을 빌드했습니다. 이 플래그는 읽기 전용입니다.

DI_FLAGSEX_DIDINFOLIST

Windows는 지정된 설치 클래스의 INF 파일에 나열된 모든 드라이버를 포함하는 드라이버 노드 목록을 빌드했습니다. HDEVINFO 집합 또는 디바이스에 연결된 클래스가 없으므로 지정된 설정 클래스가 NULL 인 경우 목록에는 사용 가능한 모든 INF 파일의 모든 드라이버 노드가 포함됩니다. 이 플래그는 읽기 전용입니다.

DI_FLAGSEX_IN_SYSTEM_SETUP

설정된 경우 초기 시스템 설치 중에 설치가 발생합니다. 이 플래그는 읽기 전용입니다.

다음 플래그는 예약되어 있으므로 사용하지 않아야 합니다.

DI_FLAGSEX_ALTPLATFORM_DRVSEARCH

DI_FLAGSEX_BACKUPONREPLACE

DI_FLAGSEX_DEVICECHANGE

DI_FLAGSEX_OLDINF_IN_CLASSLIST

DI_FLAGSEX_PREINSTALLBACKUP

DI_FLAGSEX_RESTART_DEVICE_ONLY

DI_FLAGSEX_USEOLDINFSEARCH

다음 플래그는 사용되지 않습니다.

DI_FLAGSEX_AUTOSELECTRANK0

DI_FLAGSEX_NOUIONQUERYREMOVE

hwndParent

이 디바이스와 관련된 사용자 인터페이스 대화 상자를 소유할 창 핸들입니다.

InstallMsgHandler

파일을 복사하는 동안 이벤트를 처리하는 데 사용되는 콜백입니다. 예를 들어 설치 관리자는 콜백을 사용하여 파일 큐를 커밋할 때 특수 처리를 수행할 수 있습니다.

InstallMsgHandlerContext

InstallMsgHandler 콜백에서 사용되는 프라이빗 데이터입니다.

FileQueue

파일 작업을 큐에 대기해야 하지만 커밋되지 않는 호출자가 제공한 파일 큐에 대한 핸들입니다.

파일 큐를 디바이스 정보 집합(SetupDiSetDeviceInstallParams)과 연결하는 경우 디바이스 정보 집합을 삭제하기 전에 디바이스 정보 집합에서 큐를 연결 해제해야 합니다. 파일 큐를 연결 해제하지 못하면 Windows는 디바이스 정보 집합에 대한 참조 수를 감소시킬 수 없으며 메모리를 해제할 수 없습니다.

이 큐는 파일 작업을 큐에 추가해야 하지만 커밋되지 않음을 나타내는 DI_NOVCP 플래그가 설정된 경우에만 사용됩니다.

ClassInstallReserved

클래스 설치 관리자 데이터에 대한 포인터입니다. 공동 설치 관리자는 이 필드를 사용하지 않아야 합니다.

Reserved

예약되어 있습니다. 내부 전용입니다.

DriverPath[MAX_PATH]

이 경로는 SetupDiBuildDriverInfoList 함수에서 사용됩니다.

설명

참고

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

요구 사항

요구 사항
헤더 setupapi.h(Setupapi.h 포함)

추가 정보

SetupDiBuildClassInfoList

SetupDiBuildDriverInfoList

SetupDiCallClassInstaller

SetupDiGetDeviceInstallParams

SetupDiInstallDevice

SetupDiSelectDevice

SetupDiSetDeviceInstallParams