|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
v1p.h
Abstract:
Header file for shared types, macros, etc., common to all v1 source files.
Author:
Jim Schmidt (jimschm) 14-Mar-2000
Revision History:
<alias> <date> <comments>
--*/
//
// Includes
//
#include "logmsg.h"
//
// Strings
//
#define S_SOURCE_MACHINE_SECTION TEXT("Source Machine")
#define S_VERSION_INFKEY TEXT("version")
#define S_ACP_INFKEY TEXT("acp")
#define S_USER_SECTION TEXT("User")
#define S_USER_INFKEY TEXT("User")
#define S_DOMAIN_INFKEY TEXT("Domain")
#define S_HKCU TEXT("HKCU")
#define S_HKCC TEXT("HKCC")
#define S_HKLM TEXT("HKLM")
#define S_HKR TEXT("HKR")
#define S_V1PROP_ICONDATA TEXT("V1.PROP.ICONDATA")
#define S_V1PROP_FILECOLLPATTERN TEXT("V1.PROP.FILECOLLPATTERN")
#define S_OE_COMPONENT TEXT("$Outlook Express")
#define S_OUTLOOK9798_COMPONENT TEXT("$Microsoft Outlook 97 & 98")
#define S_OFFICE_COMPONENT TEXT("$Microsoft Office")
#define S_OE4_APPDETECT TEXT("Outlook Express.OutlookExpress4")
#define S_OE5_APPDETECT TEXT("Outlook Express.OutlookExpress5")
#define S_OUTLOOK9798_APPDETECT TEXT("Microsoft Outlook 97 & 98.Outlook98.97")
#define S_OFFICE9798_APPDETECT TEXT("Microsoft Office.Microsoft Office 97")
//
// Constants
//
#define ACTION_PERSIST 0x0001
#define ACTION_PERSIST_PATH_IN_DATA 0x0002
#define ACTION_PERSIST_ICON_IN_DATA 0x0004
#define ACTION_PRIORITYSRC 0x0001
#define ACTION_PRIORITYDEST 0x0002
typedef enum { ACTIONGROUP_NONE = 0, ACTIONGROUP_DEFAULTPRIORITY, ACTIONGROUP_SPECIFICPRIORITY, ACTIONGROUP_FILECOLLPATTERN, ACTIONGROUP_EXCLUDE, ACTIONGROUP_EXCLUDEEX, ACTIONGROUP_INCLUDE, ACTIONGROUP_INCLUDEEX, ACTIONGROUP_RENAME, ACTIONGROUP_RENAMEEX, ACTIONGROUP_INCLUDERELEVANT, ACTIONGROUP_INCLUDERELEVANTEX, ACTIONGROUP_RENAMERELEVANT, ACTIONGROUP_RENAMERELEVANTEX, ACTIONGROUP_REGFILE, ACTIONGROUP_REGFILEEX, ACTIONGROUP_REGFOLDER, ACTIONGROUP_REGFOLDEREX, ACTIONGROUP_REGICON, ACTIONGROUP_REGICONEX, ACTIONGROUP_DELREGKEY, } ACTIONGROUP, *PACTIONGROUP;
#define ACTIONWEIGHT_EXCLUDE 0x00000001
#define ACTIONWEIGHT_EXCLUDEEX 0x00000002
#define ACTIONWEIGHT_DELREGKEY 0x00000003
#define ACTIONWEIGHT_INCLUDE 0x00000004
#define ACTIONWEIGHT_INCLUDEEX 0x00000005
#define ACTIONWEIGHT_RENAME 0x00000006
#define ACTIONWEIGHT_RENAMEEX 0x00000007
#define ACTIONWEIGHT_INCLUDERELEVANT 0x00000008
#define ACTIONWEIGHT_INCLUDERELEVANTEX 0x00000009
#define ACTIONWEIGHT_RENAMERELEVANT 0x0000000A
#define ACTIONWEIGHT_RENAMERELEVANTEX 0x0000000B
#define ACTIONWEIGHT_REGFILE 0x0000000C
#define ACTIONWEIGHT_REGFILEEX 0x0000000D
#define ACTIONWEIGHT_REGFOLDER 0x0000000E
#define ACTIONWEIGHT_REGFOLDEREX 0x0000000F
#define ACTIONWEIGHT_REGICON 0x00000010
#define ACTIONWEIGHT_REGICONEX 0x00000011
#define ACTIONWEIGHT_DEFAULTPRIORITY 0x00000001
#define ACTIONWEIGHT_SPECIFICPRIORITY 0x10000000
#define ACTIONWEIGHT_FILECOLLPATTERN 0x00000000
typedef enum { RULEGROUP_NORMAL = 0, RULEGROUP_PRIORITY, RULEGROUP_COLLPATTERN } RULEGROUP;
#define PFF_NO_PATTERNS_ALLOWED 0x0001
#define PFF_COMPUTE_BASE 0x0002
#define PFF_NO_SUBDIR_PATTERN 0x0004
#define PFF_NO_LEAF_PATTERN 0x0008
#define PFF_PATTERN_IS_DIR 0x0010
#define PFF_NO_LEAF_AT_ALL (PFF_NO_LEAF_PATTERN|PFF_PATTERN_IS_DIR)
//
// Macros
//
// None
//
// Types
//
typedef struct { PMAPSTRUCT AppEnvMapSrc; PMAPSTRUCT AppEnvMapDest; PMAPSTRUCT UndefEnvMapSrc; PMAPSTRUCT UndefEnvMapDest; } APP_SPECIFIC_DATA, *PAPP_SPECIFIC_DATA;
typedef struct { MIG_OBJECTSTRINGHANDLE ObjectBase; MIG_OBJECTSTRINGHANDLE ObjectDest; MIG_OBJECTSTRINGHANDLE AddnlDest; PCTSTR ObjectHint; PAPP_SPECIFIC_DATA AppSpecificData; } ACTION_STRUCT, *PACTION_STRUCT;
typedef struct { MIG_PLATFORMTYPEID Platform; PCTSTR ScriptSpecifiedType; PCTSTR ScriptSpecifiedObject; PCTSTR ApplicationName;
PCTSTR ReturnString; union { struct _TAG_ISM_OBJECT { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; PMIG_CONTENT ObjectContent; };
struct _TAG_OBJECT { UINT DataSize; PCBYTE Data; }; }; } ATTRIB_DATA, *PATTRIB_DATA;
ETMINITIALIZE ScriptEtmInitialize; ETMPARSE ScriptEtmParse; ETMTERMINATE ScriptEtmTerminate;
VCMINITIALIZE ScriptVcmInitialize; VCMPARSE ScriptVcmParse; VCMQUEUEENUMERATION ScriptVcmQueueEnumeration; VCMTERMINATE ScriptTerminate;
SGMINITIALIZE ScriptSgmInitialize; SGMPARSE ScriptSgmParse; SGMQUEUEENUMERATION ScriptSgmQueueEnumeration;
DGMINITIALIZE ScriptDgmInitialize; DGMQUEUEENUMERATION ScriptDgmQueueEnumeration; CSMINITIALIZE ScriptCsmInitialize; CSMTERMINATE ScriptCsmTerminate; CSMEXECUTE ScriptCsmExecute; OPMINITIALIZE ScriptOpmInitialize; OPMTERMINATE ScriptOpmTerminate;
//
// Globals
//
extern PMAPSTRUCT g_EnvMap; extern PMAPSTRUCT g_UndefMap; extern PMAPSTRUCT g_RevEnvMap; extern HASHTABLE g_RenameSrcTable; extern HASHTABLE g_RenameDestTable; extern HASHTABLE g_DePersistTable; extern PMHANDLE g_V1Pool; extern MIG_OBJECTTYPEID g_FileType; extern MIG_OBJECTTYPEID g_RegType; extern MIG_OPERATIONID g_RenameOp; extern MIG_OPERATIONID g_RenameFileExOp; extern MIG_OPERATIONID g_RenameFileOp; extern MIG_OPERATIONID g_DeleteOp; extern MIG_OPERATIONID g_RenameExOp; extern MIG_ATTRIBUTEID g_OsFileAttribute; extern MIG_ATTRIBUTEID g_CopyIfRelevantAttr; extern MIG_ATTRIBUTEID g_LockPartitionAttr; extern MIG_PROPERTYID g_DefaultIconData; extern MIG_PROPERTYID g_FileCollPatternData; extern MIG_OPERATIONID g_DefaultIconOp; extern MIG_OPERATIONID g_DestAddObject; extern MIG_OPERATIONID g_RegAutoFilterOp; extern BOOL g_PreParse; extern PMAPSTRUCT g_DestEnvMap; extern PMAPSTRUCT g_FileNodeFilterMap; extern BOOL g_OERulesMigrated; extern GROWLIST g_SectionStack;
//
// Macro expansion lists
//
#define STANDARD_DWORD_SETTINGS \
#define STANDARD_STRING_SETTINGS \
DEFMAC("timezone", "hklm\\System\\CurrentControlSet\\Control\\TimeZoneInformation", "StandardName") \ DEFMAC("locale", "hklm\\System\\CurrentControlSet\\Control\\Nls\\Locale", "") \
#define STANDARD_STRING_SETTINGS_9X \
DEFMAC("fullname", "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion", "RegisteredOwner") \ DEFMAC("orgname", "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion", "RegisteredOrganization") \
#define STANDARD_STRING_SETTINGS_NT \
DEFMAC("fullname", "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "RegisteredOwner") \ DEFMAC("orgname", "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "RegisteredOrganization")\
//
// Public function prototypes
//
MIG_OBJECTSTRINGHANDLE MakeRegExBase ( IN PCTSTR Node, IN PCTSTR Leaf );
MIG_OBJECTSTRINGHANDLE CreatePatternFromNodeLeaf ( IN PCTSTR Node, IN PCTSTR Leaf );
MIG_OBJECTSTRINGHANDLE TurnRegStringIntoHandle ( IN PCTSTR String, IN BOOL Pattern, OUT PBOOL HadLeaf OPTIONAL );
MIG_OBJECTSTRINGHANDLE TurnFileStringIntoHandle ( IN PCTSTR String, IN DWORD Flags );
BOOL AllocScriptType ( IN OUT PATTRIB_DATA AttribData CALLER_INITIALIZED );
BOOL FreeScriptType ( IN PATTRIB_DATA AttribData ZEROED );
VOID InitSpecialConversion ( IN MIG_PLATFORMTYPEID Platform );
VOID TerminateSpecialConversion ( VOID );
VOID InitSpecialRename ( IN MIG_PLATFORMTYPEID Platform );
VOID TerminateSpecialRename ( VOID );
VOID InitRules ( VOID );
VOID TerminateRules ( VOID );
BOOL AddRuleEx ( IN MIG_OBJECTTYPEID Type, IN MIG_OBJECTSTRINGHANDLE ObjectBase, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN ACTIONGROUP ActionGroup, IN DWORD ActionFlags, IN PACTION_STRUCT ActionStruct, OPTIONAL IN RULEGROUP RuleGroup );
#define AddRule(t,b,p,g,f,s) AddRuleEx(t,b,p,g,f,s,RULEGROUP_NORMAL)
BOOL QueryRuleEx ( IN MIG_OBJECTTYPEID Type, IN MIG_OBJECTSTRINGHANDLE EncodedString, IN PCTSTR ObjectNode, OUT PACTIONGROUP ActionGroup, OUT PDWORD ActionFlags, OUT PACTION_STRUCT ActionStruct, OPTIONAL IN RULEGROUP RuleGroup );
#define QueryRule(t,e,n,g,f,s) QueryRuleEx(t,e,n,g,f,s,RULEGROUP_NORMAL)
//
// renregfn.c
//
BOOL DoRegistrySpecialConversion ( IN HINF InfHandle, IN PCTSTR Section );
BOOL DoRegistrySpecialRename ( IN HINF InfHandle, IN PCTSTR Section );
BOOL AddSpecialRenameRule ( IN PCTSTR Pattern, IN PCTSTR Function );
//
// sgmutils.c
//
PCTSTR GetShellFolderPath ( IN INT Folder, IN PCTSTR FolderStr, IN BOOL UserFolder, OUT PTSTR Buffer );
PCTSTR GetAllUsersProfilePath ( OUT PTSTR Buffer );
PCTSTR GetUserProfileRootPath ( OUT PTSTR Buffer );
PCTSTR IsValidUncPath ( IN PCTSTR Path );
BOOL IsValidFileSpec ( IN PCTSTR FileSpec );
VOID QueueAllFiles ( VOID );
VOID AddRemappingEnvVar ( IN PMAPSTRUCT Map, IN PMAPSTRUCT ReMap, IN PMAPSTRUCT UndefMap, OPTIONAL IN PCTSTR VariableName, IN PCTSTR VariableData );
VOID SetIsmEnvironmentFromPhysicalMachine ( IN PMAPSTRUCT Map, IN BOOL MapDestToSource, IN PMAPSTRUCT UndefMap OPTIONAL );
VOID SetIsmEnvironmentFromVirtualMachine ( IN PMAPSTRUCT DirectMap, IN PMAPSTRUCT ReverseMap, IN PMAPSTRUCT UndefMap );
//
// app.c
//
PCTSTR GetMostSpecificSection ( IN PINFSTRUCT InfStruct, IN HINF InfFile, IN PCTSTR BaseSection );
VOID InitAppModule ( VOID );
VOID TerminateAppModule ( VOID );
PAPP_SPECIFIC_DATA FindAppSpecificData ( IN PCTSTR AppTag );
BOOL AppCheckAndLogUndefVariables ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Application, IN PCTSTR UnexpandedString );
BOOL AppSearchAndReplace ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Application, IN PCTSTR UnexpandedString, OUT PTSTR ExpandedString, IN UINT ExpandedStringTchars );
BOOL ParseOneApplication ( IN MIG_PLATFORMTYPEID Platform, IN HINF Inf, IN PCTSTR Section, IN BOOL PreParse, IN UINT MasterGroup, IN PCTSTR Application, IN PCTSTR LocSection, IN PCTSTR AliasType, IN PCTSTR MultiSz );
BOOL ParseApplications ( IN MIG_PLATFORMTYPEID Platform, IN HINF Inf, IN PCTSTR Section, IN BOOL PreParse, IN UINT MasterGroup );
BOOL ProcessFilesAndFolders ( IN HINF InfHandle, IN PCTSTR Section, IN BOOL PreParse );
BOOL ParseAppDetectSection ( IN MIG_PLATFORMTYPEID Platform, IN HINF InfFile, IN PCTSTR Application, IN PCTSTR Section );
//
// sgmcallback.c
//
MIG_OBJECTENUMCALLBACK GatherVirtualComputer; MIG_OBJECTENUMCALLBACK PrepareActions; MIG_OBJECTENUMCALLBACK NulCallback; MIG_OBJECTENUMCALLBACK ObjectPriority; MIG_OBJECTENUMCALLBACK FileCollPattern; MIG_OBJECTENUMCALLBACK ExcludeKeyIfValueExists; MIG_OBJECTENUMCALLBACK LockPartition; MIG_POSTENUMCALLBACK PostDelregKeyCallback;
//
// sgmqueue.c
//
BOOL ParseInfInstructions ( IN HINF InfHandle, IN PCTSTR Application, IN PCTSTR Section );
BOOL ParseTranslationSection ( IN HINF InfHandle, IN PCTSTR Application, IN PCTSTR Section );
//
// attrib.c
//
BOOL TestAttributes ( IN PMHANDLE WorkPool, IN PCTSTR ArgumentMultiSz, IN PATTRIB_DATA AttribData );
//
// opm.c
//
BOOL WINAPI FilterRenameExFilter ( IN PCMIG_FILTERINPUT InputData, OUT PMIG_FILTEROUTPUT OutputData, IN BOOL NoRestoreObject, IN PCMIG_BLOB SourceOperationData, OPTIONAL IN PCMIG_BLOB DestinationOperationData OPTIONAL );
//
// regconv.c
//
BOOL DoesDestRegExist ( IN MIG_OBJECTSTRINGHANDLE DestName, IN DWORD RegType );
BOOL IsValidRegSz ( IN PCMIG_CONTENT CurrentContent );
BOOL IsValidRegType ( IN PCMIG_CONTENT CurrentContent, IN DWORD RegType );
BOOL CreateDwordRegObject ( IN PCTSTR KeyStr, IN PCTSTR ValueName, IN DWORD Value );
// oeutils.c
VOID OETerminate ( VOID );
BOOL OEIsIdentityAssociated ( IN PTSTR IdStr );
BOOL OEIAMAssociateId ( IN PTSTR SrcId );
PTSTR OEGetRemappedId ( IN PCTSTR IdStr );
PTSTR OEGetAssociatedId ( IN MIG_PLATFORMTYPEID Platform );
PTSTR OEGetDefaultId ( IN MIG_PLATFORMTYPEID Platform );
VOID WABMerge ( VOID );
VOID OE5MergeStoreFolders ( VOID );
VOID OE4MergeStoreFolder ( VOID );
BOOL OE5RemapDefaultId ( VOID );
BOOL OEAddComplexRules ( VOID );
PTSTR OECreateFirstIdentity ( VOID );
BOOL OEInitializeIdentity ( VOID );
BOOL OEFixLastUser ( VOID );
//
// restore.c
//
BOOL InitRestoreCallback ( IN MIG_PLATFORMTYPEID Platform );
VOID TerminateRestoreCallback ( VOID );
//
// Macro expansion definition
//
// None
//
// ANSI/UNICODE macros
//
// None
|