setupapi.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. /*
  2. * Copyright (C) 2000 James Hatheway
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef _INC_SETUPAPI
  19. #define _INC_SETUPAPI
  20. #include <commctrl.h>
  21. /* setupapi doesn't use the normal convention, it adds an underscore before A/W */
  22. #ifdef __WINESRC__
  23. # define DECL_WINELIB_SETUPAPI_TYPE_AW(type) /* nothing */
  24. #else /* __WINESRC__ */
  25. # define DECL_WINELIB_SETUPAPI_TYPE_AW(type) typedef WINELIB_NAME_AW(type##_) type;
  26. #endif /* __WINESRC__ */
  27. /* Define type for handle to a loaded inf file */
  28. typedef PVOID HINF;
  29. /* Define type for handle to a device information set */
  30. typedef PVOID HDEVINFO;
  31. /* Define type for setup file queue */
  32. typedef PVOID HSPFILEQ;
  33. typedef PVOID HDSKSPC;
  34. /* inf structure. */
  35. typedef struct _INFCONTEXT
  36. {
  37. PVOID Inf;
  38. PVOID CurrentInf;
  39. UINT Section;
  40. UINT Line;
  41. } INFCONTEXT, *PINFCONTEXT;
  42. typedef struct _SP_ALTPLATFORM_INFO_V2
  43. {
  44. DWORD cbSize;
  45. DWORD Platform;
  46. DWORD MajorVersion;
  47. DWORD MinorVersion;
  48. WORD ProcessorArchitecture;
  49. union
  50. {
  51. WORD Reserved;
  52. WORD Flags;
  53. } DUMMYUNIONNAME;
  54. DWORD FirstValidatedMajorVersion;
  55. DWORD FirstValidatedMinorVersion;
  56. } SP_ALTPLATFORM_INFO_V2, *PSP_ALTPLATFORM_INFO_V2;
  57. #define SP_ALTPLATFORM_FLAGS_VERSION_RANGE 0x0001
  58. typedef struct _SP_ALTPLATFORM_INFO_V1
  59. {
  60. DWORD cbSize;
  61. DWORD Platform;
  62. DWORD MajorVersion;
  63. DWORD MinorVersion;
  64. WORD ProcessorArchitecture;
  65. WORD Reserved;
  66. } SP_ALTPLATFORM_INFO_V1, *PSP_ALTPLATFORM_INFO_V1;
  67. typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
  68. typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
  69. typedef struct _SP_FILE_COPY_PARAMS_A
  70. {
  71. DWORD cbSize;
  72. HSPFILEQ QueueHandle;
  73. PCSTR SourceRootPath;
  74. PCSTR SourcePath;
  75. PCSTR SourceFilename;
  76. PCSTR SourceDescription;
  77. PCSTR SourceTagfile;
  78. PCSTR TargetDirectory;
  79. PCSTR TargetFilename;
  80. DWORD CopyStyle;
  81. HINF LayoutInf;
  82. PCSTR SecurityDescriptor;
  83. } SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
  84. typedef struct _SP_FILE_COPY_PARAMS_W
  85. {
  86. DWORD cbSize;
  87. HSPFILEQ QueueHandle;
  88. PCWSTR SourceRootPath;
  89. PCWSTR SourcePath;
  90. PCWSTR SourceFilename;
  91. PCWSTR SourceDescription;
  92. PCWSTR SourceTagfile;
  93. PCWSTR TargetDirectory;
  94. PCWSTR TargetFilename;
  95. DWORD CopyStyle;
  96. HINF LayoutInf;
  97. PCWSTR SecurityDescriptor;
  98. } SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
  99. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_FILE_COPY_PARAMS)
  100. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_COPY_PARAMS)
  101. typedef struct _SP_REGISTER_CONTROL_STATUSA
  102. {
  103. DWORD cbSize;
  104. PCSTR FileName;
  105. DWORD Win32Error;
  106. DWORD FailureCode;
  107. } SP_REGISTER_CONTROL_STATUSA, *PSP_REGISTER_CONTROL_STATUSA;
  108. typedef struct _SP_REGISTER_CONTROL_STATUSW
  109. {
  110. DWORD cbSize;
  111. PCWSTR FileName;
  112. DWORD Win32Error;
  113. DWORD FailureCode;
  114. } SP_REGISTER_CONTROL_STATUSW, *PSP_REGISTER_CONTROL_STATUSW;
  115. DECL_WINELIB_TYPE_AW(SP_REGISTER_CONTROL_STATUS)
  116. DECL_WINELIB_TYPE_AW(PSP_REGISTER_CONTROL_STATUS)
  117. #define SPREG_SUCCESS 0x00000000
  118. #define SPREG_LOADLIBRARY 0x00000001
  119. #define SPREG_GETPROCADDR 0x00000002
  120. #define SPREG_REGSVR 0x00000003
  121. #define SPREG_DLLINSTALL 0x00000004
  122. #define SPREG_TIMEOUT 0x00000005
  123. #define SPREG_UNKNOWN 0xffffffff
  124. typedef UINT (CALLBACK *PSP_FILE_CALLBACK_A)( PVOID Context, UINT Notification,
  125. UINT_PTR Param1, UINT_PTR Param2 );
  126. typedef UINT (CALLBACK *PSP_FILE_CALLBACK_W)( PVOID Context, UINT Notification,
  127. UINT_PTR Param1, UINT_PTR Param2 );
  128. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_CALLBACK)
  129. #define LINE_LEN 256
  130. #define MAX_INF_STRING_LENGTH 4096
  131. #define MAX_TITLE_LEN 60
  132. #define MAX_INSTRUCTION_LEN 256
  133. #define MAX_LABEL_LEN 30
  134. #define MAX_SERVICE_NAME_LEN 256
  135. #define MAX_SUBTITLE_LEN 256
  136. #define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
  137. typedef UINT DI_FUNCTION;
  138. typedef struct _SP_CLASSINSTALL_HEADER
  139. {
  140. DWORD cbSize;
  141. DI_FUNCTION InstallFunction;
  142. } SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
  143. typedef struct _SP_PROPCHANGE_PARAMS
  144. {
  145. SP_CLASSINSTALL_HEADER ClassInstallHeader;
  146. DWORD StateChange;
  147. DWORD Scope;
  148. DWORD HwProfile;
  149. } SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
  150. #define DICS_ENABLE 0x00000001
  151. #define DICS_DISABLE 0x00000002
  152. #define DICS_PROPCHANGE 0x00000003
  153. #define DICS_START 0x00000004
  154. #define DICS_STOP 0x00000005
  155. typedef struct _SP_DEVINSTALL_PARAMS_A
  156. {
  157. DWORD cbSize;
  158. DWORD Flags;
  159. DWORD FlagsEx;
  160. HWND hwndParent;
  161. PSP_FILE_CALLBACK_A InstallMsgHandler;
  162. PVOID InstallMsgHandlerContext;
  163. HSPFILEQ FileQueue;
  164. ULONG_PTR ClassInstallReserved;
  165. DWORD Reserved;
  166. CHAR DriverPath[MAX_PATH];
  167. } SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
  168. typedef struct _SP_DEVINSTALL_PARAMS_W
  169. {
  170. DWORD cbSize;
  171. DWORD Flags;
  172. DWORD FlagsEx;
  173. HWND hwndParent;
  174. PSP_FILE_CALLBACK_W InstallMsgHandler;
  175. PVOID InstallMsgHandlerContext;
  176. HSPFILEQ FileQueue;
  177. ULONG_PTR ClassInstallReserved;
  178. DWORD Reserved;
  179. WCHAR DriverPath[MAX_PATH];
  180. } SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
  181. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINSTALL_PARAMS)
  182. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINSTALL_PARAMS)
  183. /* Device Information structure (references a device instance that is a member
  184. of a device information set) */
  185. typedef struct _SP_DEVINFO_DATA
  186. {
  187. DWORD cbSize;
  188. GUID ClassGuid;
  189. DWORD DevInst; /* DEVINST handle */
  190. DWORD Reserved;
  191. } SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
  192. typedef struct _SP_DEVICE_INTERFACE_DATA
  193. {
  194. DWORD cbSize;
  195. GUID InterfaceClassGuid;
  196. DWORD Flags;
  197. ULONG_PTR Reserved;
  198. } SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
  199. typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A
  200. {
  201. DWORD cbSize;
  202. CHAR DevicePath[ANYSIZE_ARRAY];
  203. } SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
  204. typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W
  205. {
  206. DWORD cbSize;
  207. WCHAR DevicePath[ANYSIZE_ARRAY];
  208. } SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
  209. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVICE_INTERFACE_DETAIL_DATA)
  210. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVICE_INTERFACE_DETAIL_DATA)
  211. typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
  212. DWORD cbSize;
  213. GUID ClassGuid;
  214. HANDLE RemoteMachineHandle;
  215. CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
  216. } SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
  217. typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
  218. DWORD cbSize;
  219. GUID ClassGuid;
  220. HANDLE RemoteMachineHandle;
  221. WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
  222. } SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
  223. DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINFO_LIST_DETAIL_DATA)
  224. DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINFO_LIST_DETAIL_DATA)
  225. typedef struct _FILE_IN_CABINET_INFO_A {
  226. LPCSTR NameInCabinet;
  227. DWORD FileSize;
  228. DWORD Win32Error;
  229. WORD DosDate;
  230. WORD DosTime;
  231. WORD DosAttribs;
  232. CHAR FullTargetName[MAX_PATH];
  233. } FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
  234. typedef struct _FILE_IN_CABINET_INFO_W {
  235. LPCWSTR NameInCabinet;
  236. DWORD FileSize;
  237. DWORD Win32Error;
  238. WORD DosDate;
  239. WORD DosTime;
  240. WORD DosAttribs;
  241. WCHAR FullTargetName[MAX_PATH];
  242. } FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
  243. DECL_WINELIB_SETUPAPI_TYPE_AW(FILE_IN_CABINET_INFO)
  244. DECL_WINELIB_SETUPAPI_TYPE_AW(PFILE_IN_CABINET_INFO)
  245. typedef struct _CABINET_INFO_A {
  246. PCSTR CabinetPath;
  247. PCSTR CabinetFile;
  248. PCSTR DiskName;
  249. USHORT SetId;
  250. USHORT CabinetNumber;
  251. } CABINET_INFO_A, *PCABINET_INFO_A;
  252. typedef struct _CABINET_INFO_W {
  253. PCWSTR CabinetPath;
  254. PCWSTR CabinetFile;
  255. PCWSTR DiskName;
  256. USHORT SetId;
  257. USHORT CabinetNumber;
  258. } CABINET_INFO_W, *PCABINET_INFO_W;
  259. DECL_WINELIB_SETUPAPI_TYPE_AW(CABINET_INFO);
  260. DECL_WINELIB_SETUPAPI_TYPE_AW(PCABINET_INFO);
  261. typedef struct _SP_INF_INFORMATION {
  262. DWORD InfStyle;
  263. DWORD InfCount;
  264. BYTE VersionData[ANYSIZE_ARRAY];
  265. } SP_INF_INFORMATION, *PSP_INF_INFORMATION;
  266. #define INF_STYLE_NONE 0x00
  267. #define INF_STYLE_OLDNT 0x01
  268. #define INF_STYLE_WIN4 0x02
  269. #define INF_STYLE_CACHE_ENABLE 0x10
  270. #define INF_STYLE_CACHE_DISABLE 0x20
  271. #define FILEOP_COPY 0
  272. #define FILEOP_RENAME 1
  273. #define FILEOP_DELETE 2
  274. #define FILEOP_BACKUP 3
  275. #define FILEOP_ABORT 0
  276. #define FILEOP_DOIT 1
  277. #define FILEOP_SKIP 2
  278. #define FILEOP_RETRY FILEOP_DOIT
  279. #define FILEOP_NEWPATH 4
  280. typedef struct _FILEPATHS_A
  281. {
  282. PCSTR Target;
  283. PCSTR Source;
  284. UINT Win32Error;
  285. DWORD Flags;
  286. } FILEPATHS_A, *PFILEPATHS_A;
  287. typedef struct _FILEPATHS_W
  288. {
  289. PCWSTR Target;
  290. PCWSTR Source;
  291. UINT Win32Error;
  292. DWORD Flags;
  293. } FILEPATHS_W, *PFILEPATHS_W;
  294. DECL_WINELIB_SETUPAPI_TYPE_AW(FILEPATHS)
  295. DECL_WINELIB_SETUPAPI_TYPE_AW(PFILEPATHS)
  296. #define SPFILENOTIFY_STARTQUEUE 0x0001
  297. #define SPFILENOTIFY_ENDQUEUE 0x0002
  298. #define SPFILENOTIFY_STARTSUBQUEUE 0x0003
  299. #define SPFILENOTIFY_ENDSUBQUEUE 0x0004
  300. #define SPFILENOTIFY_STARTDELETE 0x0005
  301. #define SPFILENOTIFY_ENDDELETE 0x0006
  302. #define SPFILENOTIFY_DELETEERROR 0x0007
  303. #define SPFILENOTIFY_STARTRENAME 0x0008
  304. #define SPFILENOTIFY_ENDRENAME 0x0009
  305. #define SPFILENOTIFY_RENAMEERROR 0x000a
  306. #define SPFILENOTIFY_STARTCOPY 0x000b
  307. #define SPFILENOTIFY_ENDCOPY 0x000c
  308. #define SPFILENOTIFY_COPYERROR 0x000d
  309. #define SPFILENOTIFY_NEEDMEDIA 0x000e
  310. #define SPFILENOTIFY_QUEUESCAN 0x000f
  311. #define SPFILENOTIFY_CABINETINFO 0x0010
  312. #define SPFILENOTIFY_FILEINCABINET 0x0011
  313. #define SPFILENOTIFY_NEEDNEWCABINET 0x0012
  314. #define SPFILENOTIFY_FILEEXTRACTED 0x0013
  315. #define SPFILENOTIFY_FILEOPDELAYED 0x0014
  316. #define SPFILENOTIFY_STARTBACKUP 0x0015
  317. #define SPFILENOTIFY_BACKUPERROR 0x0016
  318. #define SPFILENOTIFY_ENDBACKUP 0x0017
  319. #define SPFILENOTIFY_QUEUESCAN_EX 0x0018
  320. #define SPFILENOTIFY_STARTREGISTRATION 0x0019
  321. #define SPFILENOTIFY_ENDREGISTRATION 0x0020
  322. #define SPFILENOTIFY_QUEUESCAN_SIGNERINFO 0x0040
  323. #define SPFILENOTIFY_LANGMISMATCH 0x00010000
  324. #define SPFILENOTIFY_TARGETEXISTS 0x00020000
  325. #define SPFILENOTIFY_TARGETNEWER 0x00040000
  326. #define SPINST_LOGCONFIG 0x00000001
  327. #define SPINST_INIFILES 0x00000002
  328. #define SPINST_REGISTRY 0x00000004
  329. #define SPINST_INI2REG 0x00000008
  330. #define SPINST_FILES 0x00000010
  331. #define SPINST_BITREG 0x00000020
  332. #define SPINST_REGSVR 0x00000040
  333. #define SPINST_UNREGSVR 0x00000080
  334. #define SPINST_PROFILEITEMS 0x00000100
  335. #define SPINST_COPYINF 0x00000200
  336. #define SPINST_ALL 0x000003ff
  337. #define SPINST_SINGLESECTION 0x00010000
  338. #define SPINST_LOGCONFIG_IS_FORCED 0x00020000
  339. #define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000
  340. #define SPINST_REGISTERCALLBACKAWARE 0x00080000
  341. #define SP_COPY_DELETESOURCE 0x00000001
  342. #define SP_COPY_REPLACEONLY 0x00000002
  343. #define SP_COPY_NEWER 0x00000004
  344. #define SP_COPY_NEWER_OR_SAME SP_COPY_NEWER
  345. #define SP_COPY_NOOVERWRITE 0x00000008
  346. #define SP_COPY_NODECOMP 0x00000010
  347. #define SP_COPY_LANGUAGEAWARE 0x00000020
  348. #define SP_COPY_SOURCE_ABSOLUTE 0x00000040
  349. #define SP_COPY_SOURCEPATH_ABSOLUTE 0x00000080
  350. #define SP_COPY_IN_USE_NEEDS_REBOOT 0x00000100
  351. #define SP_COPY_FORCE_IN_USE 0x00000200
  352. #define SP_COPY_NOSKIP 0x00000400
  353. #define SP_FLAG_CABINETCONTINUATION 0x00000800
  354. #define SP_COPY_FORCE_NOOVERWRITE 0x00001000
  355. #define SP_COPY_FORCE_NEWER 0x00002000
  356. #define SP_COPY_WARNIFSKIP 0x00004000
  357. #define SP_COPY_NOBROWSE 0x00008000
  358. #define SP_COPY_NEWER_ONLY 0x00010000
  359. #define SP_COPY_SOURCE_SIS_MASTER 0x00020000
  360. #define SP_COPY_OEMINF_CATALOG_ONLY 0x00040000
  361. #define SP_COPY_REPLACE_BOOT_FILE 0x00080000
  362. #define SP_COPY_NOPRUNE 0x00100000
  363. #define SP_COPY_OEM_F6_INF 0x00200000
  364. #define FLG_ADDREG_DELREG_BIT 0x00008000
  365. #define FLG_ADDREG_BINVALUETYPE 0x00000001
  366. #define FLG_ADDREG_NOCLOBBER 0x00000002
  367. #define FLG_ADDREG_DELVAL 0x00000004
  368. #define FLG_ADDREG_APPEND 0x00000008
  369. #define FLG_ADDREG_KEYONLY 0x00000010
  370. #define FLG_ADDREG_OVERWRITEONLY 0x00000020
  371. #define FLG_ADDREG_64BITKEY 0x00001000
  372. #define FLG_ADDREG_KEYONLY_COMMON 0x00002000
  373. #define FLG_ADDREG_32BITKEY 0x00004000
  374. #define FLG_ADDREG_TYPE_SZ 0x00000000
  375. #define FLG_ADDREG_TYPE_MULTI_SZ 0x00010000
  376. #define FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000
  377. #define FLG_ADDREG_TYPE_BINARY (0x00000000 | FLG_ADDREG_BINVALUETYPE)
  378. #define FLG_ADDREG_TYPE_DWORD (0x00010000 | FLG_ADDREG_BINVALUETYPE)
  379. #define FLG_ADDREG_TYPE_NONE (0x00020000 | FLG_ADDREG_BINVALUETYPE)
  380. #define FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
  381. #define FLG_DELREG_VALUE (0x00000000)
  382. #define FLG_DELREG_TYPE_MASK FLG_ADDREG_TYPE_MASK
  383. #define FLG_DELREG_TYPE_SZ FLG_ADDREG_TYPE_SZ
  384. #define FLG_DELREG_TYPE_MULTI_SZ FLG_ADDREG_TYPE_MULTI_SZ
  385. #define FLG_DELREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_EXPAND_SZ
  386. #define FLG_DELREG_TYPE_BINARY FLG_ADDREG_TYPE_BINARY
  387. #define FLG_DELREG_TYPE_DWORD FLG_ADDREG_TYPE_DWORD
  388. #define FLG_DELREG_TYPE_NONE FLG_ADDREG_TYPE_NONE
  389. #define FLG_DELREG_64BITKEY FLG_ADDREG_64BITKEY
  390. #define FLG_DELREG_KEYONLY_COMMON FLG_ADDREG_KEYONLY_COMMON
  391. #define FLG_DELREG_32BITKEY FLG_ADDREG_32BITKEY
  392. #define FLG_DELREG_OPERATION_MASK (0x000000FE)
  393. #define FLG_DELREG_MULTI_SZ_DELSTRING (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
  394. #define FLG_REGSVR_DLLREGISTER 0x00000001
  395. #define FLG_REGSVR_DLLINSTALL 0x00000002
  396. #define DI_NOVCP 0x00000008
  397. /* Class installer function codes */
  398. #define DIF_SELECTDEVICE 0x01
  399. #define DIF_INSTALLDEVICE 0x02
  400. #define DIF_ASSIGNRESOURCES 0x03
  401. #define DIF_PROPERTIES 0x04
  402. #define DIF_REMOVE 0x05
  403. #define DIF_FIRSTTIMESETUP 0x06
  404. #define DIF_FOUNDDEVICE 0x07
  405. #define DIF_SELECTCLASSDRIVERS 0x08
  406. #define DIF_VALIDATECLASSDRIVERS 0x09
  407. #define DIF_INSTALLCLASSDRIVERS 0x0a
  408. #define DIF_CALCDISKSPACE 0x0b
  409. #define DIF_DESTROYPRIVATEDATA 0x0c
  410. #define DIF_VALIDATEDRIVER 0x0d
  411. #define DIF_MOVEDEVICE 0x0e
  412. #define DIF_DETECT 0x0f
  413. #define DIF_INSTALLWIZARD 0x10
  414. #define DIF_DESTROYWIZARDDATA 0x11
  415. #define DIF_PROPERTYCHANGE 0x12
  416. #define DIF_ENABLECLASS 0x13
  417. #define DIF_DETECTVERIFY 0x14
  418. #define DIF_INSTALLDEVICEFILES 0x15
  419. #define DIF_UNREMOVE 0x16
  420. #define DIF_SELECTBESTCOMPATDRV 0x17
  421. #define DIF_ALLOW_INSTALL 0x18
  422. #define DIF_REGISTERDEVICE 0x19
  423. #define DIF_NEWDEVICEWIZARD_PRESELECT 0x1a
  424. #define DIF_NEWDEVICEWIZARD_SELECT 0x1b
  425. #define DIF_NEWDEVICEWIZARD_PREANALYZE 0x1c
  426. #define DIF_NEWDEVICEWIZARD_POSTANALYZE 0x1d
  427. #define DIF_NEWDEVICEWIZARD_FINISHINSTALL 0x1e
  428. #define DIF_UNUSED1 0x1f
  429. #define DIF_INSTALLINTERFACES 0x20
  430. #define DIF_DETECTCANCEL 0x21
  431. #define DIF_REGISTER_COINSTALLERS 0x22
  432. #define DIF_ADDPROPERTYPAGE_ADVANCED 0x23
  433. #define DIF_ADDPROPERTYPAGE_BASIC 0x24
  434. #define DIF_RESERVED1 0x25
  435. #define DIF_TROUBLESHOOTER 0x26
  436. #define DIF_POWERMESSAGEWAKE 0x27
  437. #define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 0x28
  438. #define DIF_UPDATEDRIVER_UI 0x29
  439. #define DIF_RESERVED2 0x30
  440. /* Directory ids */
  441. #define DIRID_ABSOLUTE (-1)
  442. #define DIRID_ABSOLUTE_16BIT 0xffff
  443. #define DIRID_NULL 0
  444. #define DIRID_SRCPATH 1
  445. #define DIRID_WINDOWS 10
  446. #define DIRID_SYSTEM 11
  447. #define DIRID_DRIVERS 12
  448. #define DIRID_IOSUBSYS DIRID_DRIVERS
  449. #define DIRID_INF 17
  450. #define DIRID_HELP 18
  451. #define DIRID_FONTS 20
  452. #define DIRID_VIEWERS 21
  453. #define DIRID_COLOR 23
  454. #define DIRID_APPS 24
  455. #define DIRID_SHARED 25
  456. #define DIRID_BOOT 30
  457. #define DIRID_SYSTEM16 50
  458. #define DIRID_SPOOL 51
  459. #define DIRID_SPOOLDRIVERS 52
  460. #define DIRID_USERPROFILE 53
  461. #define DIRID_LOADER 54
  462. #define DIRID_PRINTPROCESSOR 55
  463. #define DIRID_DEFAULT DIRID_SYSTEM
  464. #define DIRID_COMMON_STARTMENU 16406
  465. #define DIRID_COMMON_PROGRAMS 16407
  466. #define DIRID_COMMON_STARTUP 16408
  467. #define DIRID_COMMON_DESKTOPDIRECTORY 16409
  468. #define DIRID_COMMON_FAVORITES 16415
  469. #define DIRID_COMMON_APPDATA 16419
  470. #define DIRID_PROGRAM_FILES 16422
  471. #define DIRID_SYSTEM_X86 16425
  472. #define DIRID_PROGRAM_FILES_X86 16426
  473. #define DIRID_PROGRAM_FILES_COMMON 16427
  474. #define DIRID_PROGRAM_FILES_COMMONX86 16428
  475. #define DIRID_COMMON_TEMPLATES 16429
  476. #define DIRID_COMMON_DOCUMENTS 16430
  477. #define DIRID_USER 0x8000
  478. /* Error code */
  479. #define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
  480. #define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
  481. #define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
  482. #define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
  483. #define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
  484. #define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
  485. #define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
  486. #define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
  487. #define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
  488. #define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
  489. #define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
  490. #define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
  491. #define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
  492. #define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
  493. #define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
  494. #define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
  495. #define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
  496. #define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
  497. #define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
  498. #define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
  499. #define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
  500. #define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
  501. #define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
  502. #define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
  503. #define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
  504. #define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
  505. #define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
  506. #define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
  507. #define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
  508. #define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
  509. #define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
  510. #define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
  511. #define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
  512. #define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
  513. #define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
  514. #define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
  515. #define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
  516. #define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
  517. #define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
  518. #define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
  519. #define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
  520. #define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
  521. #define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
  522. #define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
  523. #define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
  524. #define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
  525. #define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
  526. #define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
  527. #define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
  528. #define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
  529. #define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
  530. #define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
  531. #define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
  532. #define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
  533. #define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
  534. #define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
  535. #define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
  536. #define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
  537. #define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
  538. #define ERROR_INVALID_TARGET (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
  539. #define ERROR_DRIVER_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
  540. #define ERROR_IN_WOW64 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
  541. #define ERROR_SET_SYSTEM_RESTORE_POINT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
  542. #define ERROR_INCORRECTLY_COPIED_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x237)
  543. #define ERROR_SCE_DISABLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
  544. #define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
  545. #define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
  546. #define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
  547. #define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
  548. #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
  549. /* flags for SetupDiGetClassDevs */
  550. #define DIGCF_DEFAULT 0x00000001
  551. #define DIGCF_PRESENT 0x00000002
  552. #define DIGCF_ALLCLASSES 0x00000004
  553. #define DIGCF_PROFILE 0x00000008
  554. #define DIGCF_DEVICEINTERFACE 0x00000010
  555. /* Flags for SetupDiOpenClassRegKeyEx */
  556. #define DIOCR_INSTALLER 0x00000001
  557. #define DIOCR_INTERFACE 0x00000002
  558. /* Flags for SetupDiBuildClassInfoList(Ex) */
  559. #define DIBCI_NOINSTALLCLASS 0x00000001
  560. #define DIBCI_NODISPLAYCLASS 0x00000002
  561. /* setup device registry property codes */
  562. #define SPDRP_DEVICEDESC 0x00000000
  563. #define SPDRP_HARDWAREID 0x00000001
  564. #define SPDRP_COMPATIBLEIDS 0x00000002
  565. #define SPDRP_UNUSED0 0x00000003
  566. #define SPDRP_SERVICE 0x00000004
  567. #define SPDRP_UNUSED1 0x00000005
  568. #define SPDRP_UNUSED2 0x00000006
  569. #define SPDRP_CLASS 0x00000007
  570. #define SPDRP_CLASSGUID 0x00000008
  571. #define SPDRP_DRIVER 0x00000009
  572. #define SPDRP_CONFIGFLAGS 0x0000000a
  573. #define SPDRP_MFG 0x0000000b
  574. #define SPDRP_FRIENDLYNAME 0x0000000c
  575. #define SPDRP_LOCATION_INFORMATION 0x0000000d
  576. #define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000e
  577. #define SPDRP_CAPABILITIES 0x0000000f
  578. #define SPDRP_UI_NUMBER 0x00000010
  579. #define SPDRP_UPPERFILTERS 0x00000011
  580. #define SPDRP_LOWERFILTERS 0x00000012
  581. #define SPDRP_BUSTYPEGUID 0x00000013
  582. #define SPDRP_LEGACYBUSTYPE 0x00000014
  583. #define SPDRP_BUSNUMBER 0x00000015
  584. #define SPDRP_ENUMERATOR_NAME 0x00000016
  585. #define SPDRP_SECURITY 0x00000017
  586. #define SPDRP_SECURITY_SDS 0x00000018
  587. #define SPDRP_DEVTYPE 0x00000019
  588. #define SPDRP_EXCLUSIVE 0x0000001a
  589. #define SPDRP_CHARACTERISTICS 0x0000001b
  590. #define SPDRP_ADDRESS 0x0000001c
  591. #define SPDRP_UI_NUMBER_DESC_FORMAT 0x0000001d
  592. #define SPDRP_DEVICE_POWER_DATA 0x0000001e
  593. #define SPDRP_REMOVAL_POLICY 0x0000001f
  594. #define SPDRP_REMOVAL_POLICY_HW_DEFAULT 0x00000020
  595. #define SPDRP_REMOVAL_POLICY_OVERRIDE 0x00000021
  596. #define SPDRP_INSTALL_STATE 0x00000022
  597. #define SPDRP_MAXIMUM_PROPERTY 0x00000023
  598. LONG WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD dwUnknown2, DWORD dwUnknown3);
  599. BOOL WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
  600. PWSTR WINAPI DuplicateString(PCWSTR lpSrc);
  601. BOOL WINAPI EnablePrivilege(PCWSTR lpPrivilegeName, BOOL bEnable);
  602. void WINAPI InstallHinfSectionA( HWND hwnd, HINSTANCE handle, PCSTR cmdline, INT show );
  603. void WINAPI InstallHinfSectionW( HWND hwnd, HINSTANCE handle, PCWSTR cmdline, INT show );
  604. #define InstallHinfSection WINELIB_NAME_AW(InstallHinfSection)
  605. BOOL WINAPI IsUserAdmin(VOID);
  606. PWSTR WINAPI MultiByteToUnicode(PCSTR lpMultiByteStr, UINT uCodePage);
  607. VOID WINAPI MyFree(PVOID lpMem);
  608. PVOID WINAPI MyMalloc(DWORD dwSize);
  609. PVOID WINAPI MyRealloc(PVOID lpSrc, DWORD dwSize);
  610. LONG WINAPI QueryRegistryValue(HKEY, PCWSTR, PBYTE *, PDWORD, PDWORD);
  611. BOOL WINAPI SetupCloseFileQueue( HSPFILEQ );
  612. void WINAPI SetupCloseInfFile( HINF hinf );
  613. BOOL WINAPI SetupCommitFileQueueA( HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID );
  614. BOOL WINAPI SetupCommitFileQueueW( HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID );
  615. #define SetupCommitFileQueue WINELIB_NAME_AW(SetupCommitFileQueue)
  616. UINT WINAPI SetupDefaultQueueCallbackA( PVOID, UINT, UINT_PTR, UINT_PTR );
  617. UINT WINAPI SetupDefaultQueueCallbackW( PVOID, UINT, UINT_PTR, UINT_PTR );
  618. #define SetupDefaultQueueCallback WINELIB_NAME_AW(SetupDefaultQueueCallback)
  619. BOOL WINAPI SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD);
  620. BOOL WINAPI SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID);
  621. BOOL WINAPI SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID);
  622. #define SetupDiBuildClassInfoListEx WINELIB_NAME_AW(SetupDiBuildClassInfoListEx)
  623. BOOL WINAPI SetupDiClassGuidsFromNameA(LPCSTR, LPGUID, DWORD, PDWORD);
  624. BOOL WINAPI SetupDiClassGuidsFromNameW(LPCWSTR, LPGUID, DWORD, PDWORD);
  625. #define SetupDiClassGuidsFromName WINELIB_NAME_AW(SetupDiClassGuidsFromName)
  626. BOOL WINAPI SetupDiClassGuidsFromNameExA(LPCSTR, LPGUID, DWORD, PDWORD, LPCSTR, PVOID);
  627. BOOL WINAPI SetupDiClassGuidsFromNameExW(LPCWSTR, LPGUID, DWORD, PDWORD, LPCWSTR, PVOID);
  628. #define SetupDiClassGuidsFromNameEx WINELIB_NAME_AW(SetupDiClassGuidsFromNameEx)
  629. BOOL WINAPI SetupDiClassNameFromGuidA(const GUID*, PSTR, DWORD, PDWORD);
  630. BOOL WINAPI SetupDiClassNameFromGuidW(const GUID*, PWSTR, DWORD, PDWORD);
  631. #define SetupDiClassNameFromGuid WINELIB_NAME_AW(SetupDiClassNameFromGuid)
  632. BOOL WINAPI SetupDiClassNameFromGuidExA(const GUID*, PSTR, DWORD, PDWORD, PCSTR, PVOID);
  633. BOOL WINAPI SetupDiClassNameFromGuidExW(const GUID*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID);
  634. #define SetupDiClassNameFromGuidEx WINELIB_NAME_AW(SetupDiClassNameFromGuidEx)
  635. HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *, HWND);
  636. HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(const GUID *, HWND, PCSTR, PVOID);
  637. HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(const GUID *, HWND, PCWSTR, PVOID);
  638. #define SetupDiCreateDeviceInfoListEx WINELIB_NAME_AW(SetupDiCreateDeviceInfoListEx)
  639. BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO);
  640. BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, DWORD, PSP_DEVICE_INTERFACE_DATA);
  641. BOOL WINAPI SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR *);
  642. BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR *);
  643. #define SetupDiGetActualSectionToInstall WINELIB_NAME_AW(SetupDiGetActualSectionToInstall)
  644. BOOL WINAPI SetupDiGetClassDescriptionA(const GUID*, PSTR, DWORD, PDWORD);
  645. BOOL WINAPI SetupDiGetClassDescriptionW(const GUID*, PWSTR, DWORD, PDWORD);
  646. #define SetupDiGetClassDescription WINELIB_NAME_AW(SetupDiGetClassDescription)
  647. BOOL WINAPI SetupDiGetClassDescriptionExA(const GUID*, PSTR, DWORD, PDWORD, PCSTR, PVOID);
  648. BOOL WINAPI SetupDiGetClassDescriptionExW(const GUID*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID);
  649. #define SetupDiGetClassDescriptionEx WINELIB_NAME_AW(SetupDiGetClassDescriptionEx)
  650. HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *,LPCSTR,HWND,DWORD);
  651. HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *,LPCWSTR,HWND,DWORD);
  652. #define SetupDiGetClassDevs WINELIB_NAME_AW(SetupDiGetClassDevs)
  653. BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
  654. DWORD, PDWORD, PSP_DEVINFO_DATA);
  655. BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
  656. DWORD, PDWORD, PSP_DEVINFO_DATA);
  657. #define SetupDiGetDeviceInterfaceDetail WINELIB_NAME_AW(SetupDiGetDeviceInterfaceDetail)
  658. BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
  659. BOOL WINAPI SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ);
  660. BOOL WINAPI SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ);
  661. #define SetupDiInstallClass WINELIB_NAME_AW(SetupDiInstallClass)
  662. HKEY WINAPI SetupDiOpenClassRegKey(const GUID*, REGSAM);
  663. HKEY WINAPI SetupDiOpenClassRegKeyExA(const GUID*, REGSAM, DWORD, PCSTR, PVOID);
  664. HKEY WINAPI SetupDiOpenClassRegKeyExW(const GUID*, REGSAM, DWORD, PCWSTR, PVOID);
  665. #define SetupDiOpenClassRegKeyEx WINELIB_NAME_AW(SetupDiOpenClassRegKeyEx)
  666. BOOL WINAPI SetupFindFirstLineA( HINF hinf, PCSTR section, PCSTR key, INFCONTEXT *context );
  667. BOOL WINAPI SetupFindFirstLineW( HINF hinf, PCWSTR section, PCWSTR key, INFCONTEXT *context );
  668. #define SetupFindFirstLine WINELIB_NAME_AW(SetupFindFirstLine)
  669. BOOL WINAPI SetupFindNextLine( PINFCONTEXT context_in, PINFCONTEXT context_out );
  670. BOOL WINAPI SetupFindNextMatchLineA( PINFCONTEXT context_in, PCSTR key, PINFCONTEXT context_out );
  671. BOOL WINAPI SetupFindNextMatchLineW( PINFCONTEXT context_in, PCWSTR key, PINFCONTEXT context_out );
  672. #define SetupFindNextMatchLine WINELIB_NAME_AW(SetupFindNextMatchLine)
  673. BOOL WINAPI SetupGetBinaryField( PINFCONTEXT context, DWORD index, BYTE *buffer, DWORD size, LPDWORD required );
  674. DWORD WINAPI SetupGetFieldCount( PINFCONTEXT context );
  675. BOOL WINAPI SetupGetFileQueueCount( HSPFILEQ, UINT, PUINT );
  676. BOOL WINAPI SetupGetFileQueueFlags( HSPFILEQ, PDWORD );
  677. BOOL WINAPI SetupGetIntField( PINFCONTEXT context, DWORD index, PINT result );
  678. BOOL WINAPI SetupGetLineByIndexA( HINF, PCSTR, DWORD, INFCONTEXT * );
  679. BOOL WINAPI SetupGetLineByIndexW( HINF, PCWSTR, DWORD, INFCONTEXT * );
  680. #define SetupGetLineByIndex WINELIB_NAME_AW(SetupGetLineByIndex)
  681. LONG WINAPI SetupGetLineCountA( HINF hinf, PCSTR section );
  682. LONG WINAPI SetupGetLineCountW( HINF hinf, PCWSTR section );
  683. #define SetupGetLineCount WINELIB_NAME_AW(SetupGetLineCount)
  684. BOOL WINAPI SetupGetLineTextA( PINFCONTEXT context, HINF hinf, PCSTR section_name,PCSTR key_name, PSTR buffer, DWORD size, PDWORD required );
  685. BOOL WINAPI SetupGetLineTextW( PINFCONTEXT context, HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR buffer, DWORD size, PDWORD required );
  686. #define SetupGetLineText WINELIB_NAME_AW(SetupGetLineText)
  687. BOOL WINAPI SetupGetMultiSzFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, LPDWORD required );
  688. BOOL WINAPI SetupGetMultiSzFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, LPDWORD required );
  689. #define SetupGetMultiSzField WINELIB_NAME_AW(SetupGetMultiSzField)
  690. BOOL WINAPI SetupGetStringFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, PDWORD required );
  691. BOOL WINAPI SetupGetStringFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, PDWORD required );
  692. #define SetupGetStringField WINELIB_NAME_AW(SetupGetStringField)
  693. PVOID WINAPI SetupInitDefaultQueueCallback( HWND );
  694. PVOID WINAPI SetupInitDefaultQueueCallbackEx( HWND, HWND, UINT, DWORD, PVOID );
  695. BOOL WINAPI SetupInstallFilesFromInfSectionA( HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT );
  696. BOOL WINAPI SetupInstallFilesFromInfSectionW( HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT );
  697. #define SetupInstallFilesFromInfSection WINELIB_NAME_AW(SetupInstallFilesFromInfSection)
  698. BOOL WINAPI SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,
  699. PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
  700. BOOL WINAPI SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,
  701. PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
  702. #define SetupInstallFromInfSection WINELIB_NAME_AW(SetupInstallFromInfSection)
  703. BOOL WINAPI SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID);
  704. BOOL WINAPI SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID);
  705. #define SetupIterateCabinet WINELIB_NAME_AW(SetupIterateCabinet)
  706. BOOL WINAPI SetupOpenAppendInfFileA( PCSTR, HINF, UINT * );
  707. BOOL WINAPI SetupOpenAppendInfFileW( PCWSTR, HINF, UINT * );
  708. #define SetupOpenAppendInfFile WINELIB_NAME_AW(SetupOpenAppendInfFile)
  709. HSPFILEQ WINAPI SetupOpenFileQueue(void);
  710. HINF WINAPI SetupOpenInfFileA( PCSTR name, PCSTR pszclass, DWORD style, UINT *error );
  711. HINF WINAPI SetupOpenInfFileW( PCWSTR name, PCWSTR pszclass, DWORD style, UINT *error );
  712. #define SetupOpenInfFile WINELIB_NAME_AW(SetupOpenInfFile)
  713. HINF WINAPI SetupOpenMasterInf( VOID );
  714. BOOL WINAPI SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD);
  715. BOOL WINAPI SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD);
  716. #define SetupQueueCopy WINELIB_NAME_AW(SetupQueueCopy)
  717. BOOL WINAPI SetupQueueCopyIndirectA( PSP_FILE_COPY_PARAMS_A );
  718. BOOL WINAPI SetupQueueCopyIndirectW( PSP_FILE_COPY_PARAMS_W );
  719. #define SetupQueueCopyIndirect WINELIB_NAME_AW(SetupQueueCopyIndirect)
  720. BOOL WINAPI SetupQueueCopySectionA( HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD );
  721. BOOL WINAPI SetupQueueCopySectionW( HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD );
  722. #define SetupQueueCopySection WINELIB_NAME_AW(SetupQueueCopySection)
  723. BOOL WINAPI SetupQueueDefaultCopyA( HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD );
  724. BOOL WINAPI SetupQueueDefaultCopyW( HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD );
  725. #define SetupQueueDefaultCopy WINELIB_NAME_AW(SetupQueueDefaultCopy)
  726. BOOL WINAPI SetupQueueDeleteA( HSPFILEQ, PCSTR, PCSTR );
  727. BOOL WINAPI SetupQueueDeleteW( HSPFILEQ, PCWSTR, PCWSTR );
  728. #define SetupQueueDelete WINELIB_NAME_AW(SetupQueueDelete)
  729. BOOL WINAPI SetupQueueDeleteSectionA( HSPFILEQ, HINF, HINF, PCSTR );
  730. BOOL WINAPI SetupQueueDeleteSectionW( HSPFILEQ, HINF, HINF, PCWSTR );
  731. #define SetupQueueDeleteSection WINELIB_NAME_AW(SetupQueueDeleteSection)
  732. BOOL WINAPI SetupQueueRenameA( HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR );
  733. BOOL WINAPI SetupQueueRenameW( HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR );
  734. #define SetupQueueRename WINELIB_NAME_AW(SetupQueueRename)
  735. BOOL WINAPI SetupQueueRenameSectionA( HSPFILEQ, HINF, HINF, PCSTR );
  736. BOOL WINAPI SetupQueueRenameSectionW( HSPFILEQ, HINF, HINF, PCWSTR );
  737. #define SetupQueueRenameSection WINELIB_NAME_AW(SetupQueueRenameSection)
  738. BOOL WINAPI SetupScanFileQueueA( HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD );
  739. BOOL WINAPI SetupScanFileQueueW( HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD );
  740. #define SetupScanFileQueue WINELIB_NAME_AW(SetupScanFileQueue)
  741. BOOL WINAPI SetupSetDirectoryIdA( HINF, DWORD, PCSTR );
  742. BOOL WINAPI SetupSetDirectoryIdW( HINF, DWORD, PCWSTR );
  743. #define SetupSetDirectoryId WINELIB_NAME_AW(SetupSetDirectoryId)
  744. BOOL WINAPI SetupSetFileQueueAlternatePlatformA( HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR );
  745. BOOL WINAPI SetupSetFileQueueAlternatePlatformW( HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR );
  746. #define SetupSetFileQueueAlternatePlatform WINELIB_NAME_AW(SetupSetFileQueueAlternatePlatform)
  747. BOOL WINAPI SetupSetFileQueueFlags( HSPFILEQ, DWORD, DWORD );
  748. void WINAPI SetupTermDefaultQueueCallback( PVOID );
  749. PSTR WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
  750. #undef DECL_WINELIB_SETUPAPI_TYPE_AW
  751. #endif /* _INC_SETUPAPI */