293 lines
8.1 KiB
C
293 lines
8.1 KiB
C
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// Module Name:
|
||
|
// supplib.h
|
||
|
//
|
||
|
// Description:
|
||
|
// This file contains defs for the supplib exports, macros etc...
|
||
|
// It is included by setupmgr.h. Don't include this file directly.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#define MAX_INILINE_LEN 1024 // Buffer length for line in answer file
|
||
|
#define MAX_ININAME_LEN 127 // Max chars for [SectionName] and KeyName
|
||
|
|
||
|
//
|
||
|
// Count of chars macro
|
||
|
//
|
||
|
|
||
|
#define StrBuffSize(x) ( sizeof(x) / sizeof(TCHAR) )
|
||
|
|
||
|
//
|
||
|
// Growing list of renamed C run-time functions.
|
||
|
//
|
||
|
|
||
|
#define lstrdup _wcsdup
|
||
|
#define lstrlwr _wcslwr
|
||
|
#define lstrchr wcschr
|
||
|
#define lstrncmp wcsncmp
|
||
|
#define lsprintf _stprintf
|
||
|
|
||
|
//
|
||
|
// settngs.c
|
||
|
//
|
||
|
// The below routines are how setupmgr writes out it's settings to the
|
||
|
// answer file, the udf, etc.
|
||
|
//
|
||
|
// We queue up what to write to these files, and when all settings have
|
||
|
// been queued, we flush it to disk. See supplib\settngs.c for details.
|
||
|
//
|
||
|
|
||
|
typedef enum {
|
||
|
|
||
|
SETTING_QUEUE_ANSWERS,
|
||
|
SETTING_QUEUE_UDF,
|
||
|
SETTING_QUEUE_ORIG_ANSWERS,
|
||
|
SETTING_QUEUE_ORIG_UDF,
|
||
|
SETTING_QUEUE_TXTSETUP_OEM
|
||
|
|
||
|
} QUEUENUM;
|
||
|
|
||
|
BOOL SettingQueue_AddSetting(LPTSTR lpSection,
|
||
|
LPTSTR lpKey,
|
||
|
LPTSTR lpValue,
|
||
|
QUEUENUM dwWhichQueue);
|
||
|
|
||
|
VOID SettingQueue_MarkVolatile(LPTSTR lpSection,
|
||
|
QUEUENUM dwWhichQueue);
|
||
|
|
||
|
VOID SettingQueue_Empty(QUEUENUM dwWhichQueue);
|
||
|
|
||
|
BOOL SettingQueue_Flush(LPTSTR lpFileName,
|
||
|
QUEUENUM dwWhichQueue);
|
||
|
|
||
|
VOID SettingQueue_Copy(QUEUENUM dwFrom, QUEUENUM dwTo);
|
||
|
|
||
|
VOID SettingQueue_RemoveSection( LPTSTR lpSection, QUEUENUM dwWhichQueue );
|
||
|
|
||
|
VOID
|
||
|
LoadOriginalSettingsLow(HWND hwnd,
|
||
|
LPTSTR lpFileName,
|
||
|
QUEUENUM dwWhichQueue);
|
||
|
|
||
|
//
|
||
|
// namelist.c
|
||
|
//
|
||
|
// Struct that stores "name lists". These are useful for arbitrary
|
||
|
// length listboxes such as "computername" and "printers" dialog.
|
||
|
//
|
||
|
// Any NAMELIST declared must be initialized to { 0 } before use.
|
||
|
//
|
||
|
|
||
|
typedef struct {
|
||
|
UINT AllocedSize; // private: how big is *Names? (malloced size)
|
||
|
UINT nEntries; // private: how many entries
|
||
|
TCHAR **Names; // private: list of names
|
||
|
} NAMELIST, *PNAMELIST;
|
||
|
|
||
|
EXTERN_C VOID ResetNameList(NAMELIST *pNameList);
|
||
|
EXTERN_C UINT GetNameListSize(NAMELIST *pNameList);
|
||
|
EXTERN_C TCHAR *GetNameListName(NAMELIST *pNameList, UINT idx);
|
||
|
EXTERN_C BOOL RemoveNameFromNameList(NAMELIST *pNameList, TCHAR *NameToRemove);
|
||
|
EXTERN_C VOID RemoveNameFromNameListIdx(NAMELIST *pNameList, UINT idx);
|
||
|
EXTERN_C INT FindNameInNameList(NAMELIST *pNameList, TCHAR *String);
|
||
|
EXTERN_C BOOL AddNameToNameList(NAMELIST *pNameList, TCHAR *String);
|
||
|
EXTERN_C BOOL AddNameToNameListIdx(NAMELIST *pNameList,
|
||
|
TCHAR *String,
|
||
|
UINT idx);
|
||
|
EXTERN_C BOOL AddNameToNameListNoDuplicates( NAMELIST *pNameList,
|
||
|
TCHAR *String );
|
||
|
|
||
|
//
|
||
|
// exports from fonts.c
|
||
|
//
|
||
|
|
||
|
VOID SetControlFont(
|
||
|
IN HFONT hFont,
|
||
|
IN HWND hwnd,
|
||
|
IN INT nId);
|
||
|
|
||
|
VOID SetupFonts(
|
||
|
IN HINSTANCE hInstance,
|
||
|
IN HWND hwnd,
|
||
|
IN HFONT *pBigBoldFont,
|
||
|
IN HFONT *pBoldFont);
|
||
|
|
||
|
VOID DestroyFonts(
|
||
|
IN HFONT hBigBoldFont,
|
||
|
IN HFONT hBoldFont);
|
||
|
|
||
|
|
||
|
//
|
||
|
// exports from msg.c
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// Assert macros. Pass only ANSI strings (no unicode).
|
||
|
//
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
EXTERN_C VOID __cdecl SetupMgrAssert(char *pszFile, int iLine, char *pszFormat, ...);
|
||
|
|
||
|
#define Assert( exp ) \
|
||
|
if (!(exp)) \
|
||
|
SetupMgrAssert( __FILE__ , __LINE__ , #exp )
|
||
|
|
||
|
#define AssertMsg( exp, msg ) \
|
||
|
if (!(exp)) \
|
||
|
SetupMgrAssert( __FILE__ , __LINE__ , msg )
|
||
|
|
||
|
#define AssertMsg1( exp, msg, a1 ) \
|
||
|
if (!(exp)) \
|
||
|
SetupMgrAssert( __FILE__ , __LINE__ , msg, a1 )
|
||
|
|
||
|
#define AssertMsg2( exp, msg, a1, a2 ) \
|
||
|
if (!(exp)) \
|
||
|
SetupMgrAssert( __FILE__ , __LINE__ , msg, a1, a2 )
|
||
|
|
||
|
#else
|
||
|
#define Assert( exp )
|
||
|
#define AssertMsg( exp, msg )
|
||
|
#define AssertMsg1( exp, msg, a1 )
|
||
|
#define AssertMsg2( exp, msg, a1, a2 )
|
||
|
#endif // DBG
|
||
|
|
||
|
|
||
|
//
|
||
|
// Bit-flags for ReportError()
|
||
|
//
|
||
|
// Choose either:
|
||
|
// MSGTYPE_ERR
|
||
|
// MSGTYPE_WARN
|
||
|
// MSGTYPE_YESNO
|
||
|
// MSGTYPE_RETRYCANCEL
|
||
|
//
|
||
|
// These can be or'red in at will:
|
||
|
// MSGTYPE_WIN32
|
||
|
//
|
||
|
// Notes:
|
||
|
// - Don't fiddle with the actual values of these constants unless
|
||
|
// you fiddle with the ReportError() function as well.
|
||
|
//
|
||
|
// - 8 bits are reserved for the "MajorType". Callers don't need to
|
||
|
// worry about this. If you're enhancing ReportError(), you do need
|
||
|
// to worry about this.
|
||
|
//
|
||
|
|
||
|
#define MSGTYPE_ERR 0x01 // error icon + ok button
|
||
|
#define MSGTYPE_WARN 0x02 // warning icon + ok button
|
||
|
#define MSGTYPE_YESNO 0x04 // question icon + yes & no buttons
|
||
|
#define MSGTYPE_RETRYCANCEL 0x08 // erro icon + retry & cancel buttons
|
||
|
|
||
|
#define MSGTYPE_WIN32 0x100 // also report Win32 error msg
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
ReportError(
|
||
|
HWND hwnd, // calling window
|
||
|
DWORD dwMsgType, // combo of MSGTYPE_*
|
||
|
LPTSTR lpMessageStr, // passed to sprintf
|
||
|
...);
|
||
|
|
||
|
#endif // DBG
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
ReportErrorId(
|
||
|
HWND hwnd, // calling window
|
||
|
DWORD dwMsgType, // combo of MSGTYPE_*
|
||
|
UINT StringId, // resource id, passed to sprintf
|
||
|
...);
|
||
|
|
||
|
|
||
|
//
|
||
|
// exports from pathsup.c
|
||
|
//
|
||
|
|
||
|
EXTERN_C BOOL __cdecl ConcatenatePaths(LPTSTR lpBuffer, ...);
|
||
|
LPTSTR ParseDriveLetterOrUnc(LPTSTR lpFileName);
|
||
|
LPTSTR MyGetFullPath(LPTSTR lpFileName);
|
||
|
VOID GetComputerNameFromUnc( IN TCHAR *szFullUncPath, OUT TCHAR *szComputerName, IN DWORD cbSize );
|
||
|
BOOL GetPathFromPathAndFilename( IN LPTSTR lpPathAndFileName, OUT TCHAR *szPath, IN DWORD cbSize );
|
||
|
LONGLONG MyGetDiskFreeSpace(LPTSTR Drive);
|
||
|
LONGLONG MySetupQuerySpaceRequiredOnDrive(HDSKSPC hDiskSpace, LPTSTR Drive);
|
||
|
BOOL IsPathOnLocalDiskDrive(LPCTSTR lpPath);
|
||
|
BOOL DoesFolderExist(LPTSTR lpFolder);
|
||
|
BOOL DoesFileExist(LPTSTR lpFileName);
|
||
|
BOOL DoesPathExist(LPTSTR lpPathName);
|
||
|
BOOL EnsureDirExists(LPTSTR lpDirName);
|
||
|
VOID ILFreePriv(LPITEMIDLIST pidl);
|
||
|
BOOL GetAnswerFileName(HWND hwnd, LPTSTR lpFileName, BOOL bSavingFile);
|
||
|
INT ShowBrowseFolder( IN HWND hwnd,
|
||
|
IN TCHAR *szFileFilter,
|
||
|
IN TCHAR *szFileExtension,
|
||
|
IN DWORD dwFlags,
|
||
|
IN TCHAR *szStartingPath,
|
||
|
IN OUT TCHAR *szFileNameAndPath );
|
||
|
VOID GetPlatform( OUT TCHAR *pBuffer );
|
||
|
|
||
|
//
|
||
|
// exports from chknames.c
|
||
|
//
|
||
|
|
||
|
BOOL IsNetNameValid( LPTSTR NameToCheck );
|
||
|
BOOL IsValidComputerName( LPTSTR ComputerName );
|
||
|
BOOL IsValidNetShareName( LPTSTR NetShareName );
|
||
|
BOOL IsValidFileName8_3( LPTSTR FileName );
|
||
|
BOOL IsValidPathNameNoRoot8_3( LPTSTR PathName );
|
||
|
|
||
|
//
|
||
|
// string.c
|
||
|
//
|
||
|
|
||
|
LPTSTR MyLoadString(IN UINT StringId);
|
||
|
LPTSTR CleanLeadSpace(LPTSTR Buffer);
|
||
|
VOID CleanTrailingSpace(TCHAR *pszBuffer);
|
||
|
LPTSTR CleanSpaceAndQuotes(LPTSTR Buffer);
|
||
|
VOID ConvertQuestionsToNull( IN OUT TCHAR *pszString );
|
||
|
EXTERN_C TCHAR* lstrcatn( IN TCHAR *pszString1, IN const TCHAR *pszString2, IN INT iMaxLength );
|
||
|
VOID DoubleNullStringToNameList( TCHAR *szDoubleNullString, NAMELIST *pNameList );
|
||
|
EXTERN_C BOOL GetCommaDelimitedEntry( OUT TCHAR szIPString[], IN OUT TCHAR **pBuffer );
|
||
|
VOID StripQuotes( IN OUT TCHAR *);
|
||
|
BOOL DoesContainWhiteSpace( LPCTSTR p );
|
||
|
|
||
|
|
||
|
//
|
||
|
// Exports from & macros for fileio.c
|
||
|
//
|
||
|
|
||
|
FILE* My_fopen( LPWSTR FileName,
|
||
|
LPWSTR Mode );
|
||
|
|
||
|
int My_fputs( LPWSTR Buffer,
|
||
|
FILE* fp );
|
||
|
|
||
|
LPWSTR My_fgets( LPWSTR Buffer,
|
||
|
int MaxChars,
|
||
|
FILE* fp );
|
||
|
|
||
|
#define My_fclose fclose
|
||
|
|
||
|
//
|
||
|
// Export from chknames.c
|
||
|
//
|
||
|
extern LPTSTR IllegalNetNameChars;
|
||
|
|
||
|
//
|
||
|
// listbox.c
|
||
|
//
|
||
|
|
||
|
VOID OnUpButtonPressed( IN HWND hwnd, IN WORD ListBoxControlID );
|
||
|
|
||
|
VOID OnDownButtonPressed( IN HWND hwnd, IN WORD ListBoxControlID );
|
||
|
|
||
|
VOID SetArrows( IN HWND hwnd,
|
||
|
IN WORD ListBoxControlID,
|
||
|
IN WORD UpButtonControlID,
|
||
|
IN WORD DownButtonControlID );
|