Added PCF_TOTALTIMEOUTS to comm properties.
[wine/wine64.git] / dlls / setupapi / setupx16.h
bloba301d196a7747e9dc2242472b6b4e1636b9409de
1 /*
2 * Copyright 2000 Andreas Mohr for Codeweavers
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.
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.
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
19 #ifndef __SETUPX16_H
20 #define __SETUPX16_H
22 #include "wine/windef16.h"
24 typedef UINT16 HINF16;
25 typedef UINT16 LOGDISKID16;
26 typedef UINT16 VHSTR;
28 #define LINE_LEN 256
30 /* error codes stuff */
32 typedef UINT16 RETERR16;
33 #define OK 0
34 #define IP_ERROR (UINT16)100
35 #define TP_ERROR (UINT16)200
36 #define VCP_ERROR (UINT16)300
37 #define GEN_ERROR (UINT16)400
38 #define DI_ERROR (UINT16)500
40 enum {
41 ERR_IP_INVALID_FILENAME = IP_ERROR+1,
42 ERR_IP_ALLOC_ERR,
43 ERR_IP_INVALID_SECT_NAME,
44 ERR_IP_OUT_OF_HANDLES,
45 ERR_IP_INF_NOT_FOUND,
46 ERR_IP_INVALID_INFFILE,
47 ERR_IP_INVALID_HINF,
48 ERR_IP_INVALID_FIELD,
49 ERR_IP_SECT_NOT_FOUND,
50 ERR_IP_END_OF_SECTION,
51 ERR_IP_PROFILE_NOT_FOUND,
52 ERR_IP_LINE_NOT_FOUND,
53 ERR_IP_FILEREAD,
54 ERR_IP_TOOMANYINFFILES,
55 ERR_IP_INVALID_SAVERESTORE,
56 ERR_IP_INVALID_INFTYPE
59 /****** virtual copy operations ******/
61 typedef DWORD LPEXPANDVTBL;
63 typedef struct {
64 DWORD dwSoFar;
65 DWORD dwTotal;
66 } VCPPROGRESS, *LPVCPPROGRESS;
68 typedef struct {
69 WORD cbSize;
70 LOGDISKID16 ldid;
71 VHSTR vhstrRoot;
72 VHSTR vhstrVolumeLabel;
73 VHSTR vhstrDiskName;
74 WORD wVolumeTime;
75 WORD wVolumeDate;
76 DWORD dwSerialNumber;
77 WORD fl;
78 LPARAM lparamRef;
80 VCPPROGRESS prgFileRead;
81 VCPPROGRESS prgByteRead;
83 VCPPROGRESS prgFileWrite;
84 VCPPROGRESS prgByteWrite;
85 } VCPDISKINFO, *LPVCPDISKINFO;
87 typedef struct {
88 LOGDISKID16 ldid;
89 VHSTR vhstrDir;
90 VHSTR vhstrFileName;
91 } VCPFILESPEC, *LPVCPFILESPEC;
93 typedef struct {
94 UINT16 uiMDate;
95 UINT16 uiMTime;
96 UINT16 uiADate;
97 UINT16 uiATime;
98 UINT16 uiAttr;
99 DWORD llenIn;
100 DWORD llenOut;
101 } VCPFATTR, *LPVCPFATTR;
103 typedef struct {
104 UINT16 uDate;
105 UINT16 uTime;
106 DWORD dwSize;
107 } VCPFILESTAT, *LPVCPFILESTAT;
109 typedef struct
111 HFILE16 hFileSrc;
112 HFILE16 hFileDst;
113 VCPFATTR fAttr;
114 WORD dosError;
115 VHSTR vhstrFileName;
116 WPARAM vcpm;
117 } VIRTNODEEX, *LPVIRTNODEEX;
119 typedef struct {
120 WORD cbSize;
121 VCPFILESPEC vfsSrc;
122 VCPFILESPEC vfsDst;
123 WORD fl;
124 LPARAM lParam;
125 LPEXPANDVTBL lpExpandVtbl;
126 LPVIRTNODEEX lpvnex;
127 VHSTR vhstrDstFinalName;
128 VCPFILESTAT vFileStat;
129 } VIRTNODE, *LPVIRTNODE;
131 typedef struct {
132 WORD cbSize;
133 VCPPROGRESS prgDiskRead;
134 VCPPROGRESS prgFileRead;
135 VCPPROGRESS prgByteRead;
137 VCPPROGRESS prgDiskWrite;
138 VCPPROGRESS prgFileWrite;
139 VCPPROGRESS prgByteWrite;
141 LPVCPDISKINFO lpvdiIn;
142 LPVCPDISKINFO lpvdiOut;
143 LPVIRTNODE lpvn;
144 } VCPSTATUS, *LPVCPSTATUS;
146 #define CNFL_BACKUP 0x0001
147 #define CNFL_DELETEONFAILURE 0x0002
148 #define CNFL_RENAMEONSUCCESS 0x0004
149 #define CNFL_CONTINUATION 0x0008
150 #define CNFL_SKIPPED 0x0010
151 #define CNFL_IGNOREERRORS 0x0020
152 #define CNFL_RETRYFILE 0x0040
153 #define CNFL_COPIED 0x0080
154 #define VNFL_UNIQUE 0x0000
155 #define VNFL_MULTIPLEOK 0x0100
156 #define VNFL_DESTROYOLD 0x0200
157 #define VNFL_COPY 0x0000
158 #define VNFL_DELETE 0x0800
159 #define VNFL_RENAME 0x1000
160 #define VNFL_NODE_TYPE (VNFL_RENAME|VNFL_DELETE|VNFL_COPY)
161 #define VNFL_CREATED 0x2000
162 #define VNFL_REJECTED 0x4000
163 #define VNFL_DEVICEINSTALLER 0x8000
165 enum {
166 ERR_VCP_IOFAIL = VCP_ERROR+1,
167 ERR_VCP_STRINGTOOLONG,
168 ERR_VCP_NOMEM,
169 ERR_VCP_QUEUEFULL,
170 ERR_VCP_NOVHSTR,
171 ERR_VCP_OVERFLOW,
172 ERR_VCP_BADARG,
173 ERR_VCP_UNINIT,
174 ERR_VCP_NOTFOUND,
175 ERR_VCP_BUSY,
176 ERR_VCP_INTERRUPTED,
177 ERR_VCP_BADDEST,
178 ERR_VCP_SKIPPED,
179 ERR_VCP_IO,
180 ERR_VCP_LOCKED,
181 ERR_VCP_WRONGDISK,
182 ERR_VCP_CHANGEMODE,
183 ERR_VCP_LDDINVALID,
184 ERR_VCP_LDDFIND,
185 ERR_VCP_LDDUNINIT,
186 ERR_VCP_LDDPATH_INVALID,
187 ERR_VCP_NOEXPANSION,
188 ERR_VCP_NOTOPEN,
189 ERR_VCP_NO_DIGITAL_SIGNATURE_CATALOG,
190 ERR_VCP_NO_DIGITAL_SIGNATURE_FILE
193 #define VCPN_OK 0
194 #define VCPN_PROCEED 0
195 #define VCPN_ABORT -1
196 #define VCPN_RETRY -2
197 #define VCPN_IGNORE -3
198 #define VCPN_SKIP -4
199 #define VCPN_FORCE -5
200 #define VCPN_DEFER -6
201 #define VCPN_FAIL -7
202 #define VCPN_RETRYFILE -8
204 #define VCPFL_ABANDON 0x00
205 #define VCPFL_BACKUP 0x01
206 #define VCPFL_COPY 0x02
207 #define VCPFL_BACKUPANDCOPY (VCPFL_BACKUP|VCPFL_COPY)
208 #define VCPFL_INSPECIFIEDORDER 0x04
209 #define VCPFL_DELETE 0x08
210 #define VCPFL_RENAME 0x10
211 #define VCPFL_ALL (VCPFL_COPY|VCPFL_DELETE|VCPFL_RENAME)
213 #define CFNL_BACKUP 0x0001
214 #define CFNL_DELETEONFAILURE 0x0002
215 #define CFNL_RENAMEONSUCCESS 0x0004
216 #define CFNL_CONTINUATION 0x0008
217 #define CFNL_SKIPPED 0x0010
218 #define CFNL_IGNOREERRORS 0x0020
219 #define CFNL_RETRYFILE 0x0040
220 #define CFNL_COPIED 0x0080
221 #define VFNL_MULTIPLEOK 0x0100
222 #define VFNL_DESTROYOLD 0x0200
223 #define VFNL_NOW 0x0400
224 #define VFNL_COPY 0x0000
225 #define VFNL_DELETE 0x0800
226 #define VFNL_RENAME 0x1000
227 #define VFNL_CREATED 0x2000
228 #define VFNL_REJECTED 0x4000
229 #define VCPM_DISKCLASS 0x01
230 #define VCPM_DISKFIRST 0x0100
231 #define VCPM_DISKLAST 0x01ff
233 enum {
234 VCPM_DISKCREATEINFO = VCPM_DISKFIRST,
235 VCPM_DISKGETINFO,
236 VCPM_DISKDESTROYINFO,
237 VCPM_DISKPREPINFO,
238 VCPM_DISKENSURE,
239 VCPM_DISKPROMPT,
240 VCPM_DISKFORMATBEGIN,
241 VCPM_DISKFORMATTING,
242 VCPM_DISKFORMATEND
245 #define VCPM_FILEINCLASS 0x02
246 #define VCPM_FILEOUTCLASS 0x03
247 #define VCPM_FILEFIRSTIN 0x0200
248 #define VCPM_FILEFIRSTOUT 0x0300
249 #define VCPM_FILELAST 0x03ff
251 enum {
252 VCPM_FILEOPENIN = VCPM_FILEFIRSTIN,
253 VCPM_FILEGETFATTR,
254 VCPM_FILECLOSEIN,
255 VCPM_FILECOPY,
256 VCPM_FILENEEDED,
258 VCPM_FILEOPENOUT = VCPM_FILEFIRSTOUT,
259 VCPM_FILESETFATTR,
260 VCPM_FILECLOSEOUT,
261 VCPM_FILEFINALIZE,
262 VCPM_FILEDELETE,
263 VCPM_FILERENAME
266 #define VCPM_NODECLASS 0x04
267 #define VCPM_NODEFIRST 0x0400
268 #define VCPM_NODELAST 0x04ff
270 enum {
271 VCPM_NODECREATE = VCPM_NODEFIRST,
272 VCPM_NODEACCEPT,
273 VCPM_NODEREJECT,
274 VCPM_NODEDESTROY,
275 VCPM_NODECHANGEDESTDIR,
276 VCPM_NODECOMPARE
279 #define VCPM_TALLYCLASS 0x05
280 #define VCPM_TALLYFIRST 0x0500
281 #define VCPM_TALLYLAST 0x05ff
283 enum {
284 VCPM_TALLYSTART = VCPM_TALLYFIRST,
285 VCPM_TALLYEND,
286 VCPM_TALLYFILE,
287 VCPM_TALLYDISK
290 #define VCPM_VERCLASS 0x06
291 #define VCPM_VERFIRST 0x0600
292 #define VCPM_VERLAST 0x06ff
294 enum {
295 VCPM_VERCHECK = VCPM_VERFIRST,
296 VCPM_VERCHECKDONE,
297 VCPM_VERRESOLVECONFLICT
300 #define VCPM_VSTATCLASS 0x07
301 #define VCPM_VSTATFIRST 0x0700
302 #define VCPM_VSTATLAST 0x07ff
304 enum {
305 VCPM_VSTATSTART = VCPM_VSTATFIRST,
306 VCPM_VSTATEND,
307 VCPM_VSTATREAD,
308 VCPM_VSTATWRITE,
309 VCPM_VSTATNEWDISK,
310 VCPM_VSTATCLOSESTART,
311 VCPM_VSTATCLOSEEND,
312 VCPM_VSTATBACKUPSTART,
313 VCPM_VSTATBACKUPEND,
314 VCPM_VSTATRENAMESTART,
315 VCPM_VSTATRENAMEEND,
316 VCPM_VSTATCOPYSTART,
317 VCPM_VSTATCOPYEND,
318 VCPM_VSTATDELETESTART,
319 VCPM_VSTATDELETEEND,
320 VCPM_VSTATPATHCHECKSTART,
321 VCPM_VSTATPATHCHECKEND,
322 VCPM_VSTATCERTIFYSTART,
323 VCPM_VSTATCERTIFYEND,
324 VCPM_VSTATUSERABORT,
325 VCPM_VSTATYIELD
328 #define VCPM_PATHCLASS 0x08
329 #define VCPM_PATHFIRST 0x0800
330 #define VCPM_PATHLAST 0x08ff
332 enum {
333 VCPM_BUILDPATH = VCPM_PATHFIRST,
334 VCPM_UNIQUEPATH,
335 VCPM_CHECKPATH
338 #define VCPM_PATCHCLASS 0x09
339 #define VCPM_PATCHFIRST 0x0900
340 #define VCPM_PATCHLAST 0x09ff
342 enum {
343 VCPM_FILEPATCHBEFORECPY = VCPM_PATCHFIRST,
344 VCPM_FILEPATCHAFTERCPY,
345 VCPM_FILEPATCHINFOPEN,
346 VCPM_FILEPATCHINFCLOSE
349 #define VCPM_CERTCLASS 0x0a
350 #define VCPM_CERTFIRST 0x0a00
351 #define VCPM_CERTLAST 0x0aff
353 enum {
354 VCPM_FILECERTIFY = VCPM_CERTFIRST,
355 VCPM_FILECERTIFYWARN
358 typedef LRESULT (CALLBACK *VIFPROC)(LPVOID lpvObj, UINT16 uMsg, WPARAM wParam, LPARAM lParam, LPARAM lparamRef);
360 typedef int (CALLBACK *VCPENUMPROC)(LPVIRTNODE lpvn, LPARAM lparamRef);
362 RETERR16 WINAPI VcpOpen16(VIFPROC vifproc, LPARAM lparamMsgRef);
363 RETERR16 WINAPI VcpQueueCopy16(
364 LPCSTR lpszSrcFileName, LPCSTR lpszDstFileName,
365 LPCSTR lpszSrcDir, LPCSTR lpszDstDir,
366 LOGDISKID16 ldidSrc, LOGDISKID16 ldidDst,
367 LPEXPANDVTBL lpExpandVtbl,
368 WORD fl, LPARAM lParam
370 RETERR16 VcpFlush16(WORD fl, LPCSTR lpszBackupDest);
371 RETERR16 WINAPI VcpClose16(WORD fl, LPCSTR lpszBackupDest);
373 /* VcpExplain flags */
374 enum {
375 VCPEX_SRC_DISK,
376 VCPEX_SRC_CABINET,
377 VCPEX_SRC_LOCN,
378 VCPEX_DST_LOCN,
379 VCPEX_SRC_FILE,
380 VCPEX_DST_FILE,
381 VCPEX_DST_FILE_FINAL,
382 VCPEX_DOS_ERROR,
383 VCPEX_MESSAGE,
384 VCPEX_DOS_SOLUTION,
385 VCPEX_SRC_FULL,
386 VCPEX_DST_FULL,
387 VCPEX_DST_FULL_FINAL
390 LPCSTR WINAPI VcpExplain16(LPVIRTNODE lpVn, DWORD dwWhat);
392 /****** logical disk management ******/
394 typedef struct _LOGDISKDESC_S { /* ldd */
395 WORD cbSize; /* struct size */
396 LOGDISKID16 ldid; /* logical disk ID */
397 LPSTR pszPath; /* path this descriptor points to */
398 LPSTR pszVolLabel; /* volume label of the disk related to it */
399 LPSTR pszDiskName; /* name of this disk */
400 WORD wVolTime; /* modification time of volume label */
401 WORD wVolDate; /* modification date */
402 DWORD dwSerNum; /* serial number of disk */
403 WORD wFlags;
404 } LOGDISKDESC_S, *LPLOGDISKDESC;
406 /** logical disk identifiers (LDID) **/
408 /* predefined LDIDs */
409 #define LDID_PREDEF_START 0x0001
410 #define LDID_PREDEF_END 0x7fff
412 /* registry-assigned LDIDs */
413 #define LDID_VAR_START 0x7000
414 #define LDID_VAR_END 0x7fff
416 /* dynamically assigned LDIDs */
417 #define LDID_ASSIGN_START 0x8000
418 #define LDID_ASSIGN_END 0xbfff
420 #define LDID_NULL 0
421 #define LDID_ABSOLUTE ((UINT)-1)
422 #define LDID_SRCPATH 1 /* setup source path */
423 #define LDID_SETUPTEMP 2 /* setup temp dir */
424 #define LDID_UNINSTALL 3 /* uninstall dir */
425 #define LDID_BACKUP 4 /* backup dir */
426 #define LDID_SETUPSCRATCH 5 /* setup scratch dir */
427 #define LDID_WIN 10 /* win dir */
428 #define LDID_SYS 11 /* win system dir */
429 #define LDID_IOS 12 /* win Iosubsys dir */
430 #define LDID_CMD 13 /* win command dir */
431 #define LDID_CPL 14 /* win control panel dir */
432 #define LDID_PRINT 15 /* win printer dir */
433 #define LDID_MAIL 16 /* win mail dir */
434 #define LDID_INF 17 /* win inf dir */
435 #define LDID_HELP 18 /* win help dir */
436 #define LDID_WINADMIN 19 /* admin dir */
437 #define LDID_FONTS 20 /* win fonts dir */
438 #define LDID_VIEWERS 21 /* win viewers dir */
439 #define LDID_VMM32 22 /* win VMM32 dir */
440 #define LDID_COLOR 23 /* win color mngment dir */
441 #define LDID_APPS 24 /* win apps dir */
442 #define LDID_SHARED 25 /* win shared dir */
443 #define LDID_WINBOOT 26 /* guaranteed win boot drive */
444 #define LDID_MACHINE 27 /* machine specific files */
445 #define LDID_HOST_WINBOOT 28
446 #define LDID_BOOT 30 /* boot drive root dir */
447 #define LDID_BOOT_HOST 31 /* boot drive host root dir */
448 #define LDID_OLD_WINBOOT 32 /* root subdir */
449 #define LDID_OLD_WIN 33 /* old windows dir */
451 /* flags for GenInstall() */
452 #define GENINSTALL_DO_FILES 1
453 #define GENINSTALL_DO_INI 2
454 #define GENINSTALL_DO_REG 4
455 #define GENINSTALL_DO_INI2REG 8
456 #define GENINSTALL_DO_CFGAUTO 16
457 #define GENINSTALL_DO_LOGCONFIG 32
458 #define GENINSTALL_DO_REGSRCPATH 64
459 #define GENINSTALL_DO_PERUSER 128
461 #define GEINISTALL_DO_INIREG 14
462 #define GENINSTALL_DO_ALL 255
465 * flags for InstallHinfSection()
466 * 128 can be added, too. This means that the .inf file is provided by you
467 * instead of being a 32 bit file (i.e. Windows .inf file).
468 * In this case all files you install must be in the same dir
469 * as your .inf file on the install disk.
471 #define HOW_NEVER_REBOOT 0
472 #define HOW_ALWAYS_SILENT_REBOOT 1
473 #define HOW_ALWAYS_PROMPT_REBOOT 2
474 #define HOW_SILENT_REBOOT 3
475 #define HOW_PROMPT_REBOOT 4
477 /****** device installation stuff ******/
479 #define MAX_CLASS_NAME_LEN 32
480 #define MAX_DEVNODE_ID_LEN 256
481 #define MAX_GUID_STR 50
483 typedef struct _DEVICE_INFO
485 UINT16 cbSize;
486 struct _DEVICE_INFO *lpNextDi;
487 char szDescription[LINE_LEN];
488 DWORD dnDevnode;
489 HKEY hRegKey;
490 char szRegSubkey[MAX_DEVNODE_ID_LEN];
491 char szClassName[MAX_CLASS_NAME_LEN];
492 DWORD Flags;
493 HWND16 hwndParent;
494 /*LPDRIVER_NODE*/ LPVOID lpCompatDrvList;
495 /*LPDRIVER_NODE*/ LPVOID lpClassDrvList;
496 /*LPDRIVER_NODE*/ LPVOID lpSelectedDriver;
497 ATOM atDriverPath;
498 ATOM atTempInfFile;
499 HINSTANCE16 hinstClassInstaller;
500 HINSTANCE16 hinstClassPropProvidor;
501 HINSTANCE16 hinstDevicePropProvidor;
502 HINSTANCE16 hinstBasicPropProvidor;
503 FARPROC16 fpClassInstaller;
504 FARPROC16 fpClassEnumPropPages;
505 FARPROC16 fpDeviceEnumPropPages;
506 FARPROC16 fpEnumBasicProperties;
507 DWORD dwSetupReserved;
508 DWORD dwClassInstallReserved;
509 /*GENCALLBACKPROC*/ LPVOID gicpGenInstallCallBack;
511 LPARAM gicplParam;
512 UINT16 InfType;
514 HINSTANCE16 hinstPrivateProblemHandler;
515 FARPROC16 fpPrivateProblemHandler;
516 LPARAM lpClassInstallParams;
517 struct _DEVICE_INFO *lpdiChildList;
518 DWORD dwFlagsEx;
519 /*LPDRIVER_INFO*/ LPVOID lpCompatDrvInfoList;
520 /*LPDRIVER_INFO*/ LPVOID lpClassDrvInfoList;
521 char szClassGUID[MAX_GUID_STR];
522 } DEVICE_INFO16, *LPDEVICE_INFO16, **LPLPDEVICE_INFO16;
525 extern void WINAPI GenFormStrWithoutPlaceHolders16(LPSTR,LPCSTR,HINF16);
526 extern RETERR16 WINAPI IpOpen16(LPCSTR,HINF16 *);
527 extern RETERR16 WINAPI IpClose16(HINF16);
528 extern RETERR16 WINAPI CtlSetLdd16(LPLOGDISKDESC);
529 extern RETERR16 WINAPI CtlGetLdd16(LPLOGDISKDESC);
530 extern RETERR16 WINAPI CtlFindLdd16(LPLOGDISKDESC);
531 extern RETERR16 WINAPI CtlAddLdd16(LPLOGDISKDESC);
532 extern RETERR16 WINAPI CtlDelLdd16(LOGDISKID16);
533 extern RETERR16 WINAPI CtlGetLddPath16(LOGDISKID16 ldid, LPSTR szPath);
534 extern RETERR16 WINAPI GenInstall16(HINF16,LPCSTR,WORD);
536 #endif /* __SETUPX16_H */