| /* | |
| * Copyright 2000 Andreas Mohr for CodeWeavers | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #ifndef __SETUPX16_H | |
| #define __SETUPX16_H | |
| #include "wine/windef16.h" | |
| typedef UINT16 DI_FUNCTION16; | |
| typedef UINT16 HINF16; | |
| typedef UINT16 LOGDISKID16; | |
| typedef UINT16 VHSTR; | |
| #define LINE_LEN 256 | |
| /* error codes stuff */ | |
| typedef UINT16 RETERR16; | |
| #define OK 0 | |
| #define IP_ERROR (UINT16)100 | |
| #define TP_ERROR (UINT16)200 | |
| #define VCP_ERROR (UINT16)300 | |
| #define GEN_ERROR (UINT16)400 | |
| #define DI_ERROR (UINT16)500 | |
| enum { | |
| ERR_IP_INVALID_FILENAME = IP_ERROR+1, | |
| ERR_IP_ALLOC_ERR, | |
| ERR_IP_INVALID_SECT_NAME, | |
| ERR_IP_OUT_OF_HANDLES, | |
| ERR_IP_INF_NOT_FOUND, | |
| ERR_IP_INVALID_INFFILE, | |
| ERR_IP_INVALID_HINF, | |
| ERR_IP_INVALID_FIELD, | |
| ERR_IP_SECT_NOT_FOUND, | |
| ERR_IP_END_OF_SECTION, | |
| ERR_IP_PROFILE_NOT_FOUND, | |
| ERR_IP_LINE_NOT_FOUND, | |
| ERR_IP_FILEREAD, | |
| ERR_IP_TOOMANYINFFILES, | |
| ERR_IP_INVALID_SAVERESTORE, | |
| ERR_IP_INVALID_INFTYPE | |
| }; | |
| /****** virtual copy operations ******/ | |
| typedef DWORD LPEXPANDVTBL; | |
| typedef struct { | |
| DWORD dwSoFar; | |
| DWORD dwTotal; | |
| } VCPPROGRESS, *LPVCPPROGRESS; | |
| typedef struct { | |
| WORD cbSize; | |
| LOGDISKID16 ldid; | |
| VHSTR vhstrRoot; | |
| VHSTR vhstrVolumeLabel; | |
| VHSTR vhstrDiskName; | |
| WORD wVolumeTime; | |
| WORD wVolumeDate; | |
| DWORD dwSerialNumber; | |
| WORD fl; | |
| LPARAM lparamRef; | |
| VCPPROGRESS prgFileRead; | |
| VCPPROGRESS prgByteRead; | |
| VCPPROGRESS prgFileWrite; | |
| VCPPROGRESS prgByteWrite; | |
| } VCPDISKINFO, *LPVCPDISKINFO; | |
| typedef struct { | |
| LOGDISKID16 ldid; | |
| VHSTR vhstrDir; | |
| VHSTR vhstrFileName; | |
| } VCPFILESPEC, *LPVCPFILESPEC; | |
| typedef struct { | |
| UINT16 uiMDate; | |
| UINT16 uiMTime; | |
| UINT16 uiADate; | |
| UINT16 uiATime; | |
| UINT16 uiAttr; | |
| DWORD llenIn; | |
| DWORD llenOut; | |
| } VCPFATTR, *LPVCPFATTR; | |
| typedef struct { | |
| UINT16 uDate; | |
| UINT16 uTime; | |
| DWORD dwSize; | |
| } VCPFILESTAT, *LPVCPFILESTAT; | |
| typedef struct | |
| { | |
| HFILE16 hFileSrc; | |
| HFILE16 hFileDst; | |
| VCPFATTR fAttr; | |
| WORD dosError; | |
| VHSTR vhstrFileName; | |
| WPARAM vcpm; | |
| } VIRTNODEEX, *LPVIRTNODEEX; | |
| typedef struct { | |
| WORD cbSize; | |
| VCPFILESPEC vfsSrc; | |
| VCPFILESPEC vfsDst; | |
| WORD fl; | |
| LPARAM lParam; | |
| LPEXPANDVTBL lpExpandVtbl; | |
| LPVIRTNODEEX lpvnex; | |
| VHSTR vhstrDstFinalName; | |
| VCPFILESTAT vFileStat; | |
| } VIRTNODE, *LPVIRTNODE; | |
| typedef struct { | |
| WORD cbSize; | |
| VCPPROGRESS prgDiskRead; | |
| VCPPROGRESS prgFileRead; | |
| VCPPROGRESS prgByteRead; | |
| VCPPROGRESS prgDiskWrite; | |
| VCPPROGRESS prgFileWrite; | |
| VCPPROGRESS prgByteWrite; | |
| LPVCPDISKINFO lpvdiIn; | |
| LPVCPDISKINFO lpvdiOut; | |
| LPVIRTNODE lpvn; | |
| } VCPSTATUS, *LPVCPSTATUS; | |
| #define CNFL_BACKUP 0x0001 | |
| #define CNFL_DELETEONFAILURE 0x0002 | |
| #define CNFL_RENAMEONSUCCESS 0x0004 | |
| #define CNFL_CONTINUATION 0x0008 | |
| #define CNFL_SKIPPED 0x0010 | |
| #define CNFL_IGNOREERRORS 0x0020 | |
| #define CNFL_RETRYFILE 0x0040 | |
| #define CNFL_COPIED 0x0080 | |
| #define VNFL_UNIQUE 0x0000 | |
| #define VNFL_MULTIPLEOK 0x0100 | |
| #define VNFL_DESTROYOLD 0x0200 | |
| #define VNFL_COPY 0x0000 | |
| #define VNFL_DELETE 0x0800 | |
| #define VNFL_RENAME 0x1000 | |
| #define VNFL_NODE_TYPE (VNFL_RENAME|VNFL_DELETE|VNFL_COPY) | |
| #define VNFL_CREATED 0x2000 | |
| #define VNFL_REJECTED 0x4000 | |
| #define VNFL_DEVICEINSTALLER 0x8000 | |
| enum { | |
| ERR_VCP_IOFAIL = VCP_ERROR+1, | |
| ERR_VCP_STRINGTOOLONG, | |
| ERR_VCP_NOMEM, | |
| ERR_VCP_QUEUEFULL, | |
| ERR_VCP_NOVHSTR, | |
| ERR_VCP_OVERFLOW, | |
| ERR_VCP_BADARG, | |
| ERR_VCP_UNINIT, | |
| ERR_VCP_NOTFOUND, | |
| ERR_VCP_BUSY, | |
| ERR_VCP_INTERRUPTED, | |
| ERR_VCP_BADDEST, | |
| ERR_VCP_SKIPPED, | |
| ERR_VCP_IO, | |
| ERR_VCP_LOCKED, | |
| ERR_VCP_WRONGDISK, | |
| ERR_VCP_CHANGEMODE, | |
| ERR_VCP_LDDINVALID, | |
| ERR_VCP_LDDFIND, | |
| ERR_VCP_LDDUNINIT, | |
| ERR_VCP_LDDPATH_INVALID, | |
| ERR_VCP_NOEXPANSION, | |
| ERR_VCP_NOTOPEN, | |
| ERR_VCP_NO_DIGITAL_SIGNATURE_CATALOG, | |
| ERR_VCP_NO_DIGITAL_SIGNATURE_FILE | |
| }; | |
| #define VCPN_OK 0 | |
| #define VCPN_PROCEED 0 | |
| #define VCPN_ABORT -1 | |
| #define VCPN_RETRY -2 | |
| #define VCPN_IGNORE -3 | |
| #define VCPN_SKIP -4 | |
| #define VCPN_FORCE -5 | |
| #define VCPN_DEFER -6 | |
| #define VCPN_FAIL -7 | |
| #define VCPN_RETRYFILE -8 | |
| #define VCPFL_ABANDON 0x00 | |
| #define VCPFL_BACKUP 0x01 | |
| #define VCPFL_COPY 0x02 | |
| #define VCPFL_BACKUPANDCOPY (VCPFL_BACKUP|VCPFL_COPY) | |
| #define VCPFL_INSPECIFIEDORDER 0x04 | |
| #define VCPFL_DELETE 0x08 | |
| #define VCPFL_RENAME 0x10 | |
| #define VCPFL_ALL (VCPFL_COPY|VCPFL_DELETE|VCPFL_RENAME) | |
| #define CFNL_BACKUP 0x0001 | |
| #define CFNL_DELETEONFAILURE 0x0002 | |
| #define CFNL_RENAMEONSUCCESS 0x0004 | |
| #define CFNL_CONTINUATION 0x0008 | |
| #define CFNL_SKIPPED 0x0010 | |
| #define CFNL_IGNOREERRORS 0x0020 | |
| #define CFNL_RETRYFILE 0x0040 | |
| #define CFNL_COPIED 0x0080 | |
| #define VFNL_MULTIPLEOK 0x0100 | |
| #define VFNL_DESTROYOLD 0x0200 | |
| #define VFNL_NOW 0x0400 | |
| #define VFNL_COPY 0x0000 | |
| #define VFNL_DELETE 0x0800 | |
| #define VFNL_RENAME 0x1000 | |
| #define VFNL_CREATED 0x2000 | |
| #define VFNL_REJECTED 0x4000 | |
| #define VCPM_DISKCLASS 0x01 | |
| #define VCPM_DISKFIRST 0x0100 | |
| #define VCPM_DISKLAST 0x01ff | |
| enum { | |
| VCPM_DISKCREATEINFO = VCPM_DISKFIRST, | |
| VCPM_DISKGETINFO, | |
| VCPM_DISKDESTROYINFO, | |
| VCPM_DISKPREPINFO, | |
| VCPM_DISKENSURE, | |
| VCPM_DISKPROMPT, | |
| VCPM_DISKFORMATBEGIN, | |
| VCPM_DISKFORMATTING, | |
| VCPM_DISKFORMATEND | |
| }; | |
| #define VCPM_FILEINCLASS 0x02 | |
| #define VCPM_FILEOUTCLASS 0x03 | |
| #define VCPM_FILEFIRSTIN 0x0200 | |
| #define VCPM_FILEFIRSTOUT 0x0300 | |
| #define VCPM_FILELAST 0x03ff | |
| enum { | |
| VCPM_FILEOPENIN = VCPM_FILEFIRSTIN, | |
| VCPM_FILEGETFATTR, | |
| VCPM_FILECLOSEIN, | |
| VCPM_FILECOPY, | |
| VCPM_FILENEEDED, | |
| VCPM_FILEOPENOUT = VCPM_FILEFIRSTOUT, | |
| VCPM_FILESETFATTR, | |
| VCPM_FILECLOSEOUT, | |
| VCPM_FILEFINALIZE, | |
| VCPM_FILEDELETE, | |
| VCPM_FILERENAME | |
| }; | |
| #define VCPM_NODECLASS 0x04 | |
| #define VCPM_NODEFIRST 0x0400 | |
| #define VCPM_NODELAST 0x04ff | |
| enum { | |
| VCPM_NODECREATE = VCPM_NODEFIRST, | |
| VCPM_NODEACCEPT, | |
| VCPM_NODEREJECT, | |
| VCPM_NODEDESTROY, | |
| VCPM_NODECHANGEDESTDIR, | |
| VCPM_NODECOMPARE | |
| }; | |
| #define VCPM_TALLYCLASS 0x05 | |
| #define VCPM_TALLYFIRST 0x0500 | |
| #define VCPM_TALLYLAST 0x05ff | |
| enum { | |
| VCPM_TALLYSTART = VCPM_TALLYFIRST, | |
| VCPM_TALLYEND, | |
| VCPM_TALLYFILE, | |
| VCPM_TALLYDISK | |
| }; | |
| #define VCPM_VERCLASS 0x06 | |
| #define VCPM_VERFIRST 0x0600 | |
| #define VCPM_VERLAST 0x06ff | |
| enum { | |
| VCPM_VERCHECK = VCPM_VERFIRST, | |
| VCPM_VERCHECKDONE, | |
| VCPM_VERRESOLVECONFLICT | |
| }; | |
| #define VCPM_VSTATCLASS 0x07 | |
| #define VCPM_VSTATFIRST 0x0700 | |
| #define VCPM_VSTATLAST 0x07ff | |
| enum { | |
| VCPM_VSTATSTART = VCPM_VSTATFIRST, | |
| VCPM_VSTATEND, | |
| VCPM_VSTATREAD, | |
| VCPM_VSTATWRITE, | |
| VCPM_VSTATNEWDISK, | |
| VCPM_VSTATCLOSESTART, | |
| VCPM_VSTATCLOSEEND, | |
| VCPM_VSTATBACKUPSTART, | |
| VCPM_VSTATBACKUPEND, | |
| VCPM_VSTATRENAMESTART, | |
| VCPM_VSTATRENAMEEND, | |
| VCPM_VSTATCOPYSTART, | |
| VCPM_VSTATCOPYEND, | |
| VCPM_VSTATDELETESTART, | |
| VCPM_VSTATDELETEEND, | |
| VCPM_VSTATPATHCHECKSTART, | |
| VCPM_VSTATPATHCHECKEND, | |
| VCPM_VSTATCERTIFYSTART, | |
| VCPM_VSTATCERTIFYEND, | |
| VCPM_VSTATUSERABORT, | |
| VCPM_VSTATYIELD | |
| }; | |
| #define VCPM_PATHCLASS 0x08 | |
| #define VCPM_PATHFIRST 0x0800 | |
| #define VCPM_PATHLAST 0x08ff | |
| enum { | |
| VCPM_BUILDPATH = VCPM_PATHFIRST, | |
| VCPM_UNIQUEPATH, | |
| VCPM_CHECKPATH | |
| }; | |
| #define VCPM_PATCHCLASS 0x09 | |
| #define VCPM_PATCHFIRST 0x0900 | |
| #define VCPM_PATCHLAST 0x09ff | |
| enum { | |
| VCPM_FILEPATCHBEFORECPY = VCPM_PATCHFIRST, | |
| VCPM_FILEPATCHAFTERCPY, | |
| VCPM_FILEPATCHINFOPEN, | |
| VCPM_FILEPATCHINFCLOSE | |
| }; | |
| #define VCPM_CERTCLASS 0x0a | |
| #define VCPM_CERTFIRST 0x0a00 | |
| #define VCPM_CERTLAST 0x0aff | |
| enum { | |
| VCPM_FILECERTIFY = VCPM_CERTFIRST, | |
| VCPM_FILECERTIFYWARN | |
| }; | |
| typedef LRESULT (CALLBACK *VIFPROC)(LPVOID lpvObj, UINT16 uMsg, WPARAM wParam, LPARAM lParam, LPARAM lparamRef); | |
| typedef int (CALLBACK *VCPENUMPROC)(LPVIRTNODE lpvn, LPARAM lparamRef); | |
| RETERR16 WINAPI VcpOpen16(VIFPROC vifproc, LPARAM lparamMsgRef); | |
| /* VcpQueueCopy flags */ | |
| #define VNLP_SYSCRITICAL 0x0001 | |
| #define VNLP_SETUPCRITICAL 0x0002 | |
| #define VNLP_NOVERCHECK 0x0004 | |
| #define VNLP_FORCETEMP 0x0008 | |
| #define VNLP_IFEXISTS 0x0010 | |
| #define VNLP_KEEPNEWER 0x0020 | |
| #define VNLP_PATCHIFEXIST 0x0040 | |
| #define VNLP_NOPATCH 0x0080 | |
| #define VNLP_CATALOGCERT 0x0100 | |
| #define VNLP_NEEDCERTIFY 0x0200 | |
| #define VNLP_COPYIFEXISTS 0x0400 | |
| RETERR16 WINAPI VcpQueueCopy16( | |
| LPCSTR lpszSrcFileName, LPCSTR lpszDstFileName, | |
| LPCSTR lpszSrcDir, LPCSTR lpszDstDir, | |
| LOGDISKID16 ldidSrc, LOGDISKID16 ldidDst, | |
| LPEXPANDVTBL lpExpandVtbl, | |
| WORD fl, LPARAM lParam | |
| ); | |
| RETERR16 VcpFlush16(WORD fl, LPCSTR lpszBackupDest); | |
| RETERR16 WINAPI VcpClose16(WORD fl, LPCSTR lpszBackupDest); | |
| /* VcpExplain flags */ | |
| enum { | |
| VCPEX_SRC_DISK, | |
| VCPEX_SRC_CABINET, | |
| VCPEX_SRC_LOCN, | |
| VCPEX_DST_LOCN, | |
| VCPEX_SRC_FILE, | |
| VCPEX_DST_FILE, | |
| VCPEX_DST_FILE_FINAL, | |
| VCPEX_DOS_ERROR, | |
| VCPEX_MESSAGE, | |
| VCPEX_DOS_SOLUTION, | |
| VCPEX_SRC_FULL, | |
| VCPEX_DST_FULL, | |
| VCPEX_DST_FULL_FINAL | |
| }; | |
| LPCSTR WINAPI VcpExplain16(LPVIRTNODE lpVn, DWORD dwWhat); | |
| /****** logical disk management ******/ | |
| typedef struct _LOGDISKDESC_S { /* ldd */ | |
| WORD cbSize; /* struct size */ | |
| LOGDISKID16 ldid; /* logical disk ID */ | |
| LPSTR pszPath; /* path this descriptor points to */ | |
| LPSTR pszVolLabel; /* volume label of the disk related to it */ | |
| LPSTR pszDiskName; /* name of this disk */ | |
| WORD wVolTime; /* modification time of volume label */ | |
| WORD wVolDate; /* modification date */ | |
| DWORD dwSerNum; /* serial number of disk */ | |
| WORD wFlags; | |
| } LOGDISKDESC_S, *LPLOGDISKDESC; | |
| /** logical disk identifiers (LDID) **/ | |
| /* predefined LDIDs */ | |
| #define LDID_PREDEF_START 0x0001 | |
| #define LDID_PREDEF_END 0x7fff | |
| /* registry-assigned LDIDs */ | |
| #define LDID_VAR_START 0x7000 | |
| #define LDID_VAR_END 0x7fff | |
| /* dynamically assigned LDIDs */ | |
| #define LDID_ASSIGN_START 0x8000 | |
| #define LDID_ASSIGN_END 0xbfff | |
| #define LDID_NULL 0 | |
| #define LDID_ABSOLUTE ((UINT)-1) | |
| #define LDID_SRCPATH 1 /* setup source path */ | |
| #define LDID_SETUPTEMP 2 /* setup temp dir */ | |
| #define LDID_UNINSTALL 3 /* uninstall dir */ | |
| #define LDID_BACKUP 4 /* backup dir */ | |
| #define LDID_SETUPSCRATCH 5 /* setup scratch dir */ | |
| #define LDID_WIN 10 /* win dir */ | |
| #define LDID_SYS 11 /* win system dir */ | |
| #define LDID_IOS 12 /* win Iosubsys dir */ | |
| #define LDID_CMD 13 /* win command dir */ | |
| #define LDID_CPL 14 /* win control panel dir */ | |
| #define LDID_PRINT 15 /* win printer dir */ | |
| #define LDID_MAIL 16 /* win mail dir */ | |
| #define LDID_INF 17 /* win inf dir */ | |
| #define LDID_HELP 18 /* win help dir */ | |
| #define LDID_WINADMIN 19 /* admin dir */ | |
| #define LDID_FONTS 20 /* win fonts dir */ | |
| #define LDID_VIEWERS 21 /* win viewers dir */ | |
| #define LDID_VMM32 22 /* win VMM32 dir */ | |
| #define LDID_COLOR 23 /* win color mngment dir */ | |
| #define LDID_APPS 24 /* win apps dir */ | |
| #define LDID_SHARED 25 /* win shared dir */ | |
| #define LDID_WINBOOT 26 /* guaranteed win boot drive */ | |
| #define LDID_MACHINE 27 /* machine specific files */ | |
| #define LDID_HOST_WINBOOT 28 | |
| #define LDID_BOOT 30 /* boot drive root dir */ | |
| #define LDID_BOOT_HOST 31 /* boot drive host root dir */ | |
| #define LDID_OLD_WINBOOT 32 /* root subdir */ | |
| #define LDID_OLD_WIN 33 /* old windows dir */ | |
| /* flags for GenInstall() */ | |
| #define GENINSTALL_DO_FILES 1 | |
| #define GENINSTALL_DO_INI 2 | |
| #define GENINSTALL_DO_REG 4 | |
| #define GENINSTALL_DO_INI2REG 8 | |
| #define GENINSTALL_DO_CFGAUTO 16 | |
| #define GENINSTALL_DO_LOGCONFIG 32 | |
| #define GENINSTALL_DO_REGSRCPATH 64 | |
| #define GENINSTALL_DO_PERUSER 128 | |
| #define GEINISTALL_DO_INIREG 14 | |
| #define GENINSTALL_DO_ALL 255 | |
| /* | |
| * flags for InstallHinfSection() | |
| * 128 can be added, too. This means that the .inf file is provided by you | |
| * instead of being a 32 bit file (i.e. Windows .inf file). | |
| * In this case all files you install must be in the same dir | |
| * as your .inf file on the install disk. | |
| */ | |
| #define HOW_NEVER_REBOOT 0 | |
| #define HOW_ALWAYS_SILENT_REBOOT 1 | |
| #define HOW_ALWAYS_PROMPT_REBOOT 2 | |
| #define HOW_SILENT_REBOOT 3 | |
| #define HOW_PROMPT_REBOOT 4 | |
| /****** device installation stuff ******/ | |
| #define MAX_CLASS_NAME_LEN 32 | |
| #define MAX_DEVNODE_ID_LEN 256 | |
| #define MAX_GUID_STR 50 | |
| typedef struct _DEVICE_INFO | |
| { | |
| UINT16 cbSize; | |
| struct _DEVICE_INFO *lpNextDi; | |
| char szDescription[LINE_LEN]; | |
| DWORD dnDevnode; | |
| HKEY hRegKey; | |
| char szRegSubkey[MAX_DEVNODE_ID_LEN]; | |
| char szClassName[MAX_CLASS_NAME_LEN]; | |
| DWORD Flags; | |
| HWND16 hwndParent; | |
| /*LPDRIVER_NODE*/ LPVOID lpCompatDrvList; | |
| /*LPDRIVER_NODE*/ LPVOID lpClassDrvList; | |
| /*LPDRIVER_NODE*/ LPVOID lpSelectedDriver; | |
| ATOM atDriverPath; | |
| ATOM atTempInfFile; | |
| HINSTANCE16 hinstClassInstaller; | |
| HINSTANCE16 hinstClassPropProvidor; | |
| HINSTANCE16 hinstDevicePropProvidor; | |
| HINSTANCE16 hinstBasicPropProvidor; | |
| FARPROC16 fpClassInstaller; | |
| FARPROC16 fpClassEnumPropPages; | |
| FARPROC16 fpDeviceEnumPropPages; | |
| FARPROC16 fpEnumBasicProperties; | |
| DWORD dwSetupReserved; | |
| DWORD dwClassInstallReserved; | |
| /*GENCALLBACKPROC*/ LPVOID gicpGenInstallCallBack; | |
| LPARAM gicplParam; | |
| UINT16 InfType; | |
| HINSTANCE16 hinstPrivateProblemHandler; | |
| FARPROC16 fpPrivateProblemHandler; | |
| LPARAM lpClassInstallParams; | |
| struct _DEVICE_INFO *lpdiChildList; | |
| DWORD dwFlagsEx; | |
| /*LPDRIVER_INFO*/ LPVOID lpCompatDrvInfoList; | |
| /*LPDRIVER_INFO*/ LPVOID lpClassDrvInfoList; | |
| char szClassGUID[MAX_GUID_STR]; | |
| } DEVICE_INFO16, *LPDEVICE_INFO16, **LPLPDEVICE_INFO16; | |
| extern void WINAPI GenFormStrWithoutPlaceHolders16(LPSTR,LPCSTR,HINF16); | |
| extern RETERR16 WINAPI IpOpen16(LPCSTR,HINF16 *); | |
| extern RETERR16 WINAPI IpClose16(HINF16); | |
| extern RETERR16 WINAPI CtlSetLdd16(LPLOGDISKDESC); | |
| extern RETERR16 WINAPI CtlGetLdd16(LPLOGDISKDESC); | |
| extern RETERR16 WINAPI CtlFindLdd16(LPLOGDISKDESC); | |
| extern RETERR16 WINAPI CtlAddLdd16(LPLOGDISKDESC); | |
| extern RETERR16 WINAPI CtlDelLdd16(LOGDISKID16); | |
| extern RETERR16 WINAPI CtlGetLddPath16(LOGDISKID16 ldid, LPSTR szPath); | |
| extern RETERR16 WINAPI GenInstall16(HINF16,LPCSTR,WORD); | |
| typedef struct tagLDD_LIST { | |
| LPLOGDISKDESC pldd; | |
| struct tagLDD_LIST *next; | |
| } LDD_LIST; | |
| #define INIT_LDD(ldd, LDID) \ | |
| do { \ | |
| memset(&(ldd), 0, sizeof(LOGDISKDESC_S)); \ | |
| (ldd).cbSize = sizeof(LOGDISKDESC_S); \ | |
| ldd.ldid = LDID; \ | |
| } while(0) | |
| #endif /* __SETUPX16_H */ |