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
설치 및 사용자 인터페이스 작업을 제어하는 플래그입니다. 일부 플래그는 디바이스 설치 요청을 보내기 전에 설정할 수 있지만 일부 요청을 처리하는 동안 다른 플래그는 자동으로 설정됩니다. 플래그 다음 값의 조합일 수 있습니다.
플래그 값은 및 설치 관리자를
DI_CLASSINSTALLPARAMS
클래스 설치 매개 변수를 사용하도록 설정합니다. SetupDiSetClassInstallParams 호출자가 매개 변수를 지정하고 호출자가 NULL 매개 변수 포인터를 지정할 때 플래그를 지울 때 이 플래그를 설정합니다.
DI_COMPAT_FROM_CLASS
SetupDiBuildDriverInfoList INF 파일 대신 클래스 드라이버 목록에서 호환되는 드라이버의 디바이스 목록을 작성하도록 설정합니다.
DI_DRIVERPAGE_ADDED
설치 관리자가 시스템 제공 드라이버 속성 페이지를 대체하는 페이지를 제공하는 경우 클래스 설치 관리자 또는 공동 설치 관리자가 설정합니다. 이 플래그를 설정하면 운영 체제에 시스템 제공 드라이버 페이지가 표시되지 않습니다.
DI_DONOTCALLCONFIGMG
특정 디바이스 설치 함수(예: SetupDiInstallDevice
이 플래그가 설정된 경우 디바이스 설치 애플리케이션, 클래스 설치 관리자 및 공동 설치 관리자는 다음 함수를 호출하지 않아야 합니다.
CM_Reenumerate_DevNodeCM_Reenumerate_DevNode_ExCM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Setup_DevNodeCM_Setup_DevNode_ExCM_Set_HW_Prof_FlagsCM_Set_HW_Prof_Flags_ExCM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNodeCM_Disable_DevNode_Ex
DI_ENUMSINGLEINF
설치 관리자 및 기타
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
이 플래그는 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
드라이버는 INF 파일에서 ExcludeFromSelect
DI_FLAGSEX_ALWAYSWRITEIDS
설정되고 DI_NOWRITE_IDS 플래그가 명확한 경우 항상 devnode의 디바이스 속성에 하드웨어 및 호환 ID를 작성합니다. 이 플래그는 루트 열거형 디바이스에 대해서만 설정해야 합니다.
DI_FLAGSEX_APPENDDRIVERLIST
설정되면 SetupDiBuildDriverInfoList 기존 목록에 새 드라이버 목록을 추가합니다. 이 플래그는 여러 위치를 검색할 때 관련이 있습니다.
DI_FLAGSEX_DRIVERLIST_FROM_URL
설정된 경우 SP_DEVINSTALL_PARAMS 지정된 URL에서 검색된 INF에서 드라이버 목록을 작성합니다. DriverPath
현재 운영 체제는 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
DI_FLAGSEX_NO_DRVREG_MODIFY
디바이스의 하드웨어 및 소프트웨어(드라이버) 키에 대한 AddReg 및 DelReg 항목을 처리하지 마세요. 즉, DDInstall 및
DI_FLAGSEX_POWERPAGE_ADDED
설정된 경우 설치 관리자가 전원 속성 대화 상자에 대한 고유한 페이지를 추가했습니다. 운영 체제에 시스템 제공 전원 속성 페이지가 표시되지 않습니다. 이 플래그는 디바이스에서 전원 관리를 지원하는 경우에만 관련이 있습니다.
DI_FLAGSEX_PROPCHANGE_PENDING
설정된 경우 사용자가 하나 이상의 디바이스 속성 시트를 변경했습니다. 속성 페이지 공급자는 일반적으로 이 플래그를 설정합니다.
사용자가 디바이스 속성 시트를 닫으면 Device Manager는 DI_FLAGSEX_PROPCHANGE_PENDING 플래그를 확인합니다. 설정된 경우 Device Manager는 이 플래그를 지우고, DI_PROPERTIES_CHANGE 플래그를 설정하고, DIF_PROPERTYCHANGE 요청을 설치 관리자에게 보내 변경되었음을 알립니다.
DI_FLAGSEX_RECURSIVESEARCH
(Windows Vista 이상) 설정된 경우 setupDiBuildDriverInfoList를 DriverPath 값에 지정된 경로에서 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
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 포함) |