windows-nt/Source/XPSP1/NT/windows/winstate/cobra/inc/modules.h
2020-09-26 16:20:57 +08:00

259 lines
8 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
modules.h
Abstract:
Base definitions for the Intermediate State Manager.
Author:
Calin Negreanu (calinn) 15-Nov-1999
Revision History:
<alias> <date> <comments>
--*/
#pragma once
//
// Includes
//
#include "ism.h"
//
// Strings
//
// None
//
// Constants
//
// messages from 0x0001 to 0x000F are reserved by the engine
#define TRANSPORTMESSAGE_IMAGE_EXISTS 0x0010
#define TRANSPORTMESSAGE_IMAGE_LOCKED 0x0011
#define TRANSPORTMESSAGE_SIZE_SAVED 0x0012
#define TRANSPORTMESSAGE_RMEDIA_SAVE 0x0013
#define TRANSPORTMESSAGE_RMEDIA_LOAD 0x0014
#define TRANSPORTMESSAGE_MULTIPLE_DESTS 0x0015 // return TRUE if multiple dests are resolved
#define TRANSPORTMESSAGE_READY_TO_CONNECT 0x0016
#define TRANSPORTMESSAGE_SRC_COPY_ERROR 0x0017
#define TRANSPORTMESSAGE_OLD_STORAGE 0x0018
#define TRANSPORTMESSAGE_NET_DISPLAY_PASSWORD 0x0019
#define TRANSPORTMESSAGE_NET_GATHER_PASSWORD 0x001A
#define MODULEMESSAGE_DISPLAYERROR 0x001B
#define MODULEMESSAGE_DISPLAYWARNING 0x001C
#define MODULEMESSAGE_ASKQUESTION 0x001D
#define APPRESPONSE_NONE 0
#define APPRESPONSE_SUCCESS 1
#define APPRESPONSE_FAIL 2
#define APPRESPONSE_IGNORE 3
//
// Known attributes
//
#define S_ATTRIBUTE_FIXEDPATH TEXT("FixedPath")
#define S_OBJECTTYPE_FILE TEXT("File")
#define S_OBJECTTYPE_REGISTRY TEXT("Registry")
#define S_ATTRIBUTE_V1 TEXT("v1")
#define S_ATTRIBUTE_OSFILE TEXT("OSFILE")
#define S_ATTRIBUTE_COPYIFRELEVANT TEXT("CopyIfRelevant")
#define S_ATTRIBUTE_PARTITIONLOCK TEXT("PartitionLock")
//
// Known properties
//
#define S_PROPERTY_FILEMOVE TEXT("Move.FileMove")
#define S_PROPERTY_FILEMOVE_HINT TEXT("Move.FileMove.Hint")
//
// known operations
//
#define S_OPERATION_MOVE TEXT("Move.General")
#define S_OPERATION_ENHANCED_MOVE TEXT("Move.Ex")
#define S_OPERATION_V1_FILEMOVEEX TEXT("Move.V1FileMoveEx")
#define S_OPERATION_V1_FILEMOVE TEXT("Move.V1FileMove")
#define S_OPERATION_ENHANCED_FILEMOVE TEXT("Move.FileMoveEx")
#define S_OPERATION_PARTITION_MOVE TEXT("Move.Partition")
#define S_OPERATION_DELETE TEXT("Delete")
#define S_OPERATION_LNKMIG_FIXCONTENT TEXT("Content.LnkMigFixContent")
#define S_OPERATION_DEFICON_FIXCONTENT TEXT("Content.DefaultIcon")
#define S_OPERATION_DRIVEMAP_FIXCONTENT TEXT("Content.MappedDrive")
#define S_OPERATION_DESTADDOBJ TEXT("Content.DestAddObject")
#define S_OPERATION_REG_AUTO_FILTER TEXT("Content.RegAutoFilter")
//
// known environment groups
//
#define S_SYSENVVAR_GROUP TEXT("SysEnvVar")
//
// v1 functionality attributes and environment variables
//
#define S_GLOBAL_INF_HANDLE TEXT("GlobalInfHandle")
#define S_ENV_HKCU_V1 TEXT("HKCU_V1")
#define S_ENV_HKCU_ON TEXT("HKCU_ON")
#define S_ENV_HKLM_ON TEXT("HKLM_ON")
#define S_ENV_ALL_FILES TEXT("FILES_ON")
#define S_INF_FILE_MULTISZ TEXT("INF_FILES")
#define S_ENV_CREATE_USER TEXT("CreateUser")
#define S_ENV_ICONLIB TEXT("IconLib")
#define S_ENV_SAVE_ICONLIB TEXT("SaveIconLib")
#define S_ENV_DEST_DELREG TEXT("DelDestReg")
#define S_ENV_DEST_DELREGEX TEXT("DelDestRegEx")
#define S_ENV_DEST_RESTORE TEXT("RestoreCallback")
#define S_ENV_SCRIPT_EXECUTE TEXT("ScriptExecute")
#define S_ENV_DEST_ADDOBJECT TEXT("DestAddObject")
#define S_ENV_DEST_CHECKDETECT TEXT("DestCheckDetect")
//
// module-to-app environment variables
//
#define S_REQUIRE_DOMAIN_USER TEXT("RequireDomainUser")
// component groups
#define COMPONENT_NAME 5
#define COMPONENT_SUBCOMPONENT 4
#define COMPONENT_EXTENSION 3
#define COMPONENT_FILE 2
#define COMPONENT_FOLDER 1
//
// strings shared between apps
//
#define S_INF_OBJECT_NAME TEXT("inf")
//
// Macros
//
// None
//
// Types
//
//
// Types for errors to be presented to the user
//
typedef enum {
ERRUSER_ERROR_UNKNOWN = 0, // Unknown error
ERRUSER_ERROR_NOTRANSPORTPATH, // Transport path is not selected. Don't know where to write or where to read from
ERRUSER_ERROR_TRANSPORTPATHBUSY, // Transport path is in use. Cannot save there.
ERRUSER_ERROR_CANTEMPTYDIR, // USMT dir inside transport path could not be erased.
ERRUSER_ERROR_ALREADYEXISTS, // USMT dir inside transport path already exists. Cannot override.
ERRUSER_ERROR_CANTCREATEDIR, // USMT dir inside transport path could not be created.
ERRUSER_ERROR_CANTCREATESTATUS, // USMT status file inside transport path could not be created.
ERRUSER_ERROR_CANTCREATETEMPDIR, // Transport can't create temp dir to prepare for save.
ERRUSER_ERROR_CANTCREATECABFILE, // Transport can't create cabinet file to prepare for save.
ERRUSER_ERROR_CANTSAVEOBJECT, // Transport can't save a particular object
ERRUSER_ERROR_CANTSAVEINTERNALDATA, // Transport can't save it's internal data
ERRUSER_ERROR_CANTWRITETODESTPATH, // Transport can't write to destination path
ERRUSER_ERROR_TRANSPORTINVALIDIMAGE,// Transport image is invalid. Cannot read data.
ERRUSER_ERROR_CANTOPENSTATUS, // USMT status file inside transport path could not be opened.
ERRUSER_ERROR_CANTREADIMAGE, // Transport can't read the saved image. The image may be corrupt.
ERRUSER_ERROR_CANTFINDDESTINATION, // HomeNet transport can't find the destination machine
ERRUSER_ERROR_CANTSENDTODEST, // HomeNet transport can't send to the destination machine
ERRUSER_ERROR_CANTFINDSOURCE, // HomeNet transport can't find the source machine
ERRUSER_ERROR_CANTRECEIVEFROMSOURCE,// HomeNet transport can't receive from the source machine
ERRUSER_ERROR_INVALIDDATARECEIVED, // HomeNet transport received invalid data from the source machine
ERRUSER_ERROR_CANTUNPACKIMAGE, // Transport can't unpack loaded image. This might be a disk space problem.
ERRUSER_ERROR_CANTRESTOREOBJECT, // Failed to restore some object on the destination machine.
ERRUSER_ERROR_DISKSPACE, // The user might not have enough disk space.
ERRUSER_ERROR_NOENCRYPTION, // There is no encryption available. HomeNet won't work.
ERRUSER_WARNING_OUTLOOKRULES, // The user must retouch their Outlook message rules.
ERRUSER_WARNING_OERULES, // The user must retouch their Outlook Express message rules.
} ERRUSER_ERROR, *PERRUSER_ERROR;
typedef enum {
ERRUSER_AREA_UNKNOWN = 0,
ERRUSER_AREA_INIT,
ERRUSER_AREA_GATHER,
ERRUSER_AREA_SAVE,
ERRUSER_AREA_LOAD,
ERRUSER_AREA_RESTORE,
} ERRUSER_AREA, *PERRUSER_AREA;
typedef struct {
ERRUSER_ERROR Error;
ERRUSER_AREA ErrorArea;
MIG_OBJECTTYPEID ObjectTypeId;
MIG_OBJECTSTRINGHANDLE ObjectName;
} ERRUSER_EXTRADATA, *PERRUSER_EXTRADATA;
typedef struct {
PSTR Key;
UINT KeySize;
HANDLE Event;
} PASSWORD_DATA, *PPASSWORD_DATA;
typedef struct {
PCTSTR Question;
UINT MessageStyle;
INT WantedResult;
} QUESTION_DATA, *PQUESTION_DATA;
// These are the subphases for the transport phase. They are
// used to update the app about the transport modules status.
#define SUBPHASE_CONNECTING1 1
#define SUBPHASE_CONNECTING2 2
#define SUBPHASE_NETPREPARING 3
#define SUBPHASE_PREPARING 4
#define SUBPHASE_COMPRESSING 5
#define SUBPHASE_TRANSPORTING 6
#define SUBPHASE_MEDIAWRITING 7
#define SUBPHASE_FINISHING 8
#define SUBPHASE_CABLETRANS 9
#define SUBPHASE_UNCOMPRESSING 10
//
// Globals
//
// None
//
// Macro expansion list
//
// None
//
// Macro expansion definition
//
// None
//
// Public function declarations
//
// None
//
// ANSI/UNICODE macros
//
// None