PageRenderTime 27ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/include/setupapi.h

https://github.com/aragaer/wine
C Header | 1292 lines | 1089 code | 152 blank | 51 comment | 0 complexity | 676b1a0be45e50d73cbb5bea9b0554d2 MD5 | raw file
  1. /*
  2. * Copyright (C) 2000 James Hatheway
  3. * Copyright (C) 2007 Juan Lang
  4. *
  5. * This library is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation; either
  8. * version 2.1 of the License, or (at your option) any later version.
  9. *
  10. * This library is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * Lesser General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public
  16. * License along with this library; if not, write to the Free Software
  17. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  18. */
  19. #ifndef _INC_SETUPAPI
  20. #define _INC_SETUPAPI
  21. #include <commctrl.h>
  22. #ifdef _WIN64
  23. #include <pshpack8.h>
  24. #else
  25. #include <pshpack1.h>
  26. #endif
  27. /* setupapi doesn't use the normal convention, it adds an underscore before A/W */
  28. #ifdef WINE_NO_UNICODE_MACROS
  29. # define DECL_WINELIB_SETUPAPI_TYPE_AW(type) /* nothing */
  30. #else
  31. # define DECL_WINELIB_SETUPAPI_TYPE_AW(type) typedef WINELIB_NAME_AW(type##_) type;
  32. #endif
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /* Define type for handle to a loaded inf file */
  37. typedef PVOID HINF;
  38. /* Define type for handle to a device information set */
  39. typedef PVOID HDEVINFO;
  40. /* Define type for handle to a setup log file */
  41. typedef PVOID HSPFILELOG;
  42. /* Define type for setup file queue */
  43. typedef PVOID HSPFILEQ;
  44. typedef PVOID HDSKSPC;
  45. /* inf structure. */
  46. typedef struct _INFCONTEXT
  47. {
  48. PVOID Inf;
  49. PVOID CurrentInf;
  50. UINT Section;
  51. UINT Line;
  52. } INFCONTEXT, *PINFCONTEXT;
  53. typedef struct _SP_ALTPLATFORM_INFO_V2
  54. {
  55. DWORD cbSize;
  56. DWORD Platform;
  57. DWORD MajorVersion;
  58. DWORD MinorVersion;
  59. WORD ProcessorArchitecture;
  60. union
  61. {
  62. WORD Reserved;
  63. WORD Flags;
  64. } DUMMYUNIONNAME;
  65. DWORD FirstValidatedMajorVersion;
  66. DWORD FirstValidatedMinorVersion;
  67. } SP_ALTPLATFORM_INFO_V2, *PSP_ALTPLATFORM_INFO_V2;
  68. #define SP_ALTPLATFORM_FLAGS_VERSION_RANGE 0x0001
  69. typedef struct _SP_ALTPLATFORM_INFO_V1
  70. {
  71. DWORD cbSize;
  72. DWORD Platform;
  73. DWORD MajorVersion;
  74. DWORD MinorVersion;
  75. WORD ProcessorArchitecture;
  76. WORD Reserved;
  77. } SP_ALTPLATFORM_INFO_V1, *PSP_ALTPLATFORM_INFO_V1;
  78. typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
  79. typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
  80. typedef struct _SP_FILE_COPY_PARAMS_A
  81. {
  82. DWORD cbSize;
  83. HSPFILEQ QueueHandle;
  84. PCSTR SourceRootPath;
  85. PCSTR SourcePath;
  86. PCSTR SourceFilename;
  87. PCSTR SourceDescription;
  88. PCSTR SourceTagfile;
  89. PCSTR TargetDirectory;
  90. PCSTR TargetFilename;
  91. DWORD CopyStyle;
  92. HINF LayoutInf;
  93. PCSTR SecurityDescriptor;
  94. } SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
  95. typedef struct _SP_FILE_COPY_PARAMS_W
  96. {
  97. DWORD cbSize;
  98. HSPFILEQ QueueHandle;
  99. PCWSTR SourceRootPath;
  100. PCWSTR SourcePath;
  101. PCWSTR SourceFilename;
  102. PCWSTR SourceDescription;
  103. PCWSTR SourceTagfile;
  104. PCWSTR TargetDirectory;
  105. PCWSTR TargetFilename;
  106. DWORD CopyStyle;
  107. HINF LayoutInf;
  108. PCWSTR SecurityDescriptor;
  109. } SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
  110. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_FILE_COPY_PARAMS)
  111. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_COPY_PARAMS)
  112. typedef struct _SP_REGISTER_CONTROL_STATUSA
  113. {
  114. DWORD cbSize;
  115. PCSTR FileName;
  116. DWORD Win32Error;
  117. DWORD FailureCode;
  118. } SP_REGISTER_CONTROL_STATUSA, *PSP_REGISTER_CONTROL_STATUSA;
  119. typedef struct _SP_REGISTER_CONTROL_STATUSW
  120. {
  121. DWORD cbSize;
  122. PCWSTR FileName;
  123. DWORD Win32Error;
  124. DWORD FailureCode;
  125. } SP_REGISTER_CONTROL_STATUSW, *PSP_REGISTER_CONTROL_STATUSW;
  126. DECL_WINELIB_TYPE_AW(SP_REGISTER_CONTROL_STATUS)
  127. DECL_WINELIB_TYPE_AW(PSP_REGISTER_CONTROL_STATUS)
  128. #define SPREG_SUCCESS 0x00000000
  129. #define SPREG_LOADLIBRARY 0x00000001
  130. #define SPREG_GETPROCADDR 0x00000002
  131. #define SPREG_REGSVR 0x00000003
  132. #define SPREG_DLLINSTALL 0x00000004
  133. #define SPREG_TIMEOUT 0x00000005
  134. #define SPREG_UNKNOWN 0xffffffff
  135. typedef UINT (CALLBACK *PSP_FILE_CALLBACK_A)( PVOID Context, UINT Notification,
  136. UINT_PTR Param1, UINT_PTR Param2 );
  137. typedef UINT (CALLBACK *PSP_FILE_CALLBACK_W)( PVOID Context, UINT Notification,
  138. UINT_PTR Param1, UINT_PTR Param2 );
  139. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_CALLBACK)
  140. #define LINE_LEN 256
  141. #define MAX_INF_STRING_LENGTH 4096
  142. #define MAX_TITLE_LEN 60
  143. #define MAX_INSTRUCTION_LEN 256
  144. #define MAX_LABEL_LEN 30
  145. #define MAX_SERVICE_NAME_LEN 256
  146. #define MAX_SUBTITLE_LEN 256
  147. #define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
  148. typedef UINT DI_FUNCTION;
  149. typedef struct _SP_CLASSINSTALL_HEADER
  150. {
  151. DWORD cbSize;
  152. DI_FUNCTION InstallFunction;
  153. } SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
  154. typedef struct _SP_ENABLECLASS_PARAMS
  155. {
  156. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  157. GUID ClassGuid;
  158. DWORD EnableMessage;
  159. } SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
  160. /* SP_ENABLECLASS_PARAMS EnableMessage values */
  161. #define ENABLECLASS_QUERY 0
  162. #define ENABLECLASS_SUCCESS 1
  163. #define ENABLECLASS_FAILURE 2
  164. typedef struct _SP_PROPCHANGE_PARAMS
  165. {
  166. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  167. DWORD StateChange;
  168. DWORD Scope;
  169. DWORD HwProfile;
  170. } SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
  171. /* SP_PROPCHANGE_PARAMS StateChange values */
  172. #define DICS_ENABLE 0x00000001
  173. #define DICS_DISABLE 0x00000002
  174. #define DICS_PROPCHANGE 0x00000003
  175. #define DICS_START 0x00000004
  176. #define DICS_STOP 0x00000005
  177. /* SP_PROPCHANGE_PARAMS Scope values */
  178. #define DICS_FLAG_GLOBAL 0x00000001
  179. #define DICS_FLAG_CONFIGSPECIFIC 0x00000002
  180. #define DICS_FLAG_CONFIGGENERAL 0x00000004
  181. typedef struct _SP_DEVINSTALL_PARAMS_A
  182. {
  183. DWORD cbSize;
  184. DWORD Flags;
  185. DWORD FlagsEx;
  186. HWND hwndParent;
  187. PSP_FILE_CALLBACK_A InstallMsgHandler;
  188. PVOID InstallMsgHandlerContext;
  189. HSPFILEQ FileQueue;
  190. ULONG_PTR ClassInstallReserved;
  191. DWORD Reserved;
  192. CHAR DriverPath[MAX_PATH];
  193. } SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
  194. typedef struct _SP_DEVINSTALL_PARAMS_W
  195. {
  196. DWORD cbSize;
  197. DWORD Flags;
  198. DWORD FlagsEx;
  199. HWND hwndParent;
  200. PSP_FILE_CALLBACK_W InstallMsgHandler;
  201. PVOID InstallMsgHandlerContext;
  202. HSPFILEQ FileQueue;
  203. ULONG_PTR ClassInstallReserved;
  204. DWORD Reserved;
  205. WCHAR DriverPath[MAX_PATH];
  206. } SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
  207. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINSTALL_PARAMS)
  208. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINSTALL_PARAMS)
  209. /* SP_DEVINSTALL_PARAMS Flags values */
  210. #define DI_SHOWOEM 0x00000001
  211. #define DI_SHOWCOMPAT 0x00000002
  212. #define DI_SHOWCLASS 0x00000004
  213. #define DI_SHOWALL 0x00000007
  214. #define DI_NOVCP 0x00000008
  215. #define DI_DIDCOMPAT 0x00000010
  216. #define DI_DIDCLASS 0x00000020
  217. #define DI_AUTOASSIGNRES 0x00000040
  218. #define DI_NEEDRESTART 0x00000080
  219. #define DI_NEEDREBOOT 0x00000100
  220. #define DI_NOBROWSE 0x00000200
  221. #define DI_MULTMFGS 0x00000400
  222. #define DI_DISABLED 0x00000800
  223. #define DI_GENERALPAGE_ADDED 0x00001000
  224. #define DI_RESOURCEPAGE_ADDED 0x00002000
  225. #define DI_PROPERTIES_CHANGE 0x00004000
  226. #define DI_INF_IS_SORTED 0x00080000
  227. #define DI_ENUMSINGLEINF 0x00010000
  228. #define DI_DONOTCALLCONFIGMG 0x00020000
  229. #define DI_INSTALLDISABLED 0x00040000
  230. #define DI_COMPAT_FROM_CLASS 0x00080000
  231. #define DI_CLASSINSTALLPARAMS 0x00100000
  232. #define DI_NODI_DEFAULTACTION 0x00200000
  233. #define DI_QUIETINSTALL 0x00800000
  234. #define DI_NOFILECOPY 0x01000000
  235. #define DI_FORCECOPY 0x02000000
  236. #define DI_DRIVERPAGE_ADDED 0x04000000
  237. #define DI_USECI_SELECTSTRINGS 0x08000000
  238. #define DI_OVERRIDE_INFFLAGS 0x10000000
  239. #define DI_PROPS_NOCHANGEUSAGE 0x20000000
  240. #define DI_NOSELECTICONS 0x40000000
  241. #define DI_NOWRITE_IDS 0x80000000
  242. /* SP_DEVINSTALL_PARAMS FlagsEx values */
  243. #define DI_FLAGSEX_USEOLDINFSEARCH 0x00000001
  244. #define DI_FLAGSEX_RESERVED2 0x00000002
  245. #define DI_FLAGSEX_CI_FAILED 0x00000004
  246. #define DI_FLAGSEX_FINISHINSTALL_ACTION 0x00000008
  247. #define DI_FLAGSEX_DIDINFOLIST 0x00000010
  248. #define DI_FLAGSEX_DIDCOMPATINFO 0x00000020
  249. #define DI_FLAGSEX_FILTERCLASSES 0x00000040
  250. #define DI_FLAGSEX_SETFAILEDINSTALL 0x00000080
  251. #define DI_FLAGSEX_DEVICECHANGE 0x00000100
  252. #define DI_FLAGSEX_ALWAYSWRITEIDS 0x00000200
  253. #define DI_FLAGSEX_PROPCHANGE_PENDING 0x00000400
  254. #define DI_FLAGSEX_ALLOWEXCLUDEDDRVS 0x00000800
  255. #define DI_FLAGSEX_NOUIONQUERYREMOVE 0x00001000
  256. #define DI_FLAGSEX_USECLASSFORCOMPAT 0x00002000
  257. #define DI_FLAGSEX_RESERVED3 0x00004000
  258. #define DI_FLAGSEX_NO_DRVREG_MODIFY 0x00008000
  259. #define DI_FLAGSEX_IN_SYSTEM_SETUP 0x00010000
  260. #define DI_FLAGSEX_INET_DRIVER 0x00020000
  261. #define DI_FLAGSEX_APPENDDRIVERLIST 0x00040000
  262. #define DI_FLAGSEX_PREINSTALLBACKUP 0x00080000
  263. #define DI_FLAGSEX_BACKUPONREPLACE 0x00100000
  264. #define DI_FLAGSEX_DRIVERLIST_FROM_URL 0x00200000
  265. #define DI_FLAGSEX_RESERVED1 0x00400000
  266. #define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS 0x00800000
  267. #define DI_FLAGSEX_POWERPAGE_ADDED 0x01000000
  268. #define DI_FLAGSEX_FILTERSIMILARDRIVERS 0x02000000
  269. #define DI_FLAGSEX_INSTALLEDDRIVER 0x04000000
  270. #define DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE 0x08000000
  271. #define DI_FLAGSEX_ALTPLATFORM_DRVSEARCH 0x10000000
  272. #define DI_FLAGSEX_RESTART_DEVICE_ONLY 0x20000000
  273. #define DI_FLAGSEX_RECURSIVESEARCH 0x40000000
  274. #define DI_FLAGSEX_SEARCH_PUBLISHED_INFS 0x80000000
  275. typedef struct _SP_REMOVEDEVICE_PARAMS
  276. {
  277. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  278. DWORD Scope;
  279. DWORD HwProfile;
  280. } SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
  281. /* SP_REMOVEDEVICE_PARAMS Scope values */
  282. #define DI_REMOVEDEVICE_GLOBAL 0x00000001
  283. #define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
  284. typedef struct _SP_UNREMOVEDEVICE_PARAMS
  285. {
  286. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  287. DWORD Scope;
  288. DWORD HwProfile;
  289. } SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS;
  290. /* SP_UNREMOVEDEVICE_PARAMS Scope values */
  291. #define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002
  292. typedef struct _SP_SELECTDEVICE_PARAMS_A
  293. {
  294. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  295. CHAR Title[MAX_TITLE_LEN];
  296. CHAR Instructions[MAX_INSTRUCTION_LEN];
  297. CHAR ListLabel[MAX_LABEL_LEN];
  298. CHAR SubTitle[MAX_SUBTITLE_LEN];
  299. BYTE Reserved[2];
  300. } SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
  301. typedef struct _SP_SELECTDEVICE_PARAMS_W
  302. {
  303. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  304. WCHAR Title[MAX_TITLE_LEN];
  305. WCHAR Instructions[MAX_INSTRUCTION_LEN];
  306. WCHAR ListLabel[MAX_LABEL_LEN];
  307. WCHAR SubTitle[MAX_SUBTITLE_LEN];
  308. } SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
  309. typedef BOOL (CALLBACK *PDETECT_PROGRESS_NOTIFY)(PVOID ProgressNotifyParam,
  310. DWORD DetectComplete);
  311. typedef struct _SP_DETECTDEVICE_PARAMS
  312. {
  313. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  314. PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
  315. PVOID ProgressNotifyParam;
  316. } SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS;
  317. #define MAX_INSTALLWIZARD_DYNAPAGES 20
  318. typedef struct _SP_INSTALLWIZARD_DATA
  319. {
  320. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  321. DWORD Flags;
  322. HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
  323. DWORD NumDynamicPages;
  324. DWORD DynamicPageFlags;
  325. DWORD PrivateFlags;
  326. LPARAM PrivateData;
  327. HWND hwndWizardDlg;
  328. } SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
  329. /* SP_INSTALLWIZARD_DATA Flags values */
  330. #define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001
  331. #define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
  332. #define NDW_INSTALLFLAG_NEEDRESTART DI_NEEDRESTART
  333. #define NDW_INSTALLFLAG_NEEDREBOOT DI_NEEDREBOOT
  334. #define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200
  335. #define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400
  336. #define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
  337. #define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000
  338. #define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000
  339. #define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000
  340. #define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000
  341. #define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000
  342. #define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000
  343. #define NDW_INSTALLFLAG_USERCANCEL 0x00040000
  344. #define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000
  345. /* SP_INSTALLWIZARD_DATA DynamicPageFlags values */
  346. #define DYNAWIZ_FLAG_PAGESADDED 0x00000001
  347. #define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002
  348. #define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004
  349. #define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
  350. /* Resource IDs */
  351. #define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000
  352. #define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000
  353. #define IDD_DYNAWIZ_FIRSTPAGE 10000
  354. #define IDD_DYNAWIZ_SELECT_PREVPAGE 10001
  355. #define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002
  356. #define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003
  357. #define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004
  358. #define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
  359. #define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
  360. #define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008
  361. #define IDD_DYNAWIZ_SELECTDEV_PAGE 10009
  362. #define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010
  363. #define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
  364. #define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012
  365. #define IDI_RESOURCEFIRST 159
  366. #define IDI_RESOURCE IDI_RESOURCEFIRST
  367. #define IDI_RESOURCELAST 161
  368. #define IDI_RESOURCEOVERLAYFIRST 161
  369. #define IDI_RESOURCEOVERLAYLAST 161
  370. #define IDI_CLASSICON_OVERLAYFIRST 500
  371. #define IDI_CLASSICON_OVERLAYLAST 502
  372. #define IDI_PROBLEM_OVL 500
  373. #define IDI_DISABLED_OVL 501
  374. #define IDI_FORCED_OVL 502
  375. typedef struct _SP_NEWDEVICEWIZARD_DATA
  376. {
  377. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  378. DWORD Flags;
  379. HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
  380. DWORD NumDynamicPages;
  381. HWND hwndWizardDlg;
  382. } SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA;
  383. typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA;
  384. typedef PSP_NEWDEVICEWIZARD_DATA PSP_ADDPROPERTYPAGE_DATA;
  385. typedef struct _SP_TROUBLESHOOTER_PARAMS_A
  386. {
  387. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  388. CHAR ChmFile[MAX_PATH];
  389. CHAR HtmlTroubleShooter[MAX_PATH];
  390. } SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A;
  391. typedef struct _SP_TROUBLESHOOTER_PARAMS_W
  392. {
  393. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  394. WCHAR ChmFile[MAX_PATH];
  395. WCHAR HtmlTroubleShooter[MAX_PATH];
  396. } SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W;
  397. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_TROUBLESHOOTER_PARAMS)
  398. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_TROUBLESHOOTER_PARAMS)
  399. typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A
  400. {
  401. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  402. CHAR PowerMessageWake[LINE_LEN * 2];
  403. } SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A;
  404. typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W
  405. {
  406. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  407. WCHAR PowerMessageWake[LINE_LEN * 2];
  408. } SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W;
  409. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_POWERMESSAGEWAKE_PARAMS)
  410. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_POWERMESSAGEWAKE_PARAMS)
  411. typedef struct _SP_DRVINFO_DATA_V1_A
  412. {
  413. DWORD cbSize;
  414. DWORD DriverType;
  415. ULONG_PTR Reserved;
  416. CHAR Description[LINE_LEN];
  417. CHAR MfgName[LINE_LEN];
  418. CHAR ProviderName[LINE_LEN];
  419. } SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A;
  420. typedef struct _SP_DRVINFO_DATA_V1_W
  421. {
  422. DWORD cbSize;
  423. DWORD DriverType;
  424. ULONG_PTR Reserved;
  425. WCHAR Description[LINE_LEN];
  426. WCHAR MfgName[LINE_LEN];
  427. WCHAR ProviderName[LINE_LEN];
  428. } SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W;
  429. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA_V1)
  430. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA_V1)
  431. typedef struct _SP_DRVINFO_DATA_V2_A
  432. {
  433. DWORD cbSize;
  434. DWORD DriverType;
  435. ULONG_PTR Reserved;
  436. CHAR Description[LINE_LEN];
  437. CHAR MfgName[LINE_LEN];
  438. CHAR ProviderName[LINE_LEN];
  439. FILETIME DriverDate;
  440. DWORDLONG DriverVersion;
  441. } SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A;
  442. typedef struct _SP_DRVINFO_DATA_V2_W
  443. {
  444. DWORD cbSize;
  445. DWORD DriverType;
  446. ULONG_PTR Reserved;
  447. WCHAR Description[LINE_LEN];
  448. WCHAR MfgName[LINE_LEN];
  449. WCHAR ProviderName[LINE_LEN];
  450. FILETIME DriverDate;
  451. DWORDLONG DriverVersion;
  452. } SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W;
  453. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA_V2)
  454. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA_V2)
  455. typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A;
  456. typedef PSP_DRVINFO_DATA_V2_A PSP_DRVINFO_DATA_A;
  457. typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W;
  458. typedef PSP_DRVINFO_DATA_V2_W PSP_DRVINFO_DATA_W;
  459. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA)
  460. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA)
  461. typedef struct _SP_DRVINFO_DETAIL_DATA_A
  462. {
  463. DWORD cbSize;
  464. FILETIME InfDate;
  465. DWORD CompatIDsOffset;
  466. DWORD CompatIDsLength;
  467. ULONG_PTR Reserved;
  468. CHAR SectionName[LINE_LEN];
  469. CHAR InfFileName[MAX_PATH];
  470. CHAR DrvDescription[LINE_LEN];
  471. CHAR HardwareID[ANYSIZE_ARRAY];
  472. } SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
  473. typedef struct _SP_DRVINFO_DETAIL_DATA_W
  474. {
  475. DWORD cbSize;
  476. FILETIME InfDate;
  477. DWORD CompatIDsOffset;
  478. DWORD CompatIDsLength;
  479. ULONG_PTR Reserved;
  480. WCHAR SectionName[LINE_LEN];
  481. WCHAR InfFileName[MAX_PATH];
  482. WCHAR DrvDescription[LINE_LEN];
  483. WCHAR HardwareID[ANYSIZE_ARRAY];
  484. } SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
  485. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DETAIL_DATA)
  486. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DETAIL_DATA)
  487. typedef struct _SP_DRVINSTALL_PARAMS
  488. {
  489. DWORD cbSize;
  490. DWORD Rank;
  491. DWORD Flags;
  492. DWORD_PTR PrivateData;
  493. DWORD Reserved;
  494. } SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
  495. /* SP_DRVINSTALL_PARAMS Flags values */
  496. #define DNF_DUPDESC 0x00000001
  497. #define DNF_OLDDRIVER 0x00000002
  498. #define DNF_EXCLUDEFROMLIST 0x00000004
  499. #define DNF_NODRIVER 0x00000008
  500. #define DNF_LEGACYINF 0x00000010
  501. #define DNF_CLASS_DRIVER 0x00000020
  502. #define DNF_COMPATIBLE_DRIVER 0x00000040
  503. #define DNF_INET_DRIVER 0x00000080
  504. #define DNF_UNUSED1 0x00000100
  505. #define DNF_INDEXED_DRIVER 0x00000200
  506. #define DNF_OLD_INET_DRIVER 0x00000400
  507. #define DNF_BAD_DRIVER 0x00000800
  508. #define DNF_DUPPROVIDER 0x00001000
  509. #define DNF_INF_IS_SIGNED 0x00002000
  510. #define DNF_OEM_F6_INF 0x00004000
  511. #define DNF_DUPDRIVERVER 0x00008000
  512. #define DNF_BASIC_DRIVER 0x00010000
  513. #define DNF_AUTHENTICODE_SIGNED 0x00020000
  514. #define DNF_INSTALLEDDRIVER 0x00040000
  515. #define DNF_ALWAYSEXCLUDEFROMLIST 0x00080000
  516. /* SP_DRVINSTALL_PARAMS Rank values */
  517. #define DRIVER_HARDWAREID_RANK 0x00000fff
  518. #define DRIVER_COMPATID_RANK 0x00003fff
  519. #define DRIVER_UNTRUSTED_RANK 0x00008000
  520. #define DRIVER_UNTRUSTED_HARDWAREID_RANK 0x00008fff
  521. #define DRIVER_UNTRUSTED_COMPATID_RANK 0x0000bfff
  522. #define DRIVER_W9X_SUSPECT_RANK 0x0000c000
  523. #define DRIVER_W9X_SUSPECT_HARDWAREID_RANK 0x0000cfff
  524. /* Device Information structure (references a device instance that is a member
  525. of a device information set) */
  526. typedef struct _SP_DEVINFO_DATA
  527. {
  528. DWORD cbSize;
  529. GUID ClassGuid;
  530. DWORD DevInst; /* DEVINST handle */
  531. ULONG_PTR Reserved;
  532. } SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
  533. typedef struct _SP_DEVICE_INTERFACE_DATA
  534. {
  535. DWORD cbSize;
  536. GUID InterfaceClassGuid;
  537. DWORD Flags;
  538. ULONG_PTR Reserved;
  539. } SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
  540. #define SPINT_ACTIVE 0x00000001
  541. #define SPINT_DEFAULT 0x00000002
  542. #define SPINT_REMOVED 0x00000004
  543. typedef SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA;
  544. typedef PSP_DEVICE_INTERFACE_DATA PSP_INTERFACE_DEVICE_DATA;
  545. #define SPID_ACTIVE SPINT_ACTIVE
  546. #define SPID_DEFAULT SPINT_DEFAULT
  547. #define SPID_REMOVED SPINT_REMOVED
  548. typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A
  549. {
  550. DWORD cbSize;
  551. CHAR DevicePath[ANYSIZE_ARRAY];
  552. } SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
  553. typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W
  554. {
  555. DWORD cbSize;
  556. WCHAR DevicePath[ANYSIZE_ARRAY];
  557. } SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
  558. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVICE_INTERFACE_DETAIL_DATA)
  559. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVICE_INTERFACE_DETAIL_DATA)
  560. typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
  561. DWORD cbSize;
  562. GUID ClassGuid;
  563. HANDLE RemoteMachineHandle;
  564. CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
  565. } SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
  566. typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
  567. DWORD cbSize;
  568. GUID ClassGuid;
  569. HANDLE RemoteMachineHandle;
  570. WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
  571. } SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
  572. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINFO_LIST_DETAIL_DATA)
  573. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINFO_LIST_DETAIL_DATA)
  574. typedef DWORD (CALLBACK *PSP_DETSIG_CMPPROC)(HDEVINFO, PSP_DEVINFO_DATA,
  575. PSP_DEVINFO_DATA, PVOID);
  576. typedef struct _COINSTALLER_CONTEXT_DATA
  577. {
  578. BOOL PostProcessing;
  579. DWORD InstallResult;
  580. PVOID PrivateData;
  581. } COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
  582. typedef struct _SP_CLASSIMAGELIST_DATA
  583. {
  584. DWORD cbSize;
  585. HIMAGELIST ImageList;
  586. ULONG_PTR Reserved;
  587. } SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
  588. typedef struct _SP_PROPSHEETPAGE_REQUEST
  589. {
  590. DWORD cbSize;
  591. DWORD PageRequested;
  592. HDEVINFO DeviceInfoSet;
  593. PSP_DEVINFO_DATA DeviceInfoData;
  594. } SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
  595. /* SP_PROPSHEETPAGE_REQUEST PageRequested values */
  596. #define SPPSR_SELECT_DEVICE_RESOURCES 1
  597. #define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2
  598. #define SPPSR_ENUM_ADV_DEVICE_PROPERTIES 3
  599. typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_A
  600. {
  601. DWORD cbSize;
  602. CHAR FullInfPath[MAX_PATH];
  603. INT FilenameOffset;
  604. } SP_BACKUP_QUEUE_PARAMS_V1_A, *PSP_BACKUP_QUEUE_PARAMS_V1_A;
  605. typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_W
  606. {
  607. DWORD cbSize;
  608. WCHAR FullInfPath[MAX_PATH];
  609. INT FilenameOffset;
  610. } SP_BACKUP_QUEUE_PARAMS_V1_W, *PSP_BACKUP_QUEUE_PARAMS_V1_W;
  611. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS_V1)
  612. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS_V1)
  613. typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_A
  614. {
  615. DWORD cbSize;
  616. CHAR FullInfPath[MAX_PATH];
  617. INT FilenameOffset;
  618. CHAR ReinstallInstance[MAX_PATH];
  619. } SP_BACKUP_QUEUE_PARAMS_V2_A, *PSP_BACKUP_QUEUE_PARAMS_V2_A;
  620. typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_W
  621. {
  622. DWORD cbSize;
  623. WCHAR FullInfPath[MAX_PATH];
  624. INT FilenameOffset;
  625. WCHAR ReinstallInstance[MAX_PATH];
  626. } SP_BACKUP_QUEUE_PARAMS_V2_W, *PSP_BACKUP_QUEUE_PARAMS_V2_W;
  627. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS_V2)
  628. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS_V2)
  629. typedef SP_BACKUP_QUEUE_PARAMS_V2_A SP_BACKUP_QUEUE_PARAMS_A;
  630. typedef PSP_BACKUP_QUEUE_PARAMS_V2_A PSP_BACKUP_QUEUE_PARAMS_A;
  631. typedef SP_BACKUP_QUEUE_PARAMS_V2_W SP_BACKUP_QUEUE_PARAMS_W;
  632. typedef PSP_BACKUP_QUEUE_PARAMS_V2_W PSP_BACKUP_QUEUE_PARAMS_W;
  633. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS)
  634. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS)
  635. typedef struct _FILE_IN_CABINET_INFO_A {
  636. LPCSTR NameInCabinet;
  637. DWORD FileSize;
  638. DWORD Win32Error;
  639. WORD DosDate;
  640. WORD DosTime;
  641. WORD DosAttribs;
  642. CHAR FullTargetName[MAX_PATH];
  643. } FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
  644. typedef struct _FILE_IN_CABINET_INFO_W {
  645. LPCWSTR NameInCabinet;
  646. DWORD FileSize;
  647. DWORD Win32Error;
  648. WORD DosDate;
  649. WORD DosTime;
  650. WORD DosAttribs;
  651. WCHAR FullTargetName[MAX_PATH];
  652. } FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
  653. DECL_WINELIB_SETUPAPI_TYPE_AW(FILE_IN_CABINET_INFO)
  654. DECL_WINELIB_SETUPAPI_TYPE_AW(PFILE_IN_CABINET_INFO)
  655. typedef struct _CABINET_INFO_A {
  656. PCSTR CabinetPath;
  657. PCSTR CabinetFile;
  658. PCSTR DiskName;
  659. USHORT SetId;
  660. USHORT CabinetNumber;
  661. } CABINET_INFO_A, *PCABINET_INFO_A;
  662. typedef struct _CABINET_INFO_W {
  663. PCWSTR CabinetPath;
  664. PCWSTR CabinetFile;
  665. PCWSTR DiskName;
  666. USHORT SetId;
  667. USHORT CabinetNumber;
  668. } CABINET_INFO_W, *PCABINET_INFO_W;
  669. DECL_WINELIB_SETUPAPI_TYPE_AW(CABINET_INFO)
  670. DECL_WINELIB_SETUPAPI_TYPE_AW(PCABINET_INFO)
  671. typedef struct _SP_INF_INFORMATION {
  672. DWORD InfStyle;
  673. DWORD InfCount;
  674. BYTE VersionData[ANYSIZE_ARRAY];
  675. } SP_INF_INFORMATION, *PSP_INF_INFORMATION;
  676. #define INF_STYLE_NONE 0x00
  677. #define INF_STYLE_OLDNT 0x01
  678. #define INF_STYLE_WIN4 0x02
  679. #define INF_STYLE_CACHE_ENABLE 0x10
  680. #define INF_STYLE_CACHE_DISABLE 0x20
  681. #define FILEOP_COPY 0
  682. #define FILEOP_RENAME 1
  683. #define FILEOP_DELETE 2
  684. #define FILEOP_BACKUP 3
  685. #define FILEOP_ABORT 0
  686. #define FILEOP_DOIT 1
  687. #define FILEOP_SKIP 2
  688. #define FILEOP_RETRY FILEOP_DOIT
  689. #define FILEOP_NEWPATH 4
  690. #define COPYFLG_WARN_IF_SKIP 0x00000001
  691. #define COPYFLG_NOSKIP 0x00000002
  692. #define COPYFLG_NOVERSIONCHECK 0x00000004
  693. #define COPYFLG_FORCE_FILE_IN_USE 0x00000008
  694. #define COPYFLG_NO_OVERWRITE 0x00000010
  695. #define COPYFLG_NO_VERSION_DIALOG 0x00000020
  696. #define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040
  697. #define COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE 0x00000100
  698. #define COPYFLG_REPLACEONLY 0x00000400
  699. #define COPYFLG_NODECOMP 0x00000800
  700. #define COPYFLG_REPLACE_BOOT_FILE 0x00001000
  701. #define COPYFLG_NOPRUNE 0x00002000
  702. #define COPYFLG_IN_USE_TRY_RENAME 0x00004000
  703. #define DELFLG_IN_USE 0x00000001
  704. #define DELFLG_IN_USE1 0x00010000
  705. typedef struct _FILEPATHS_A
  706. {
  707. PCSTR Target;
  708. PCSTR Source;
  709. UINT Win32Error;
  710. DWORD Flags;
  711. } FILEPATHS_A, *PFILEPATHS_A;
  712. typedef struct _FILEPATHS_W
  713. {
  714. PCWSTR Target;
  715. PCWSTR Source;
  716. UINT Win32Error;
  717. DWORD Flags;
  718. } FILEPATHS_W, *PFILEPATHS_W;
  719. DECL_WINELIB_SETUPAPI_TYPE_AW(FILEPATHS)
  720. DECL_WINELIB_SETUPAPI_TYPE_AW(PFILEPATHS)
  721. typedef struct _FILEPATHS_SIGNERINFO_A
  722. {
  723. PCSTR Target;
  724. PCSTR Source;
  725. UINT Win32Error;
  726. DWORD Flags;
  727. PCSTR DigitalSigner;
  728. PCSTR Version;
  729. PCSTR CatalogFile;
  730. } FILEPATHS_SIGNERINFO_A, *PFILEPATHS_SIGNERINFO_A;
  731. typedef struct _FILEPATHS_SIGNERINFO_W
  732. {
  733. PCWSTR Target;
  734. PCWSTR Source;
  735. UINT Win32Error;
  736. DWORD Flags;
  737. PCWSTR DigitalSigner;
  738. PCWSTR Version;
  739. PCWSTR CatalogFile;
  740. } FILEPATHS_SIGNERINFO_W, *PFILEPATHS_SIGNERINFO_W;
  741. DECL_WINELIB_SETUPAPI_TYPE_AW(FILEPATHS_SIGNERINFO)
  742. typedef struct _SOURCE_MEDIA_A
  743. {
  744. PCSTR Reserved;
  745. PCSTR Tagfile;
  746. PCSTR Description;
  747. PCSTR SourcePath;
  748. PCSTR SourceFile;
  749. DWORD Flags;
  750. } SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
  751. typedef struct _SOURCE_MEDIA_W
  752. {
  753. PCWSTR Reserved;
  754. PCWSTR Tagfile;
  755. PCWSTR Description;
  756. PCWSTR SourcePath;
  757. PCWSTR SourceFile;
  758. DWORD Flags;
  759. } SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
  760. DECL_WINELIB_SETUPAPI_TYPE_AW(SOURCE_MEDIA)
  761. typedef struct _SP_ORIGINAL_FILE_INFO_A
  762. {
  763. DWORD cbSize;
  764. CHAR OriginalInfName[MAX_PATH];
  765. CHAR OriginalCatalogName[MAX_PATH];
  766. } SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
  767. typedef struct _SP_ORIGINAL_FILE_INFO_W
  768. {
  769. DWORD cbSize;
  770. WCHAR OriginalInfName[MAX_PATH];
  771. WCHAR OriginalCatalogName[MAX_PATH];
  772. } SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
  773. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_ORIGINAL_FILE_INFO)
  774. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_ORIGINAL_FILE_INFO)
  775. typedef struct _SP_INF_SIGNER_INFO_A
  776. {
  777. DWORD cbSize;
  778. CHAR CatalogFile[MAX_PATH];
  779. CHAR DigitalSigner[MAX_PATH];
  780. CHAR DigitalSignerVersion[MAX_PATH];
  781. } SP_INF_SIGNER_INFO_A, *PSP_INF_SIGNER_INFO_A;
  782. typedef struct _SP_INF_SIGNER_INFO_W
  783. {
  784. DWORD cbSize;
  785. WCHAR CatalogFile[MAX_PATH];
  786. WCHAR DigitalSigner[MAX_PATH];
  787. WCHAR DigitalSignerVersion[MAX_PATH];
  788. } SP_INF_SIGNER_INFO_W, *PSP_INF_SIGNER_INFO_W;
  789. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_INF_SIGNER_INFO)
  790. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_INF_SIGNER_INFO)
  791. #define SPFILENOTIFY_STARTQUEUE 0x0001
  792. #define SPFILENOTIFY_ENDQUEUE 0x0002
  793. #define SPFILENOTIFY_STARTSUBQUEUE 0x0003
  794. #define SPFILENOTIFY_ENDSUBQUEUE 0x0004
  795. #define SPFILENOTIFY_STARTDELETE 0x0005
  796. #define SPFILENOTIFY_ENDDELETE 0x0006
  797. #define SPFILENOTIFY_DELETEERROR 0x0007
  798. #define SPFILENOTIFY_STARTRENAME 0x0008
  799. #define SPFILENOTIFY_ENDRENAME 0x0009
  800. #define SPFILENOTIFY_RENAMEERROR 0x000a
  801. #define SPFILENOTIFY_STARTCOPY 0x000b
  802. #define SPFILENOTIFY_ENDCOPY 0x000c
  803. #define SPFILENOTIFY_COPYERROR 0x000d
  804. #define SPFILENOTIFY_NEEDMEDIA 0x000e
  805. #define SPFILENOTIFY_QUEUESCAN 0x000f
  806. #define SPFILENOTIFY_CABINETINFO 0x0010
  807. #define SPFILENOTIFY_FILEINCABINET 0x0011
  808. #define SPFILENOTIFY_NEEDNEWCABINET 0x0012
  809. #define SPFILENOTIFY_FILEEXTRACTED 0x0013
  810. #define SPFILENOTIFY_FILEOPDELAYED 0x0014
  811. #define SPFILENOTIFY_STARTBACKUP 0x0015
  812. #define SPFILENOTIFY_BACKUPERROR 0x0016
  813. #define SPFILENOTIFY_ENDBACKUP 0x0017
  814. #define SPFILENOTIFY_QUEUESCAN_EX 0x0018
  815. #define SPFILENOTIFY_STARTREGISTRATION 0x0019
  816. #define SPFILENOTIFY_ENDREGISTRATION 0x0020
  817. #define SPFILENOTIFY_QUEUESCAN_SIGNERINFO 0x0040
  818. #define SPFILENOTIFY_LANGMISMATCH 0x00010000
  819. #define SPFILENOTIFY_TARGETEXISTS 0x00020000
  820. #define SPFILENOTIFY_TARGETNEWER 0x00040000
  821. #define SPINST_LOGCONFIG 0x00000001
  822. #define SPINST_INIFILES 0x00000002
  823. #define SPINST_REGISTRY 0x00000004
  824. #define SPINST_INI2REG 0x00000008
  825. #define SPINST_FILES 0x00000010
  826. #define SPINST_BITREG 0x00000020
  827. #define SPINST_REGSVR 0x00000040
  828. #define SPINST_UNREGSVR 0x00000080
  829. #define SPINST_PROFILEITEMS 0x00000100
  830. #define SPINST_COPYINF 0x00000200
  831. #define SPINST_ALL 0x000003ff
  832. #define SPINST_SINGLESECTION 0x00010000
  833. #define SPINST_LOGCONFIG_IS_FORCED 0x00020000
  834. #define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000
  835. #define SPINST_REGISTERCALLBACKAWARE 0x00080000
  836. #define SPSVCINST_TAGTOFRONT 0x00000001
  837. #define SPSVCINST_ASSOCSERVICE 0x00000002
  838. #define SPSVCINST_DELETEEVENTLOGENTRY 0x00000004
  839. #define SPSVCINST_NOCLOBBER_DISPLAYNAME 0x00000008
  840. #define SPSVCINST_NOCLOBBER_STARTTYPE 0x00000010
  841. #define SPSVCINST_NOCLOBBER_ERRORCONTROL 0x00000020
  842. #define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
  843. #define SPSVCINST_NOCLOBBER_DEPENDENCIES 0x00000080
  844. #define SPSVCINST_NOCLOBBER_DESCRIPTION 0x00000100
  845. #define SPSVCINST_STOPSERVICE 0x00000200
  846. #define SPSVCINST_CLOBBER_SECURITY 0x00000400
  847. #define SPSVCINST_STARTSERVICE 0x00000800
  848. #define SP_COPY_DELETESOURCE 0x00000001
  849. #define SP_COPY_REPLACEONLY 0x00000002
  850. #define SP_COPY_NEWER 0x00000004
  851. #define SP_COPY_NEWER_OR_SAME SP_COPY_NEWER
  852. #define SP_COPY_NOOVERWRITE 0x00000008
  853. #define SP_COPY_NODECOMP 0x00000010
  854. #define SP_COPY_LANGUAGEAWARE 0x00000020
  855. #define SP_COPY_SOURCE_ABSOLUTE 0x00000040
  856. #define SP_COPY_SOURCEPATH_ABSOLUTE 0x00000080
  857. #define SP_COPY_IN_USE_NEEDS_REBOOT 0x00000100
  858. #define SP_COPY_FORCE_IN_USE 0x00000200
  859. #define SP_COPY_NOSKIP 0x00000400
  860. #define SP_FLAG_CABINETCONTINUATION 0x00000800
  861. #define SP_COPY_FORCE_NOOVERWRITE 0x00001000
  862. #define SP_COPY_FORCE_NEWER 0x00002000
  863. #define SP_COPY_WARNIFSKIP 0x00004000
  864. #define SP_COPY_NOBROWSE 0x00008000
  865. #define SP_COPY_NEWER_ONLY 0x00010000
  866. #define SP_COPY_SOURCE_SIS_MASTER 0x00020000
  867. #define SP_COPY_OEMINF_CATALOG_ONLY 0x00040000
  868. #define SP_COPY_REPLACE_BOOT_FILE 0x00080000
  869. #define SP_COPY_NOPRUNE 0x00100000
  870. #define SP_COPY_OEM_F6_INF 0x00200000
  871. #define SP_BACKUP_BACKUPPASS 0x00000001
  872. #define SP_BACKUP_DEMANDPASS 0x00000002
  873. #define SP_BACKUP_SPECIAL 0x00000004
  874. #define SP_BACKUP_BOOTFILE 0x00000008
  875. #define SPOST_NONE 0
  876. #define SPOST_PATH 1
  877. #define SPOST_URL 2
  878. #define SPOST_MAX 3
  879. #define SPQ_SCAN_FILE_PRESENCE 0x00000001
  880. #define SPQ_SCAN_FILE_VALIDITY 0x00000002
  881. #define SPQ_SCAN_USE_CALLBACK 0x00000004
  882. #define SPQ_SCAN_USE_CALLBACKEX 0x00000008
  883. #define SPQ_SCAN_INFORM_USER 0x00000010
  884. #define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020
  885. #define SPQ_SCAN_USE_CALLBACK_SIGNERINFO 0x00000040
  886. #define SPQ_SCAN_PRUNE_DELREN 0x00000080
  887. #define SPQ_DELAYED_COPY 0x00000001
  888. #define SPQ_FLAG_BACKUP_AWARE 0x00000001
  889. #define SPQ_FLAG_ABORT_IF_UNSIGNED 0x00000002
  890. #define SPQ_FLAG_FILES_MODIFIED 0x00000004
  891. #define SPQ_FLAG_VALID 0x00000007
  892. #define FLG_ADDREG_DELREG_BIT 0x00008000
  893. #define FLG_ADDREG_BINVALUETYPE 0x00000001
  894. #define FLG_ADDREG_NOCLOBBER 0x00000002
  895. #define FLG_ADDREG_DELVAL 0x00000004
  896. #define FLG_ADDREG_APPEND 0x00000008
  897. #define FLG_ADDREG_KEYONLY 0x00000010
  898. #define FLG_ADDREG_OVERWRITEONLY 0x00000020
  899. #define FLG_ADDREG_64BITKEY 0x00001000
  900. #define FLG_ADDREG_KEYONLY_COMMON 0x00002000
  901. #define FLG_ADDREG_32BITKEY 0x00004000
  902. #define FLG_ADDREG_TYPE_SZ 0x00000000
  903. #define FLG_ADDREG_TYPE_MULTI_SZ 0x00010000
  904. #define FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000
  905. #define FLG_ADDREG_TYPE_BINARY (0x00000000 | FLG_ADDREG_BINVALUETYPE)
  906. #define FLG_ADDREG_TYPE_DWORD (0x00010000 | FLG_ADDREG_BINVALUETYPE)
  907. #define FLG_ADDREG_TYPE_NONE (0x00020000 | FLG_ADDREG_BINVALUETYPE)
  908. #define FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
  909. #define FLG_DELREG_VALUE (0x00000000)
  910. #define FLG_DELREG_TYPE_MASK FLG_ADDREG_TYPE_MASK
  911. #define FLG_DELREG_TYPE_SZ FLG_ADDREG_TYPE_SZ
  912. #define FLG_DELREG_TYPE_MULTI_SZ FLG_ADDREG_TYPE_MULTI_SZ
  913. #define FLG_DELREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_EXPAND_SZ
  914. #define FLG_DELREG_TYPE_BINARY FLG_ADDREG_TYPE_BINARY
  915. #define FLG_DELREG_TYPE_DWORD FLG_ADDREG_TYPE_DWORD
  916. #define FLG_DELREG_TYPE_NONE FLG_ADDREG_TYPE_NONE
  917. #define FLG_DELREG_64BITKEY FLG_ADDREG_64BITKEY
  918. #define FLG_DELREG_KEYONLY_COMMON FLG_ADDREG_KEYONLY_COMMON
  919. #define FLG_DELREG_32BITKEY FLG_ADDREG_32BITKEY
  920. #define FLG_DELREG_OPERATION_MASK (0x000000FE)
  921. #define FLG_DELREG_MULTI_SZ_DELSTRING (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
  922. #define FLG_REGSVR_DLLREGISTER 0x00000001
  923. #define FLG_REGSVR_DLLINSTALL 0x00000002
  924. #define FLG_PROFITEM_CURRENTUSER 0x00000001
  925. #define FLG_PROFITEM_DELETE 0x00000002
  926. #define FLG_PROFITEM_GROUP 0x00000004
  927. #define FLG_PROFITEM_CSIDL 0x00000008
  928. #define DI_NOVCP 0x00000008
  929. /* Class installer function codes */
  930. #define DIF_SELECTDEVICE 0x01
  931. #define DIF_INSTALLDEVICE 0x02
  932. #define DIF_ASSIGNRESOURCES 0x03
  933. #define DIF_PROPERTIES 0x04
  934. #define DIF_REMOVE 0x05
  935. #define DIF_FIRSTTIMESETUP 0x06
  936. #define DIF_FOUNDDEVICE 0x07
  937. #define DIF_SELECTCLASSDRIVERS 0x08
  938. #define DIF_VALIDATECLASSDRIVERS 0x09
  939. #define DIF_INSTALLCLASSDRIVERS 0x0a
  940. #define DIF_CALCDISKSPACE 0x0b
  941. #define DIF_DESTROYPRIVATEDATA 0x0c
  942. #define DIF_VALIDATEDRIVER 0x0d
  943. #define DIF_MOVEDEVICE 0x0e
  944. #define DIF_DETECT 0x0f
  945. #define DIF_INSTALLWIZARD 0x10
  946. #define DIF_DESTROYWIZARDDATA 0x11
  947. #define DIF_PROPERTYCHANGE 0x12
  948. #define DIF_ENABLECLASS 0x13
  949. #define DIF_DETECTVERIFY 0x14
  950. #define DIF_INSTALLDEVICEFILES 0x15
  951. #define DIF_UNREMOVE 0x16
  952. #define DIF_SELECTBESTCOMPATDRV 0x17
  953. #define DIF_ALLOW_INSTALL 0x18
  954. #define DIF_REGISTERDEVICE 0x19
  955. #define DIF_NEWDEVICEWIZARD_PRESELECT 0x1a
  956. #define DIF_NEWDEVICEWIZARD_SELECT 0x1b
  957. #define DIF_NEWDEVICEWIZARD_PREANALYZE 0x1c
  958. #define DIF_NEWDEVICEWIZARD_POSTANALYZE 0x1d
  959. #define DIF_NEWDEVICEWIZARD_FINISHINSTALL 0x1e
  960. #define DIF_UNUSED1 0x1f
  961. #define DIF_INSTALLINTERFACES 0x20
  962. #define DIF_DETECTCANCEL 0x21
  963. #define DIF_REGISTER_COINSTALLERS 0x22
  964. #define DIF_ADDPROPERTYPAGE_ADVANCED 0x23
  965. #define DIF_ADDPROPERTYPAGE_BASIC 0x24
  966. #define DIF_RESERVED1 0x25
  967. #define DIF_TROUBLESHOOTER 0x26
  968. #define DIF_POWERMESSAGEWAKE 0x27
  969. #define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 0x28
  970. #define DIF_UPDATEDRIVER_UI 0x29
  971. #define DIF_RESERVED2 0x30
  972. /* Directory ids */
  973. #define DIRID_ABSOLUTE (-1)
  974. #define DIRID_ABSOLUTE_16BIT 0xffff
  975. #define DIRID_NULL 0
  976. #define DIRID_SRCPATH 1
  977. #define DIRID_WINDOWS 10
  978. #define DIRID_SYSTEM 11
  979. #define DIRID_DRIVERS 12
  980. #define DIRID_IOSUBSYS DIRID_DRIVERS
  981. #define DIRID_INF 17
  982. #define DIRID_HELP 18
  983. #define DIRID_FONTS 20
  984. #define DIRID_VIEWERS 21
  985. #define DIRID_COLOR 23
  986. #define DIRID_APPS 24
  987. #define DIRID_SHARED 25
  988. #define DIRID_BOOT 30
  989. #define DIRID_SYSTEM16 50
  990. #define DIRID_SPOOL 51
  991. #define DIRID_SPOOLDRIVERS 52
  992. #define DIRID_USERPROFILE 53
  993. #define DIRID_LOADER 54
  994. #define DIRID_PRINTPROCESSOR 55
  995. #define DIRID_DEFAULT DIRID_SYSTEM
  996. #define DIRID_COMMON_STARTMENU 16406
  997. #define DIRID_COMMON_PROGRAMS 16407
  998. #define DIRID_COMMON_STARTUP 16408
  999. #define DIRID_COMMON_DESKTOPDIRECTORY 16409
  1000. #define DIRID_COMMON_FAVORITES 16415
  1001. #define DIRID_COMMON_APPDATA 16419
  1002. #define DIRID_PROGRAM_FILES 16422
  1003. #define DIRID_SYSTEM_X86 16425
  1004. #define DIRID_PROGRAM_FILES_X86 16426
  1005. #define DIRID_PROGRAM_FILES_COMMON 16427
  1006. #define DIRID_PROGRAM_FILES_COMMONX86 16428
  1007. #define DIRID_COMMON_TEMPLATES 16429
  1008. #define DIRID_COMMON_DOCUMENTS 16430
  1009. #define DIRID_USER 0x8000
  1010. /* Error code */
  1011. #define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
  1012. #define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
  1013. #define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
  1014. #define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
  1015. #define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
  1016. #define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
  1017. #define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
  1018. #define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
  1019. #define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
  1020. #define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
  1021. #define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
  1022. #define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
  1023. #define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
  1024. #define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
  1025. #define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
  1026. #define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
  1027. #define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
  1028. #define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
  1029. #define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
  1030. #define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
  1031. #define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
  1032. #define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
  1033. #define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
  1034. #define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
  1035. #define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
  1036. #define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
  1037. #define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
  1038. #define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
  1039. #define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
  1040. #define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
  1041. #define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
  1042. #define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
  1043. #define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
  1044. #define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
  1045. #define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
  1046. #define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
  1047. #define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
  1048. #define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
  1049. #define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
  1050. #define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
  1051. #define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
  1052. #define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
  1053. #define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
  1054. #define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
  1055. #define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
  1056. #define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
  1057. #define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
  1058. #define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
  1059. #define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
  1060. #define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
  1061. #define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
  1062. #define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
  1063. #define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
  1064. #define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
  1065. #define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
  1066. #define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
  1067. #define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
  1068. #define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
  1069. #define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
  1070. #define ERROR_INVALID_TARGET (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
  1071. #define ERROR_DRIVER_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
  1072. #define ERROR_IN_WOW64 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
  1073. #define ERROR_SET_SYSTEM_RESTORE_POINT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
  1074. #define ERROR_INCORRECTLY_COPIED_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x237)
  1075. #define ERROR_SCE_DISABLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
  1076. #define ERROR_WRONG_INF_TYPE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24A)
  1077. #define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
  1078. #define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
  1079. #define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
  1080. #define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
  1081. #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
  1082. /* flags for SetupDiGetClassDevs */
  1083. #define DIGCF_DEFAULT 0x00000001
  1084. #define DIGCF_PRESENT 0x00000002
  1085. #define DIGCF_ALLCLASSES 0x00000004
  1086. #define DIGCF_PROFILE 0x00000008
  1087. #define DIGCF_DEVICEINTERFACE 0x00000010
  1088. /* Flags for SetupDiOpenClassRegKeyEx */
  1089. #define DIOCR_INSTALLER 0x00000001
  1090. #define DIOCR_INTERFACE 0x00000002
  1091. /* Flags for SetupDiBuildClassInfoList(Ex) */
  1092. #define DIBCI_NOINSTALLCLASS 0x00000001
  1093. #define DIBCI_NODISPLAYCLASS 0x00000002
  1094. /* Flags for SetupDiCreateDeviceInfo */
  1095. #define DICD_GENERATE_ID 0x00000001
  1096. #define DICD_INHERIT_CLASSDRVS 0x00000002
  1097. /* Flags for SetupDiOpenDeviceInfo */
  1098. #define DIOD_INHERIT_CLASSDRVS 0x00000002
  1099. #define DIOD_CANCEL_REMOVE 0x00000004
  1100. /* Flags for SetupDiOpenDeviceInterface */
  1101. #define DIODI_NO_ADD 0x00000001
  1102. /* Flags for SetupDiRegisterDeviceInfo */
  1103. #define SPRDI_FIND_DUPS 0x00000001
  1104. /* Values for SetupDi*Info* DriverType */
  1105. #define SPDIT_NODRIVER 0x00000000
  1106. #define SPDIT_CLASSDRIVER 0x00000001
  1107. #define SPDIT_COMPATDRIVER 0x00000002
  1108. /* setup device registry property codes */
  1109. #define SPDRP_DEVICEDESC 0x00000000
  1110. #define SPDRP_HARDWAREID 0x00000001
  1111. #define SPDRP_COMPATIBLEIDS 0x00000002
  1112. #define SPDRP_UNUSED0 0x00000003
  1113. #define SPDRP_SERVICE 0x00000004
  1114. #define SPDRP_UNUSED1 0x00000005
  1115. #define SPDRP_UNUSED2 0x00000006
  1116. #define SPDRP_CLASS 0x00000007
  1117. #define SPDRP_CLASSGUID 0x00000008
  1118. #define SPDRP_DRIVER 0x00000009
  1119. #define SPDRP_CONFIGFLAGS 0x0000000a
  1120. #define SPDRP_MFG 0x0000000b
  1121. #define SPDRP_FRIENDLYNAME 0x0000000c
  1122. #define SPDRP_LOCATION_INFORMATION 0x0000000d
  1123. #define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000e
  1124. #define SPDRP_CAPABILITIES 0x0000000f
  1125. #define SPDRP_UI_NUMBER 0x00000010
  1126. #define SPDRP_UPPERFILTERS 0x00000011
  1127. #define SPDRP_LOWERFILTERS 0x00000012
  1128. #define SPDRP_BUSTYPEGUID 0x00000013
  1129. #define SPDRP_LEGACYBUSTYPE 0x00000014
  1130. #define SPDRP_BUSNUMBER 0x00000015
  1131. #define SPDRP_ENUMERATOR_NAME 0x00000016
  1132. #define SPDRP_SECURITY 0x00000017
  1133. #define SPDRP_SECURITY_SDS 0x00000018
  1134. #define SPDRP_DEVTYPE 0x00000019
  1135. #define SPDRP_EXCLUSIVE 0x0000001a
  1136. #define SPDRP_CHARACTERISTICS 0x0000001b
  1137. #define SPDRP_ADDRESS 0x0000001c
  1138. #define SPDRP_UI_NUMBER_DESC_FORMAT 0x0000001d
  1139. #define SPDRP_DEVICE_POWER_DATA 0x0000001e
  1140. #define SPDRP_REMO