📄 setupx.h
字号:
ERR_TP_INVALID_REQUEST, // Multitude of sins - not necessarily terminal.
ERR_TP_INVALID_LINE // Invalid line from DELETE_LINE etc.
};
/* Data handles */
DECLARE_HANDLE(HTP);
typedef HTP FAR * LPHTP;
/* File handles */
DECLARE_HANDLE(HFN);
typedef HFN FAR * LPHFN;
typedef UINT TFLAG;
typedef UINT LINENUM, FAR * LPLINENUM;
#define MAX_REGPATH 256 // Max Registry Path Length
#define LINE_LEN 256 // BUGBUG: max line length?
#define SECTION_LEN 64 // BUGBUG: max length of a section name?
#define MAX_STRING_LEN 512 // BUGBUG: review this
/* Function prototypes */
RETERR WINAPI TpOpenFile(LPCSTR Filename, LPHFN phFile, TFLAG Flag);
RETERR WINAPI TpCloseFile(HFN hFile);
RETERR WINAPI TpOpenSection(HFN hfile, LPHTP phSection, LPCSTR Section, TFLAG flag);
RETERR WINAPI TpCloseSection(HTP Section);
RETERR WINAPI TpCommitSection(HFN hFile, HTP hSection, LPCSTR Section, TFLAG flag);
LINENUM WINAPI TpGetLine(HTP hSection, LPCSTR key, LPCSTR value, int rel, int orig, LPLINENUM lpLineNum );
LINENUM WINAPI TpGetNextLine(HTP hSection, LPCSTR key, LPCSTR value, LPLINENUM lpLineNum );
RETERR WINAPI TpInsertLine(HTP hSection, LPCSTR key, LPCSTR value, int rel, int orig, TFLAG flag);
RETERR WINAPI TpReplaceLine(HTP hSection, LPCSTR key, LPCSTR value, int rel, int orig, TFLAG flag);
RETERR WINAPI TpDeleteLine(HTP hSection, int rel, int orig,TFLAG flag);
RETERR WINAPI TpMoveLine(HTP hSection, int src_rel, int src_orig, int dest_rel, int dest_orig, TFLAG flag);
RETERR WINAPI TpGetLineContents(HTP hSection, LPSTR buffer, UINT bufsize, UINT FAR * lpActualSize,int rel, int orig, TFLAG flag);
// UINT WINAPI TpGetWindowsDirectory(LPSTR lpDest, UINT size);
// UINT WINAPI TpGetSystemDirectory(LPSTR lpDest, UINT size);
int WINAPI TpGetPrivateProfileString(LPCSTR lpszSect, LPCSTR lpszKey, LPCSTR lpszDefault, LPSTR lpszReturn, int nSize, LPCSTR lpszFile);
int WINAPI TpWritePrivateProfileString(LPCSTR lpszSect, LPCSTR lpszKey, LPCSTR lpszString, LPCSTR lpszFile);
int WINAPI TpGetProfileString(LPCSTR lpszSect, LPCSTR lpszKey, LPCSTR lpszDefault, LPSTR lpszReturn, int nSize);
BOOL WINAPI TpWriteProfileString(LPCSTR lpszSect , LPCSTR lpszKey , LPCSTR lpszString);
#endif // NOTEXTPROC
#ifndef NOGENINSTALL
/***************************************************************************/
//
// Generic Installer prototypes and definitions
//
/***************************************************************************/
enum _ERR_GENERIC
{
ERR_GEN_LOW_MEM = GEN_ERROR+1, // Insufficient memory.
ERR_GEN_INVALID_FILE, // Invalid INF file.
ERR_GEN_LOGCONFIG, // Can't process LogConfig=.
ERR_GEN_CFGAUTO, // Can't process CONFIG.SYS/AUTOEXEC.BAT
ERR_GEN_UPDINI, // Can't process UpdateInis=.
ERR_GEN_UPDINIFIELDS, // Can't process UpdateIniFields=.
ERR_GEN_ADDREG, // Can't process AddReg=.
ERR_GEN_DELREG, // Can't process DelReg=.
ERR_GEN_INI2REG, // Can't process Ini2Reg=.
ERR_GEN_FILE_COPY, // Can't process CopyFiles=.
ERR_GEN_FILE_DEL, // Can't process DelFiles=.
ERR_GEN_FILE_REN, // Can't process RenFiles=.
ERR_GEN_REG_API, // Error returned by Reg API.
ERR_GEN_DO_FILES, // can't do Copy, Del or RenFiles.
ERR_GEN_ADDIME, // Can't process AddIme=.
ERR_GEN_DELIME, // Can't process DelIme=.
ERR_GEN_PERUSER, // Can't process PerUserInstall=.
ERR_GEN_BITREG, // Can't process BitReg=.
};
// The cbSize field will always be set to sizeof(GENCALLBACKINFO_S).
// All unused fields (for the operation) will be not be initialized.
// For example, when the operation is GENO_DELFILE, the Src fields will
// not have any sensible values (Dst fields will be set correctly) as
// VcpQueueDelete only accepts Dst parameters.
//
/***************************************************************************
* GenCallbackINFO structure passed to GenInstall CallBack functions.
***************************************************************************/
typedef struct _GENCALLBACKINFO_S { /* gen-callback struc */
WORD cbSize; // Size of this structure (bytes).
WORD wOperation; // Operation being performed.
LOGDISKID ldidSrc; // Logical Disk ID for Source.
LPCSTR pszSrcSubDir; // Source sub-dir off of the LDID.
LPCSTR pszSrcFileName; // Source file name (base name).
LOGDISKID ldidDst; // Logical Disk ID for Dest.
LPCSTR pszDstSubDir; // Dest. sub-dir off of the LDID.
LPCSTR pszDstFileName; // Dest. file name (base name).
LPEXPANDVTBL lpExpandVtbl; // BUGBUG needed? NULL right now!
WORD wflags; // flags for VcpQueueCopy.
LPARAM lParam; // LPARAM to the Vcp API.
} GENCALLBACKINFO_S, FAR *LPGENCALLBACKINFO;
/***************************************************************************
* GenCallback notification codes -- callback proc returns 1 of foll. values.
***************************************************************************/
#define GENN_OK 0 /* All is hunky-dory. Do the VCP operation */
#define GENN_PROCEED 0 /* The same as GENN_OK */
#define GENN_ABORT (-1) /* Cancel current GenInstall altogether */
#define GENN_SKIP (-2) /* Skip this file and continue */
/***************************************************************************
* VCP Operation being performed by GenInstall() -- wOperation values in
* GENCALLBACKINFO structure above.
***************************************************************************/
#define GENO_COPYFILE 1 /* VCP copyfile being done */
#define GENO_DELFILE 2 /* VCP delfile being done */
#define GENO_RENFILE 3 /* VCP renfile being done */
#define GENO_WININITRENAME 4 /* VCP wininit rename being added */
typedef LRESULT (CALLBACK *GENCALLBACKPROC)(LPGENCALLBACKINFO lpGenInfo,
LPARAM lparamRef);
RETERR WINAPI GenInstall( HINF hinfFile, LPCSTR szInstallSection, WORD wFlags );
RETERR WINAPI GenInstallEx( HINF hInf, LPCSTR szInstallSection, WORD wFlags,
HKEY hRegKey, GENCALLBACKPROC CallbackProc,
LPARAM lparam);
RETERR WINAPI GenWinInitRename(LPCSTR szNew, LPSTR szOld, LOGDISKID ldid);
RETERR WINAPI GenCopyLogConfig2Reg(HINF hInf, HKEY hRegKey,
LPCSTR szLogConfigSection);
void WINAPI GenFormStrWithoutPlaceHolders( LPSTR szDst, LPCSTR szSrc,
HINF hInf ) ;
RETERR WINAPI GenInitSrcPathsInReg(HINF hInf);
// Flags for GenAddReg() from INf /GenSURegSetValueEx()
//
// (updated from setupapi.h, with unsupported features commented out)
//
#define FLG_ADDREG_BINVALUETYPE ( 0x00000001 )
#define FLG_ADDREG_NOCLOBBER ( 0x00000002 )
#define FLG_ADDREG_DELVAL ( 0x00000004 )
//#define FLG_ADDREG_APPEND ( 0x00000008 ) // Currently supported only
// // for REG_MULTI_SZ values.
#define FLG_ADDREG_KEYONLY ( 0x00000010 ) // Just create the key, ignore value
#define FLG_ADDREG_OVERWRITEONLY ( 0x00000020 ) // Set only if value already exists
#define FLG_ADDREG_TYPE_REPLACEIFEXISTS ( 0x00000040 )
#define FLG_ADDREG_TYPE_MASK ( 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE )
#define FLG_ADDREG_TYPE_SZ ( 0x00000000 )
//#define FLG_ADDREG_TYPE_MULTI_SZ ( 0x00010000 )
//#define FLG_ADDREG_TYPE_EXPAND_SZ ( 0x00020000 )
#define FLG_ADDREG_TYPE_BINARY ( 0x00000000 | FLG_ADDREG_BINVALUETYPE )
#define FLG_ADDREG_TYPE_DWORD ( 0x00010000 | FLG_ADDREG_BINVALUETYPE )
//#define FLG_ADDREG_TYPE_NONE ( 0x00020000 | FLG_ADDREG_BINVALUETYPE )
// Flags for GenBitReg()
//
#define FLG_BITREG_CLEAR ( 0x00000000 )
#define FLG_BITREG_SET ( 0x00000001 )
#define FLG_BITREG_TYPE_BINARY ( 0x00000000 )
#define FLG_BITREG_TYPE_DWORD ( 0x00000002 )
RETERR WINAPI GenSURegSetValueEx(HKEY hkeyRoot, LPCSTR szSubKey,
LPCSTR lpszValueName, DWORD dwValType,
LPBYTE lpszValue, DWORD dwValSize, UINT uFlags );
// A devnode is just a DWORD and this is easier than
// having to include configmg.h for everybody
RETERR WINAPI GenInfLCToDevNode(ATOM atInfFileName, LPSTR lpszSectionName,
BOOL bInstallSec, UINT InfType,
DWORD dnDevNode);
// Bit fields for GenInstall() (for wFlags parameter) -- these can be OR-ed!
#define GENINSTALL_DO_REGSRCPATH 64
// Remove temporarily because of incompatibilities with INET16.DLL #define GENINSTALL_DO_FILES (1 | GENINSTALL_DO_REGSRCPATH)
#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
//
// careful: 64 is already used above
//
#define GENINSTALL_DO_IME 128
#define GENINSTALL_DO_PERUSER 256
#define GENINSTALL_DO_UNDO 512
#define GENINSTALL_DO_INIREG (GENINSTALL_DO_INI | \
GENINSTALL_DO_REG | \
GENINSTALL_DO_INI2REG)
#define GENINSTALL_DO_ALL (GENINSTALL_DO_FILES | \
GENINSTALL_DO_INIREG | \
GENINSTALL_DO_CFGAUTO | \
GENINSTALL_DO_LOGCONFIG | \
GENINSTALL_DO_REGSRCPATH | \
GENINSTALL_DO_IME | \
GENINSTALL_DO_PERUSER)
#endif // NOGENINSTALL
#ifndef NODEVICENSTALL
/***************************************************************************/
//
// Device Installer prototypes and definitions
//
/***************************************************************************/
/*******************************************************************************
* AUTODOC
* @doc EXTERNAL SETUPX DEVICE_INSTALLER
*
* @typee _ERR_DEVICE_INSTALL | Error return codes for Device Installation
* APIs.
*
* @emem ERR_DI_INVALID_DEVICE_ID | Incorrectly formed device ID.
*
* @emem ERR_DI_INVALID_COMPATIBLE_DEVICE_LIST | Invalid compatible device list.
*
* @emem ERR_DI_REG_API | Error returned by one of the registry API.
*
* @emem ERR_DI_LOW_MEM | Insufficient memory to complete.
*
* @emem ERR_DI_BAD_DEV_INFO | A passed in DEVICE_INFO struct is invalid.
*
* @emem ERR_DI_INVALID_CLASS_INSTALLER | The class installer is listed incorrecrly
* in the registry, or points to an invalid class installer.
*
* @emem ERR_DI_DO_DEFAULT | Do the default action for the requested operation.
*
* @emem ERR_DI_USER_CANCEL | The user cancelled the operation.
*
* @emem ERR_DI_NOFILECOPY | No need to copy files (in install).
*
* @emem ERR_DI_BAD_CLASS_INFO | A passed in CLASS_INFO struct is invalid.
*
* @emem ERR_DI_BAD_INF | An invalid INF file was encountered.
*
* @emem ERR_DI_BAD_MOVEDEV_PARAMS | A passed in MOVEDEVICE_PARAMS struct was
* invalid.
*
* @emem ERR_DI_NO_INF | No INF found on supplied OEM path.
*
* @emem ERR_DI_BAD_PROPCHANGE_PARAMS | A passed in PROPCHANGE_PARMS struct was
* invalid.
*
* @emem ERR_DI_BAD_SELECTDEVICE_PARAMS | A passed in SELECTEDEVICE_PARAMS struct
* was invalid.
*
* @emem ERR_DI_BAD_REMOVEDEVICE_PARAMS | A passed in REMOVEDEVICE_PARAMS struct
* was invalid.
*
* @emem ERR_DI_BAD_UNREMOVEDEVICE_PARAMS | A passed in UNREMOVEDEVICE_PARAMS struct
* was invalid.
*
* @emem ERR_DI_BAD_ENABLECLASS_PARAMS | A passed in ENABLECLASS_PARAMS struct
* was invalid.
*
* @emem ERR_DI_FAIL_QUERY | The queried action should not take place.
*
* @emem ERR_DI_API_ERROR | One of the Device installation APIs was called
* incorrectly or with invalid parameters.
*
* @emem ERR_DI_BAD_PATH | An OEM path was specified incorrectly.
*
* @emem ERR_DI_NOUPDATE | No Drivers Were updated
*
* @emem ERR_DI_NODATE | A driver's date/time stamp in the INF could not be found
*
* @emem ERR_DI_NOVERSION | A driver's version the INF could not be found
*
*
*******************************************************************************/
enum _ERR_DEVICE_INSTALL
{
ERR_DI_INVALID_DEVICE_ID = DI_ERROR, // Incorrectly formed device IDF
ERR_DI_INVALID_COMPATIBLE_DEVICE_LIST, // Invalid compatible device list
ERR_DI_REG_API, // Error returned by Reg API.
ERR_DI_LOW_MEM, // Insufficient memory to complete
ERR_DI_BAD_DEV_INFO, // Device Info struct invalid
ERR_DI_INVALID_CLASS_INSTALLER, // Registry entry / DLL invalid
ERR_DI_DO_DEFAULT, // Take default action
ERR_DI_USER_CANCEL, // the user cancelled the operation
ERR_DI_NOFILECOPY, // No need to copy files (in install)
ERR_DI_BAD_CLASS_INFO, // Class Info Struct invalid
ERR_DI_BAD_INF, // Bad INF file encountered
ERR_DI_BAD_MOVEDEV_PARAMS, // Bad Move Device Params struct
ERR_DI_NO_INF, // No INF found on OEM disk
ERR_DI_BAD_PROPCHANGE_PARAMS, // Bad property change param struct
ERR_DI_BAD_SELECTDEVICE_PARAMS, // Bad Select Device Parameters
ERR_DI_BAD_REMOVEDEVICE_PARAMS, // Bad Remove Device Parameters
ERR_DI_BAD_ENABLECLASS_PARAMS, // Bad Enable Class Parameters
ERR_DI_FAIL_QUERY, // Fail the Enable Class query
ERR_DI_API_ERROR, // DI API called incorrectly
ERR_DI_BAD_PATH, // An OEM path was specified incorrectly
ERR_DI_BAD_UNREMOVEDEVICE_PARAMS, // Bad Unremove Device Parameters
ERR_DI_NOUPDATE, // No Drivers Were updated
ERR_DI_NODATE, // The driver does not have a Date stamp in the INF
ERR_DI_NOVERSION, // There is not version string in the INF
ERR_DI_DONT_INSTALL, // Don't upgrade the current driver
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -