|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
allutils.h
Abstract:
Includes all header files necessary to use the libraries generated under the utils directory. Declares many macros and MAX constants.
Author:
Jim Schmidt (jimschm) 23-Aug-1996
Revision History:
marcw 2-Sep-1999 Ported over from win95upg project (migutil.h) Needs lots of cleanup.
--*/
#pragma once
//
// Includes
//
#include "utiltypes.h"
#include "main.h"
#include "dbgtrack.h"
#include "basemem.h"
#include "log.h"
#include "growbuf.h"
#include "strings.h"
#include "poolmem.h"
#include "growlist.h"
#include "version.h"
#include "unicode.h"
#include "hash.h"
#include "basefile.h"
#include "memdb.h"
#include "inf.h"
#include "ini.h"
#include "blobs.h"
#include "objstr.h"
#include "exclist.h"
#include "reg.h"
#include "regenum.h"
#include "fileenum.h"
#include "wnd.h"
//
// Strings
//
// None
//
// Constants
//
#define MAX_PATH_PLUS_NUL (MAX_PATH+1)
#define MAX_MBCHAR_PATH (MAX_PATH_PLUS_NUL*2)
#define MAX_WCHAR_PATH MAX_PATH_PLUS_NUL
#define MAX_MBCHAR_PRINTABLE_PATH (MAX_PATH*2)
#define MAX_WCHAR_PRINTABLE_PATH MAX_PATH
#define MAX_SERVER_NAMEA (64*2)
#define MAX_USER_NAMEA (MAX_SERVER_NAMEA + (20 * 2))
#define MAX_REGISTRY_KEYA (1024 * 2)
#define MAX_REGISTRY_VALUE_NAMEA (260 * 2)
#define MAX_COMPONENT_NAMEA (256 * 2)
#define MAX_COMPUTER_NAMEA (64 * 2)
#define MAX_CMDLINEA (1024 * 2) // maximum number of chars in a Win95 command line
#define MAX_KEYBOARDLAYOUT 64
#define MAX_INF_SECTION_NAME 128
#define MAX_INF_KEY_NAME 128
#define MAX_SERVER_NAMEW 64
#define MAX_USER_NAMEW (MAX_SERVER_NAMEW + 20)
#define MAX_REGISTRY_KEYW 1024
#define MAX_REGISTRY_VALUE_NAMEW 260
#define MAX_COMPONENT_NAMEW 256
#define MAX_COMPUTER_NAMEW 64
#define MAX_CMDLINEW 1024 // maximum number of chars in a Win95 command line
#ifdef UNICODE
#define MAX_SERVER_NAME MAX_SERVER_NAMEW
#define MAX_USER_NAME MAX_USER_NAMEW
#define MAX_REGISTRY_KEY MAX_REGISTRY_KEYW
#define MAX_REGISTRY_VALUE_NAME MAX_REGISTRY_VALUE_NAMEW
#define MAX_COMPONENT_NAME MAX_COMPONENT_NAMEW
#define MAX_COMPUTER_NAME MAX_COMPUTER_NAMEW
#define MAX_CMDLINE MAX_CMDLINEW
#define MAX_TCHAR_PATH MAX_WCHAR_PATH
#define MAX_TCHAR_PRINTABLE_PATH MAX_WCHAR_PRINTABLE_PATH
#else
#define MAX_SERVER_NAME MAX_SERVER_NAMEA
#define MAX_USER_NAME MAX_USER_NAMEA
#define MAX_REGISTRY_KEY MAX_REGISTRY_KEYA
#define MAX_REGISTRY_VALUE_NAME MAX_REGISTRY_VALUE_NAMEA
#define MAX_COMPONENT_NAME MAX_COMPONENT_NAMEA
#define MAX_COMPUTER_NAME MAX_COMPUTER_NAMEA
#define MAX_CMDLINE MAX_CMDLINEA
#define MAX_TCHAR_PATH MAX_MBCHAR_PATH
#define MAX_TCHAR_PRINTABLE_PATH MAX_MBCHAR_PRINTABLE_PATH
#endif
//
// Macros
//
//
// OSVERSION macros...
//
#define ISNT() (g_OsInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
#define ISWIN9X() (g_OsInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
#define ISWIN95_GOLDEN() (ISWIN95() && WORD(g_OsInfo.dwBuildNumber) <= 1000)
#define ISWIN95_OSR2() (ISWIN95() && WORD(g_OsInfo.dwBuildNumber) > 1000)
#define ISWIN95() (ISWIN9X() && !ISMEMPHIS())
#define ISMEMPHIS() (ISWIN9X() && g_OsInfo.dwMajorVersion==4 && g_OsInfo.dwMinorVersion==10)
#define BUILDNUMBER() (g_OsInfo.dwBuildNumber)
//
// Error condition tags.
//
// These tags should be used for all error conditions.
//
#define ERROR_CRITICAL
#define ERROR_NONCRITICAL
#define ERROR_TRIVIAL
#define ERROR_ABNORMAL_CONDITION
//
// Types
//
typedef struct { HANDLE EventHandle; } OUR_CRITICAL_SECTION, *POUR_CRITICAL_SECTION;
//
// String Mapping
//
typedef struct { BOOL UnicodeData;
//
// The filter can replace NewSubString. (The filter must also
// set NewSubStringSizeInBytes when replacing NewSubString.)
//
union { struct { PCWSTR OriginalString; PCWSTR CurrentString; PCWSTR OldSubString; PCWSTR NewSubString; INT NewSubStringSizeInBytes; } Unicode;
struct { PCSTR OriginalString; PCSTR CurrentString; PCSTR OldSubString; PCSTR NewSubString; INT NewSubStringSizeInBytes; } Ansi; }; } REG_REPLACE_DATA, *PREG_REPLACE_DATA;
typedef BOOL(REG_REPLACE_FILTER_PROTOTYPE)(PREG_REPLACE_DATA Data); typedef REG_REPLACE_FILTER_PROTOTYPE * REG_REPLACE_FILTER;
typedef struct _tagCHARNODE { WORD Char; WORD Flags; PVOID OriginalStr; PVOID ReplacementStr; INT ReplacementBytes; struct _tagCHARNODE *NextLevel; struct _tagCHARNODE *NextPeer; REG_REPLACE_FILTER Filter; } CHARNODE, *PCHARNODE;
typedef struct { PMHANDLE Pool; PCHARNODE FirstLevelRoot; } MAPSTRUCT, *PMAPSTRUCT;
//
// Globals
//
extern HINSTANCE g_hInst; extern HANDLE g_hHeap; extern OSVERSIONINFOA g_OsInfo;
extern BOOL g_IsPc98;
//
// Boot drive letter
//
extern PCSTR g_BootDrivePathA; extern PCWSTR g_BootDrivePathW; extern PCSTR g_BootDriveA; extern PCWSTR g_BootDriveW; extern CHAR g_BootDriveLetterA; extern WCHAR g_BootDriveLetterW;
//
// Macro expansion list
//
// None
//
// Public function prototypes
//
//
// Critical Section APIs, implemented because TryEnterCriticalSection is
// supported only on NT, and we need it on Win9x.
//
BOOL InitializeOurCriticalSection ( OUR_CRITICAL_SECTION *pcs );
VOID DeleteOurCriticalSection ( OUR_CRITICAL_SECTION *pcs );
BOOL EnterOurCriticalSection ( OUR_CRITICAL_SECTION *pcs );
VOID LeaveOurCriticalSection ( OUR_CRITICAL_SECTION *pcs );
BOOL TryEnterOurCriticalSection ( OUR_CRITICAL_SECTION *pcs );
//
// Includes of util modules
//
VOID CenterWindow ( HWND Wnd, HWND Parent OPTIONAL );
VOID TurnOnWaitCursor ( VOID );
VOID TurnOffWaitCursor ( VOID );
VOID OutOfMemory_Terminate ( VOID );
VOID SetOutOfMemoryParent ( HWND hwnd );
PMAPSTRUCT CreateStringMapping ( VOID );
VOID DestroyStringMapping ( IN PMAPSTRUCT Map );
VOID AddStringMappingPairExA ( IN OUT PMAPSTRUCT Map, IN PCSTR Old, IN PCSTR New, IN REG_REPLACE_FILTER Filter OPTIONAL );
#define AddStringMappingPairA(Map,Old,New) AddStringMappingPairExA(Map,Old,New,NULL)
VOID AddStringMappingPairExW ( IN OUT PMAPSTRUCT Map, IN PCWSTR Old, IN PCWSTR New, IN REG_REPLACE_FILTER Filter OPTIONAL );
#define AddStringMappingPairW(Map,Old,New) AddStringMappingPairExW(Map,Old,New,NULL)
BOOL MappingSearchAndReplaceExA ( IN PMAPSTRUCT Map, IN PCSTR SrcBuffer, OUT PSTR Buffer, // can be the same as SrcBuffer
IN INT InboundBytes, OPTIONAL OUT PINT OutboundBytes, OPTIONAL IN INT MaxSizeInBytes, IN BOOL CompleteMatchOnly );
#define MappingSearchAndReplaceA(map,buffer,maxbytes) MappingSearchAndReplaceExA(map,buffer,buffer,0,NULL,maxbytes,FALSE)
BOOL MappingSearchAndReplaceExW ( IN PMAPSTRUCT Map, IN PCWSTR SrcBuffer, OUT PWSTR Buffer, // can be the same as SrcBuffer
IN INT InboundBytes, OPTIONAL OUT PINT OutboundBytes, OPTIONAL IN INT MaxSizeInBytes, IN BOOL CompleteMatchOnly );
#define MappingSearchAndReplaceW(map,buffer,maxbytes) MappingSearchAndReplaceExW(map,buffer,buffer,0,NULL,maxbytes,FALSE)
HANDLE StartThread ( IN PTHREAD_START_ROUTINE Address, IN PVOID Arg );
//
// Macro expansion definition
//
// None
//
// Unicode/Ansi mappings.
//
#ifdef UNICODE
#define g_BootDrivePath g_BootDrivePathW
#define g_BootDrive g_BootDriveW
#define g_BootDriveLetter g_BootDriveLetterW
#define VERSION_STRUCT VERSION_STRUCTW
#define PVERSION_STRUCT PVERSION_STRUCTW
#define CreateVersionStruct CreateVersionStructW
#define DestroyVersionStruct DestroyVersionStructW
#define EnumFirstVersionTranslation EnumFirstVersionTranslationW
#define EnumNextVersionTranslation EnumNextVersionTranslationW
#define EnumFirstVersionValue EnumFirstVersionValueW
#define EnumNextVersionValue EnumNextVersionValueW
#define AddStringMappingPair AddStringMappingPairW
#define AddStringMappingPairEx AddStringMappingPairExW
#define MappingSearchAndReplace MappingSearchAndReplaceW
#define MappingSearchAndReplaceEx MappingSearchAndReplaceExW
#else
#define g_BootDrivePath g_BootDrivePathA
#define g_BootDrive g_BootDriveA
#define g_BootDriveLetter g_BootDriveLetterA
#define VERSION_STRUCT VERSION_STRUCTA
#define PVERSION_STRUCT PVERSION_STRUCTA
#define CreateVersionStruct CreateVersionStructA
#define DestroyVersionStruct DestroyVersionStructA
#define EnumFirstVersionTranslation EnumFirstVersionTranslationA
#define EnumNextVersionTranslation EnumNextVersionTranslationA
#define EnumFirstVersionValue EnumFirstVersionValueA
#define EnumNextVersionValue EnumNextVersionValueA
#define AddStringMappingPair AddStringMappingPairA
#define AddStringMappingPairEx AddStringMappingPairExA
#define MappingSearchAndReplace MappingSearchAndReplaceA
#define MappingSearchAndReplaceEx MappingSearchAndReplaceExA
#endif
|