|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
fileops.h
Abstract:
Declares the file operation data structures and macros that access the file operations. Every operation on a file is recorded using routines declared here. The file op code keeps conflicting operations from being set on a file.
See common\memdb\fileops.c for implementation details.
Author:
Jim Schmidt (jimschm) 23-Sep-1998 (complete redesign)
Revision History:
mvander 26-Map-1999 Added MODULESTATUS defines
--*/
#pragma once
/*++
Macro Expansion List Description:
PATH_OPERATIONS defines a list of characteristics for operations that can be performed on a file.
Some operation combinations are prohibited. See the code in fileops.c for a list of prohibited combinations.
NOTES: - THERE CAN ONLY BE A MAX OF 16 DEFINITIONS!! - THE BITS MUST BE SORTED!! - CANNOT HAVE UNUSED BITS INBETWEEN OPERATIONS!!
Line Syntax:
DEFMAC(Bit, Name, CooperativeOperations, MaxProperties)
Arguments:
Bit - Specifies the single bit (MUST FIT IN 24 BITS), in sorted order
Name - Specifies the name of the operation constant (will appear in OPERATION enum type)
MemDbName - Specifies the name as stored in memdb
MaxProperties - Specifies 0, 1 or UNLIMITED, indicating the number of properties that can be applied to the operation
Variables and Types Generated From List:
OPERATION g_OperationFlags
--*/
#define PATH_OPERATIONS \
DEFMAC(0x0001, OPERATION_FILE_DELETE, Op01, 0) \ DEFMAC(0x0002, OPERATION_FILE_DELETE_EXTERNAL, Op02, 0) \ DEFMAC(0x0004, OPERATION_FILE_MOVE, Op03, 1) \ DEFMAC(0x0008, OPERATION_FILE_COPY, Op04, UNLIMITED) \ DEFMAC(0x0010, OPERATION_FILE_MOVE_EXTERNAL, Op05, 1) \ DEFMAC(0x0020, OPERATION_CLEANUP, Op06, 0) \ DEFMAC(0x0040, OPERATION_MIGDLL_HANDLED, Op07, 0) \ DEFMAC(0x0080, OPERATION_CREATE_FILE, Op08, 0) \ DEFMAC(0x0100, OPERATION_SHORT_FILE_NAME, Op09, 1) \ DEFMAC(0x0200, OPERATION_LINK_EDIT, Op10, UNLIMITED) \ DEFMAC(0x0400, OPERATION_SHELL_FOLDER, Op11, UNLIMITED) \ DEFMAC(0x0800, OPERATION_TEMP_PATH, Op12, 2) \ DEFMAC(0x1000, OPERATION_FILE_MOVE_BY_NT, Op13, 1) \ DEFMAC(0x2000, OPERATION_FILE_MOVE_SHELL_FOLDER, Op14, 1) \ DEFMAC(0x4000, OPERATION_PRESERVED_DIR, Op15, 0) \ DEFMAC(0x8000, OPERATION_OS_FILE, Op16, 0) \ DEFMAC(0x010000, OPERATION_FILE_DISABLED, Op17, 0) \ DEFMAC(0x020000, OPERATION_LINK_STUB, Op18, UNLIMITED) \ DEFMAC(0x040000, OPERATION_LONG_FILE_NAME, Op19, 0) \ DEFMAC(0x080000, OPERATION_CHANGE_EXTERNAL, Op20, 0) \ DEFMAC(0x100000, OPERATION_NUL_3, Opn3, 0) \ DEFMAC(0x200000, OPERATION_NUL_2, Opn2, 0) \ DEFMAC(0x400000, OPERATION_NUL_1, Opn1, 0) \
//
// Combined constants
//
#define ALL_MOVE_OPERATIONS (OPERATION_FILE_MOVE|OPERATION_FILE_MOVE_EXTERNAL|OPERATION_FILE_MOVE_BY_NT|OPERATION_FILE_MOVE_SHELL_FOLDER)
#define ALL_COPY_OPERATIONS (OPERATION_FILE_COPY)
#define ALL_DELETE_OPERATIONS (OPERATION_FILE_DELETE|OPERATION_CLEANUP|OPERATION_FILE_DELETE_EXTERNAL)
#define ALL_OPERATIONS (0xffffff)
#define ALL_DEST_CHANGE_OPERATIONS (ALL_MOVE_OPERATIONS|ALL_COPY_OPERATIONS)
#define ALL_CHANGE_OPERATIONS (OPERATION_FILE_DISABLED|OPERATION_LINK_EDIT|OPERATION_LINK_STUB|OPERATION_CREATE_FILE|ALL_DEST_CHANGE_OPERATIONS|ALL_DELETE_OPERATIONS|OPERATION_CHANGE_EXTERNAL)
#define ALL_CONTENT_CHANGE_OPERATIONS (ALL_DELETE_OPERATIONS|OPERATION_MIGDLL_HANDLED|OPERATION_CREATE_FILE|OPERATION_LINK_EDIT|OPERATION_LINK_STUB|OPERATION_FILE_DISABLED|OPERATION_CHANGE_EXTERNAL)
//
// Declare OPERATION type
//
#define DEFMAC(bit,name,memdbname,maxattribs) name = bit,
typedef enum { PATH_OPERATIONS LAST_OPERATION } OPERATION;
#undef DEFMAC
#define INVALID_SEQUENCER 0
//
// File status flags returned by GetFileInfoOnNt and GetFileStatusOnNt
//
#define FILESTATUS_UNCHANGED 0x00
#define FILESTATUS_DELETED 0x01
#define FILESTATUS_MOVED 0x02
#define FILESTATUS_REPLACED 0x04
#define FILESTATUS_NTINSTALLED 0x08
#define FILESTATUS_BACKUP 0x10
//
// Backup flags (for CleanOut memdb category)
//
#define BACKUP_FILE 0
#define BACKUP_SUBDIRECTORY_FILES 1
#define BACKUP_SUBDIRECTORY_TREE 2
#define BACKUP_AND_CLEAN_TREE 3
#define BACKUP_AND_CLEAN_SUBDIR 4
//
// When a file is announced, it can be announced with one of the following.
//
#define ACT_UNKNOWN 0
#define ACT_REINSTALL 1 // application that needs to be reinstalled
#define ACT_MINORPROBLEMS 2 // application with minor problems
#define ACT_INCOMPATIBLE 3 // incompatible application - migdb based
#define ACT_INC_SAFETY 4 // items removed for safety
#define ACT_INC_NOBADAPPS 5 // incompatible application - no CheckBadApps entry
#define ACT_REINSTALL_BLOCK 6 // application that needs to be reinstalled (highly suggested)
#define ACT_INC_PREINSTUTIL 7 // incompatible preinstalled utility
#define ACT_INC_SIMILAROSFUNC 8 // incompatible utility but NT has similar functionality
#define ACT_INC_IHVUTIL 9 // incompatible hardware accessory
#define USF_9X TEXT("9X")
#define USF_9XA "9X"
#define USF_9XW L"9X"
#define USF_NT TEXT("NT")
#define USF_NTA "NT"
#define USF_NTW L"NT"
//
// Module status for use with MEMDB_CATEGORY_MODULE_CHECK
//
#define MODULESTATUS_NT_MODULE 0
#define MODULESTATUS_CHECKED 1
#define MODULESTATUS_CHECKING 2
#define MODULESTATUS_UNCHECKED 3
#define MODULESTATUS_BAD 4
#define MODULESTATUS_FILENOTFOUND 5
//
// Enum types
//
typedef struct { // External members
CHAR Path[MAX_MBCHAR_PATH]; UINT Sequencer;
// Internal members
MEMDB_ENUMW MemDbEnum; } FILEOP_ENUMA, *PFILEOP_ENUMA;
typedef struct { // External members
WCHAR Path[MAX_WCHAR_PATH]; UINT Sequencer;
// Internal members
MEMDB_ENUMW MemDbEnum; } FILEOP_ENUMW, *PFILEOP_ENUMW;
typedef struct { // External members
CHAR Property[MEMDB_MAX * 2]; CHAR PropertyName[MEMDB_MAX * 2];
// Internal members
MEMDB_ENUMW MemDbEnum; } FILEOP_PROP_ENUMA, *PFILEOP_PROP_ENUMA;
typedef struct { // External members
WCHAR Property[MEMDB_MAX]; WCHAR PropertyName[MEMDB_MAX];
// Internal members
MEMDB_ENUMW MemDbEnum; } FILEOP_PROP_ENUMW, *PFILEOP_PROP_ENUMW;
typedef struct { // External
PCWSTR Path; UINT Sequencer; PCWSTR Property; UINT PropertyNum; OPERATION CurrentOperation; BOOL PropertyValid;
// Internal
UINT State; DWORD Operations; UINT OperationNum; WCHAR FileSpec[MAX_WCHAR_PATH]; FILEOP_ENUMW OpEnum; FILEOP_PROP_ENUMW PropEnum; } ALL_FILEOPS_ENUMW, *PALL_FILEOPS_ENUMW;
typedef struct { // External
CHAR Path[MAX_MBCHAR_PATH]; UINT Sequencer; CHAR Property[MEMDB_MAX * 2]; UINT PropertyNum; OPERATION CurrentOperation; BOOL PropertyValid;
// Internal
ALL_FILEOPS_ENUMW Enum; } ALL_FILEOPS_ENUMA, *PALL_FILEOPS_ENUMA;
typedef struct _SHELLFOLDER_ENUMA { CHAR ShellFolder[MEMDB_MAX]; PCSTR UserFixedName; PCSTR Side; MEMDB_ENUMA e; } SHELLFOLDER_ENUMA, *PSHELLFOLDER_ENUMA;
typedef struct _SHELLFOLDER_ENUMW { WCHAR ShellFolder[MEMDB_MAX]; PCWSTR UserFixedName; PCWSTR Side; MEMDB_ENUMW e; } SHELLFOLDER_ENUMW, *PSHELLFOLDER_ENUMW;
typedef struct { CHAR SrcFile[MAX_MBCHAR_PATH]; CHAR DestFile[MAX_MBCHAR_PATH];
ALL_FILEOPS_ENUMA e; } FILERELOC_ENUMA, *PFILERELOC_ENUMA;
//
// Generalized file operations
//
VOID InitOperationTable ( VOID );
UINT AddOperationToPathA ( IN PCSTR FileSpec, IN OPERATION Operation );
UINT AddOperationToPathW ( IN PCWSTR FileSpec, IN OPERATION Operation );
BOOL AddPropertyToPathExA ( IN UINT Sequencer, IN OPERATION Operation, IN PCSTR Property, IN PCSTR AlternateDataSection OPTIONAL );
#define AddPropertyToPathA(seq,op,attr) AddPropertyToPathExA(seq,op,attr,NULL)
BOOL AddPropertyToPathExW ( IN UINT Sequencer, IN OPERATION Operation, IN PCWSTR Property, IN PCWSTR AlternateDataSection OPTIONAL );
#define AddPropertyToPathW(seq,op,attr) AddPropertyToPathExW(seq,op,attr,NULL)
BOOL AssociatePropertyWithPathA ( IN PCSTR FileSpec, IN OPERATION Operation, IN PCSTR Property );
BOOL AssociatePropertyWithPathW ( IN PCWSTR FileSpec, IN OPERATION Operation, IN PCWSTR Property );
UINT GetSequencerFromPathA ( IN PCSTR FileSpec );
UINT GetSequencerFromPathW ( IN PCWSTR FileSpec );
BOOL GetPathFromSequencerA ( IN UINT Sequencer, OUT PSTR PathBuf );
BOOL GetPathFromSequencerW ( IN UINT Sequencer, OUT PWSTR PathBuf );
DWORD GetOperationsOnPathA ( IN PCSTR FileSpec );
DWORD GetOperationsOnPathW ( IN PCWSTR FileSpec );
VOID RemoveOperationsFromSequencer ( IN UINT Sequencer, IN DWORD Operations );
VOID RemoveOperationsFromPathA ( IN PCSTR FileSpec, IN DWORD Operations );
#define RemoveAllOperationsFromPathA(file) RemoveOperationsFromPathA(file,ALL_OPERATIONS)
VOID RemoveOperationsFromPathW ( IN PCWSTR FileSpec, IN DWORD Operations );
#define RemoveAllOperationsFromPathW(file) RemoveOperationsFromPathW(file,ALL_OPERATIONS)
UINT ForceOperationOnPathA ( IN PCSTR FileSpec, IN OPERATION Operation );
UINT ForceOperationOnPathW ( IN PCWSTR FileSpec, IN OPERATION Operation );
BOOL IsFileMarkedForOperationA ( IN PCSTR FileSpec, IN DWORD Operations );
BOOL IsFileMarkedForOperationW ( IN PCWSTR FileSpec, IN DWORD Operations );
BOOL IsFileMarkedInDataA ( IN PCSTR FileSpec );
BOOL IsFileMarkedInDataW ( IN PCWSTR FileSpec );
DWORD GetPathPropertyOffset ( IN UINT Sequencer, IN OPERATION Operation, IN DWORD Property );
BOOL GetPathPropertyA ( IN PCSTR FileSpec, IN DWORD Operations, IN DWORD Property, OUT PSTR PropertyBuf OPTIONAL // MEMDB_MAX
);
BOOL GetPathPropertyW ( IN PCWSTR FileSpec, IN DWORD Operations, IN DWORD Property, OUT PWSTR PropertyBuf OPTIONAL // MEMDB_MAX
);
BOOL EnumFirstPathInOperationA ( OUT PFILEOP_ENUMA EnumPtr, IN OPERATION Operation );
BOOL EnumFirstPathInOperationW ( OUT PFILEOP_ENUMW EnumPtr, IN OPERATION Operation );
BOOL EnumNextPathInOperationA ( IN OUT PFILEOP_ENUMA EnumPtr );
BOOL EnumNextPathInOperationW ( IN OUT PFILEOP_ENUMW EnumPtr );
BOOL EnumFirstFileOpPropertyA ( OUT PFILEOP_PROP_ENUMA EnumPtr, IN UINT Sequencer, IN OPERATION Operation );
BOOL EnumFirstFileOpPropertyW ( OUT PFILEOP_PROP_ENUMW EnumPtr, IN UINT Sequencer, IN OPERATION Operation );
BOOL EnumNextFileOpPropertyA ( IN OUT PFILEOP_PROP_ENUMA EnumPtr );
BOOL EnumNextFileOpPropertyW ( IN OUT PFILEOP_PROP_ENUMW EnumPtr );
BOOL EnumFirstFileOpA ( OUT PALL_FILEOPS_ENUMA EnumPtr, IN DWORD Operations, IN PCSTR FileSpec OPTIONAL );
BOOL EnumFirstFileOpW ( OUT PALL_FILEOPS_ENUMW EnumPtr, IN DWORD Operations, IN PCWSTR FileSpec OPTIONAL );
BOOL EnumNextFileOpA ( IN OUT PALL_FILEOPS_ENUMA EnumPtr );
BOOL EnumNextFileOpW ( IN OUT PALL_FILEOPS_ENUMW EnumPtr );
BOOL TestPathsForOperationsA ( IN PCSTR BaseFileSpec, IN DWORD OperationsToFind );
BOOL TestPathsForOperationsW ( IN PCWSTR BaseFileSpec, IN DWORD OperationsToFind );
BOOL IsFileMarkedForAnnounceA ( IN PCSTR FileSpec );
BOOL IsFileMarkedAsKnownGoodA ( IN PCSTR FileSpec );
BOOL IsFileMarkedForAnnounceW ( IN PCWSTR FileSpec );
DWORD GetFileAnnouncementA ( IN PCSTR FileSpec );
DWORD GetFileAnnouncementW ( IN PCWSTR FileSpec );
DWORD GetFileAnnouncementContextA ( IN PCSTR FileSpec );
DWORD GetFileAnnouncementContextW ( IN PCWSTR FileSpec );
BOOL IsFileProvidedByNtA ( IN PCSTR FileName );
BOOL IsFileProvidedByNtW ( IN PCWSTR FileName );
BOOL GetNewPathForFileA ( IN PCSTR SrcFileSpec, OUT PSTR NewPath );
BOOL GetNewPathForFileW ( IN PCWSTR SrcFileSpec, OUT PWSTR NewPath );
BOOL AnnounceFileInReportA ( IN PCSTR SrcFileSpec, IN DWORD ContextPtr, IN DWORD Action );
BOOL MarkFileAsKnownGoodA ( IN PCSTR SrcFileSpec );
BOOL AddCompatibleShellA ( IN PCSTR SrcFileSpec, IN DWORD ContextPtr );
BOOL AddCompatibleRunKeyA ( IN PCSTR SrcFileSpec, IN DWORD ContextPtr );
BOOL AddCompatibleDosA ( IN PCSTR SrcFileSpec, IN DWORD ContextPtr );
BOOL AddControlPanelAppletA ( IN PCSTR FileSpec, IN DWORD ContextPtr, OPTIONAL IN DWORD Action );
BOOL AddCompatibleHlpA ( IN PCSTR SrcFileSpec, IN DWORD ContextPtr );
BOOL MarkFileForTemporaryMoveExA ( IN PCSTR SrcFileSpec, IN PCSTR FinalDest, IN PCSTR TempSpec, IN BOOL TempSpecIsFile );
#define MarkFileForTemporaryMoveA(s,d,t) MarkFileForTemporaryMoveExA(s,d,t,FALSE)
PCSTR GetTemporaryLocationForFileA ( IN PCSTR SourceFile );
PCWSTR GetTemporaryLocationForFileW ( IN PCWSTR SourceFile );
BOOL MarkHiveForTemporaryMoveA ( IN PCSTR HivePath, IN PCSTR TempDir, IN PCSTR UserName, IN BOOL DefaultHives, IN BOOL CreateOnly );
VOID ComputeTemporaryPathA ( IN PCSTR SourcePath, IN PCSTR SourcePrefix, OPTIONAL IN PCSTR TempPrefix, OPTIONAL IN PCSTR SetupTempDir, OUT PSTR TempPath );
VOID MarkShellFolderForMoveA ( IN PCSTR SrcPath, IN PCSTR TempPath );
BOOL FileIsProvidedByNtA ( IN PCSTR FullPath, IN PCSTR FileName, IN DWORD UserFlags );
BOOL DeclareTemporaryFileA ( IN PCSTR FileSpec );
BOOL DeclareTemporaryFileW ( IN PCWSTR FileSpec );
BOOL EnumFirstFileRelocA ( OUT PFILERELOC_ENUMA EnumPtr, IN PCSTR FileSpec OPTIONAL );
BOOL EnumNextFileRelocA ( IN OUT PFILERELOC_ENUMA EnumPtr );
BOOL GetNtFilePathA ( IN PCSTR FileName, OUT PSTR FullPath );
BOOL GetNtFilePathW ( IN PCWSTR FileName, OUT PWSTR FullPath );
DWORD GetFileInfoOnNtA ( IN PCSTR FileName, OUT PSTR NewFileName, // optional
IN UINT BufferSize // required if NewFileName is specified, buffer size in chars
);
DWORD GetFileInfoOnNtW ( IN PCWSTR FileName, OUT PWSTR NewFileName, // optional
IN UINT BufferSize // required if NewFileName is specified, buffer size in chars
);
DWORD GetFileStatusOnNtA ( IN PCSTR FileName );
DWORD GetFileStatusOnNtW ( IN PCWSTR FileName );
PSTR GetPathStringOnNtA ( IN PCSTR FileName );
PWSTR GetPathStringOnNtW ( IN PCWSTR FileName );
PCWSTR SetCurrentUserW ( IN PCWSTR User );
PCSTR ExtractArgZeroExA ( IN PCSTR CmdLine, OUT PSTR Buffer, IN PCSTR TerminatingChars, OPTIONAL IN BOOL KeepQuotes );
#define ExtractArgZeroA(cmdline,buf) ExtractArgZeroExA(cmdline,buf,NULL,TRUE)
PCWSTR ExtractArgZeroExW ( IN PCWSTR CmdLine, OUT PWSTR Buffer, IN PCWSTR TerminatingChars, OPTIONAL IN BOOL KeepQuotes );
#define ExtractArgZeroW(cmdline,buf) ExtractArgZeroExW(cmdline,buf,NULL,TRUE)
BOOL CanSetOperationA ( IN PCSTR FileSpec, IN OPERATION Operation );
BOOL CanSetOperationW ( IN PCWSTR FileSpec, IN OPERATION Operation );
PCSTR GetSourceFileLongNameA ( IN PCSTR ShortName );
PCWSTR GetSourceFileLongNameW ( IN PCWSTR ShortName );
BOOL WriteBackupFilesA ( IN BOOL Win9xSide, IN PCSTR TempDir, OUT ULARGE_INTEGER * OutAmountOfSpaceIfCompressed, OPTIONAL OUT ULARGE_INTEGER * OutAmountOfSpace, OPTIONAL IN INT CompressionFactor, OPTIONAL IN INT BootCabImagePadding, OPTIONAL OUT ULARGE_INTEGER * OutAmountOfSpaceForDelFiles, OPTIONAL OUT ULARGE_INTEGER * OutAmountOfSpaceClusterAligned OPTIONAL );
BOOL WriteHashTableToFileW ( IN HANDLE File, IN HASHTABLE FileTable );
BOOL IsDirEmptyW( IN PCWSTR DirPathPtr );
BOOL IsDirEmptyA( IN PCSTR DirPathPtr );
VOID AddDirPathToEmptyDirsCategoryA( IN PCSTR DirPathPtr, IN BOOL AddParentDirIfFile, OPTIONAL IN BOOL AddParentDirIfFileExist OPTIONAL );
VOID AddDirPathToEmptyDirsCategoryW( IN PCWSTR DirPathPtr, IN BOOL AddParentDirIfFile, OPTIONAL IN BOOL AddParentDirIfFileExist OPTIONAL ); //
// Wrapper macros
//
#define IsFileMarkedForPreDeleteA(file) IsFileMarkedForOperationA(file, OPERATION_FILE_DELETE)
#define IsFileMarkedForPreDeleteW(file) IsFileMarkedForOperationW(file, OPERATION_FILE_DELETE)
#define IsFileMarkedForPostDeleteA(file) IsFileMarkedForOperationA(file, OPERATION_CLEANUP)
#define IsFileMarkedForPostDeleteW(file) IsFileMarkedForOperationW(file, OPERATION_CLEANUP)
#define IsFileMarkedForDeleteA(file) IsFileMarkedForOperationA(file, ALL_DELETE_OPERATIONS)
#define IsFileMarkedForDeleteW(file) IsFileMarkedForOperationW(file, ALL_DELETE_OPERATIONS)
#define IsFileMarkedAsDestA(file) IsFileMarkedInDataA(file)
#define IsFileMarkedAsDestW(file) IsFileMarkedInDataW(file)
#define IsFileMarkedAsCopyA(file) IsFileMarkedForOperationA(file, OPERATION_FILE_COPY)
#define IsFileMarkedAsCopyW(file) IsFileMarkedForOperationW(file, OPERATION_FILE_COPY)
#define IsFileMarkedForMoveA(file) IsFileMarkedForOperationA(file, ALL_MOVE_OPERATIONS)
#define IsFileMarkedForMoveW(file) IsFileMarkedForOperationW(file, ALL_MOVE_OPERATIONS)
#define IsFileMarkedAsHandledA(file) IsFileMarkedForOperationA(file, OPERATION_MIGDLL_HANDLED)
#define IsFileMarkedAsHandledW(file) IsFileMarkedForOperationW(file, OPERATION_MIGDLL_HANDLED)
#define IsFileMarkedForChangeA(file) IsFileMarkedForOperationA(file, ALL_OPERATIONS)
#define IsFileMarkedForChangeW(file) IsFileMarkedForOperationW(file, ALL_OPERATIONS)
#define IsFileMarkedForCreationA(file) IsFileMarkedForOperationA(file, OPERATION_CREATE_FILE)
#define IsFileMarkedForCreationW(file) IsFileMarkedForOperationW(file, OPERATION_CREATE_FILE)
#define IsDirectoryMarkedAsEmptyA(file) IsFileMarkedForOperationA(file, OPERATION_PRESERVED_DIR)
#define IsDirectoryMarkedAsEmptyW(file) IsFileMarkedForOperationW(file, OPERATION_PRESERVED_DIR)
#define IsFileMarkedAsOsFileA(file) IsFileMarkedForOperationA(file, OPERATION_OS_FILE)
#define IsFileMarkedAsOsFileW(file) IsFileMarkedForOperationW(file, OPERATION_OS_FILE)
#define IsFileDisabledA(file) IsFileMarkedForOperationA(file, OPERATION_FILE_DISABLED)
#define IsFileDisabledW(file) IsFileMarkedForOperationW(file, OPERATION_FILE_DISABLED)
#define IsFileMarkedForBackupA(file) IsFileMarkedForOperationA(file, OPERATION_CHANGE_EXTERNAL)
#define IsFileMarkedForBackupW(file) IsFileMarkedForOperationW(file, OPERATION_CHANGE_EXTERNAL)
#define MarkFileForDeleteA(file) (AddOperationToPathA(file, OPERATION_FILE_DELETE) != INVALID_SEQUENCER)
#define MarkFileForExternalDeleteA(file) (AddOperationToPathA(file, OPERATION_FILE_DELETE_EXTERNAL) != INVALID_SEQUENCER)
#define MarkFileForMoveA(source,dest) AssociatePropertyWithPathA(source, OPERATION_FILE_MOVE, dest)
#define MarkFileForCopyA(source,dest) AssociatePropertyWithPathA(source, OPERATION_FILE_COPY, dest)
#define MarkFileForMoveExternalA(source,dest) AssociatePropertyWithPathA(source, OPERATION_FILE_MOVE_EXTERNAL, dest)
#define MarkFileForShellFolderMoveA(source,dest) AssociatePropertyWithPathA(source, OPERATION_FILE_MOVE_SHELL_FOLDER, dest)
#define MarkFileForMoveByNtA(source,dest) AssociatePropertyWithPathA(source, OPERATION_FILE_MOVE_BY_NT, dest)
#define MarkFileForCleanUpA(file) (AddOperationToPathA(file, OPERATION_CLEANUP) != INVALID_SEQUENCER)
#define MarkPathAsHandledA(path) (AddOperationToPathA(path, OPERATION_MIGDLL_HANDLED) != INVALID_SEQUENCER)
#define MarkFileForCreationA(path) (AddOperationToPathA(path, OPERATION_CREATE_FILE) != INVALID_SEQUENCER)
#define MarkDirectoryAsPreservedA(file) (AddOperationToPathA(file, OPERATION_PRESERVED_DIR) != INVALID_SEQUENCER)
#define MarkFileAsOsFileA(file) (AddOperationToPathA(file, OPERATION_OS_FILE) != INVALID_SEQUENCER)
#define MarkFileForBackupA(file) (AddOperationToPathA(file, OPERATION_CHANGE_EXTERNAL) != INVALID_SEQUENCER)
#define DisableFileA(file) (AddOperationToPathA(file, OPERATION_FILE_DISABLED) != INVALID_SEQUENCER)
#define MarkFileForDeleteW(file) (AddOperationToPathW(file, OPERATION_FILE_DELETE) != INVALID_SEQUENCER)
#define MarkFileForExternalDeleteW(file) (AddOperationToPathW(file, OPERATION_FILE_DELETE_EXTERNAL) != INVALID_SEQUENCER)
#define MarkFileForMoveW(source,dest) AssociatePropertyWithPathW(source, OPERATION_FILE_MOVE, dest)
#define MarkFileForCopyW(source,dest) AssociatePropertyWithPathW(source, OPERATION_FILE_COPY, dest)
#define MarkFileForMoveExternalW(source,dest) AssociatePropertyWithPathW(source, OPERATION_FILE_MOVE_EXTERNAL, dest)
#define MarkFileForShellFolderMoveW(source,dest) AssociatePropertyWithPathW(source, OPERATION_FILE_MOVE_SHELL_FOLDER, dest)
#define MarkFileForMoveByNtW(source,dest) AssociatePropertyWithPathW(source, OPERATION_FILE_MOVE_BY_NT, dest)
#define MarkFileForCleanUpW(file) (AddOperationToPathW(file, OPERATION_CLEANUP) != INVALID_SEQUENCER)
#define MarkPathAsHandledW(path) (AddOperationToPathW(path, OPERATION_MIGDLL_HANDLED) != INVALID_SEQUENCER)
#define MarkFileForCreationW(path) (AddOperationToPathW(path, OPERATION_CREATE_FILE) != INVALID_SEQUENCER)
#define MarkDirectoryAsPreservedW(file) (AddOperationToPathW(file, OPERATION_PRESERVED_DIR) != INVALID_SEQUENCER)
#define MarkFileAsOsFileW(file) (AddOperationToPathW(file, OPERATION_OS_FILE) != INVALID_SEQUENCER)
#define MarkFileForBackupW(file) (AddOperationToPathW(file, OPERATION_CHANGE_EXTERNAL) != INVALID_SEQUENCER)
#define DisableFileW(file) (AddOperationToPathW(file, OPERATION_FILE_DISABLED) != INVALID_SEQUENCER)
#ifndef UNICODE
#define FILEOP_ENUM FILEOP_ENUMA
#define FILEOP_PROP_ENUM FILEOP_PROP_ENUMA
#define ALL_FILEOPS_ENUM ALL_FILEOPS_ENUMA
#define SHELLFOLDER_ENUM SHELLFOLDER_ENUMA
#define FILERELOC_ENUM FILERELOC_ENUMA
#define AddOperationToPath AddOperationToPathA
#define AddPropertyToPathEx AddPropertyToPathExA
#define AssociatePropertyWithPath AssociatePropertyWithPathA
#define GetSequencerFromPath GetSequencerFromPathA
#define GetPathFromSequencer GetPathFromSequencerA
#define GetOperationsOnPath GetOperationsOnPathA
#define RemoveOperationsFromPath RemoveOperationsFromPathA
#define IsFileMarkedForOperation IsFileMarkedForOperationA
#define IsFileMarkedInData IsFileMarkedInDataA
#define GetPathProperty GetPathPropertyA
#define EnumFirstPathInOperation EnumFirstPathInOperationA
#define EnumNextPathInOperation EnumNextPathInOperationA
#define EnumFirstFileOpProperty EnumFirstFileOpPropertyA
#define EnumNextFileOpProperty EnumNextFileOpPropertyA
#define EnumFirstFileOp EnumFirstFileOpA
#define EnumNextFileOp EnumNextFileOpA
#define TestPathsForOperations TestPathsForOperationsA
#define IsFileMarkedForAnnounce IsFileMarkedForAnnounceA
#define GetFileAnnouncement GetFileAnnouncementA
#define GetFileAnnouncementContext GetFileAnnouncementContextA
#define IsFileMarkedAsKnownGood IsFileMarkedAsKnownGoodA
#define IsFileProvidedByNt IsFileProvidedByNtA
#define GetNewPathForFile GetNewPathForFileA
#define AnnounceFileInReport AnnounceFileInReportA
#define MarkFileAsKnownGood MarkFileAsKnownGoodA
#define AddCompatibleShell AddCompatibleShellA
#define AddCompatibleRunKey AddCompatibleRunKeyA
#define AddCompatibleDos AddCompatibleDosA
#define AddControlPanelApplet AddControlPanelAppletA
#define AddCompatibleHlp AddCompatibleHlpA
#define MarkFileForTemporaryMove MarkFileForTemporaryMoveA
#define MarkFileForTemporaryMoveEx MarkFileForTemporaryMoveExA
#define GetTemporaryLocationForFile GetTemporaryLocationForFileA
#define MarkHiveForTemporaryMove MarkHiveForTemporaryMoveA
#define ComputeTemporaryPath ComputeTemporaryPathA
#define MarkShellFolderForMove MarkShellFolderForMoveA
#define FileIsProvidedByNt FileIsProvidedByNtA
#define DeclareTemporaryFile DeclareTemporaryFileA
#define EnumFirstFileReloc EnumFirstFileRelocA
#define EnumNextFileReloc EnumNextFileRelocA
#define GetNtFilePath GetNtFilePathA
#define GetFileInfoOnNt GetFileInfoOnNtA
#define GetFileStatusOnNt GetFileStatusOnNtA
#define GetPathStringOnNt GetPathStringOnNtA
#define ExtractArgZeroEx ExtractArgZeroExA
#define IsFileMarkedForPreDelete IsFileMarkedForPreDeleteA
#define IsFileMarkedForPostDelete IsFileMarkedForPostDeleteA
#define IsFileMarkedForDelete IsFileMarkedForDeleteA
#define IsFileMarkedAsDest IsFileMarkedAsDestA
#define IsFileMarkedAsCopy IsFileMarkedAsCopyA
#define IsFileMarkedForMove IsFileMarkedForMoveA
#define IsFileMarkedAsHandled IsFileMarkedAsHandledA
#define IsFileMarkedForChange IsFileMarkedForChangeA
#define IsFileMarkedForCreation IsFileMarkedForCreationA
#define IsDirectoryMarkedAsEmpty IsDirectoryMarkedAsEmptyA
#define MarkFileForDelete MarkFileForDeleteA
#define MarkFileForExternalDelete MarkFileForExternalDeleteA
#define MarkFileForMove MarkFileForMoveA
#define MarkFileForCopy MarkFileForCopyA
#define MarkFileForMoveExternal MarkFileForMoveExternalA
#define MarkFileForShellFolderMove MarkFileForShellFolderMoveA
#define MarkFileForMoveByNt MarkFileForMoveByNtA
#define MarkFileForCleanUp MarkFileForCleanUpA
#define MarkPathAsHandled MarkPathAsHandledA
#define MarkFileForCreation MarkFileForCreationA
#define MarkDirectoryAsPreserved MarkDirectoryAsPreservedA
#define ExtractArgZero ExtractArgZeroA
#define AddPropertyToPath AddPropertyToPathA
#define RemoveAllOperationsFromPath RemoveAllOperationsFromPathA
#define ForceOperationOnPath ForceOperationOnPathA
#define MarkFileAsOsFile MarkFileAsOsFileA
#define MarkFileForBackup MarkFileForBackupA
#define IsFileMarkedAsOsFile IsFileMarkedAsOsFileA
#define DisableFile DisableFileA
#define IsFileDisabled IsFileDisabledA
#define IsFileMarkedForBackup IsFileMarkedForBackupA
#define CanSetOperation CanSetOperationA
#define GetSourceFileLongName GetSourceFileLongNameA
#define IsDirEmpty IsDirEmptyA
#define AddDirPathToEmptyDirsCategory AddDirPathToEmptyDirsCategoryA
#else
#define FILEOP_ENUM FILEOP_ENUMW
#define FILEOP_PROP_ENUM FILEOP_PROP_ENUMW
#define ALL_FILEOPS_ENUM ALL_FILEOPS_ENUMW
#define SHELLFOLDER_ENUM SHELLFOLDER_ENUMW
#define FILERELOC_ENUM FILERELOC_ENUMW
#define AddOperationToPath AddOperationToPathW
#define AddPropertyToPathEx AddPropertyToPathExW
#define AssociatePropertyWithPath AssociatePropertyWithPathW
#define GetSequencerFromPath GetSequencerFromPathW
#define GetPathFromSequencer GetPathFromSequencerW
#define GetOperationsOnPath GetOperationsOnPathW
#define RemoveOperationsFromPath RemoveOperationsFromPathW
#define IsFileMarkedForOperation IsFileMarkedForOperationW
#define IsFileMarkedInData IsFileMarkedInDataW
#define GetPathProperty GetPathPropertyW
#define EnumFirstPathInOperation EnumFirstPathInOperationW
#define EnumNextPathInOperation EnumNextPathInOperationW
#define EnumFirstFileOpProperty EnumFirstFileOpPropertyW
#define EnumNextFileOpProperty EnumNextFileOpPropertyW
#define EnumFirstFileOp EnumFirstFileOpW
#define EnumNextFileOp EnumNextFileOpW
#define TestPathsForOperations TestPathsForOperationsW
#define IsFileMarkedForAnnounce IsFileMarkedForAnnounceW
#define GetFileAnnouncement GetFileAnnouncementW
#define GetFileAnnouncementContext GetFileAnnouncementContextW
#define IsFileProvidedByNt IsFileProvidedByNtW
#define GetNewPathForFile GetNewPathForFileW
#define GetTemporaryLocationForFile GetTemporaryLocationForFileW
#define DeclareTemporaryFile DeclareTemporaryFileW
#define GetNtFilePath GetNtFilePathW
#define GetFileInfoOnNt GetFileInfoOnNtW
#define GetFileStatusOnNt GetFileStatusOnNtW
#define GetPathStringOnNt GetPathStringOnNtW
#define ExtractArgZeroEx ExtractArgZeroExW
#define IsFileMarkedForPreDelete IsFileMarkedForPreDeleteW
#define IsFileMarkedForPostDelete IsFileMarkedForPostDeleteW
#define IsFileMarkedForDelete IsFileMarkedForDeleteW
#define IsFileMarkedAsDest IsFileMarkedAsDestW
#define IsFileMarkedAsCopy IsFileMarkedAsCopyW
#define IsFileMarkedForMove IsFileMarkedForMoveW
#define IsFileMarkedAsHandled IsFileMarkedAsHandledW
#define IsFileMarkedForChange IsFileMarkedForChangeW
#define IsFileMarkedForCreation IsFileMarkedForCreationW
#define IsDirectoryMarkedAsEmpty IsDirectoryMarkedAsEmptyW
#define MarkFileForDelete MarkFileForDeleteW
#define MarkFileForExternalDelete MarkFileForExternalDeleteW
#define MarkFileForMove MarkFileForMoveW
#define MarkFileForCopy MarkFileForCopyW
#define MarkFileForMoveExternal MarkFileForMoveExternalW
#define MarkFileForShellFolderMove MarkFileForShellFolderMoveW
#define MarkFileForMoveByNt MarkFileForMoveByNtW
#define MarkFileForCleanUp MarkFileForCleanUpW
#define MarkPathAsHandled MarkPathAsHandledW
#define MarkFileForCreation MarkFileForCreationW
#define MarkDirectoryAsPreserved MarkDirectoryAsPreservedW
#define RecordSrcFromDest RecordSrcFromDestW
#define ExtractArgZero ExtractArgZeroW
#define AddPropertyToPath AddPropertyToPathW
#define RemoveAllOperationsFromPath RemoveAllOperationsFromPathW
#define ForceOperationOnPath ForceOperationOnPathW
#define MarkFileAsOsFile MarkFileAsOsFileW
#define MarkFileForBackup MarkFileForBackupW
#define IsFileMarkedAsOsFile IsFileMarkedAsOsFileW
#define DisableFile DisableFileW
#define IsFileDisabled IsFileDisabledW
#define IsFileMarkedForBackup IsFileMarkedForBackupW
#define CanSetOperation CanSetOperationW
#define GetSourceFileLongName GetSourceFileLongNameW
#define IsDirEmpty IsDirEmptyW
#define AddDirPathToEmptyDirsCategory AddDirPathToEmptyDirsCategoryW
#endif
|