mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
4.8 KiB
107 lines
4.8 KiB
#ifndef _COPY_H
|
|
#define _COPY_H
|
|
|
|
#include "ynlist.h"
|
|
|
|
#define ISDIRFINDDATA(finddata) ((finddata).dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
|
#define ISREPARSEFINDDATA(finddata) ((finddata).dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
|
|
|
#define DE_SAMEFILE 0x71 // aahhh! these overlap winerror.h values
|
|
#define DE_MANYSRC1DEST 0x72
|
|
#define DE_DIFFDIR 0x73
|
|
#define DE_ROOTDIR 0x74
|
|
|
|
#define DE_DESTSUBTREE 0x76
|
|
#define DE_WINDOWSFILE 0x77
|
|
#define DE_ACCESSDENIEDSRC 0x78
|
|
#define DE_PATHTODEEP 0x79
|
|
#define DE_MANYDEST 0x7A
|
|
// DE_RENAMREPLACE (0x7B) collided with ERROR_INVALID_NAME - but luckily was not used
|
|
#define DE_INVALIDFILES 0x7C // dos device name or too long
|
|
#define DE_DESTSAMETREE 0x7D
|
|
#define DE_FLDDESTISFILE 0x7E
|
|
#define DE_COMPRESSEDVOLUME 0x7F
|
|
#define DE_FILEDESTISFLD 0x80
|
|
#define DE_FILENAMETOOLONG 0x81
|
|
#define DE_DEST_IS_CDROM 0x82
|
|
#define DE_DEST_IS_DVD 0x83
|
|
#define DE_DEST_IS_CDRECORD 0x84
|
|
#define DE_ERROR_MAX 0xB7
|
|
|
|
#define ERRORONDEST 0x10000 // indicate error on destination file
|
|
|
|
STDAPI_(int) CallFileCopyHooks(HWND hwnd, UINT wFunc, FILEOP_FLAGS fFlags,
|
|
LPCTSTR pszSrcFile, DWORD dwSrcAttribs,
|
|
LPCTSTR pszDestFile, DWORD dwDestAttribs);
|
|
STDAPI_(int) CallPrinterCopyHooks(HWND hwnd, UINT wFunc, PRINTEROP_FLAGS fFlags,
|
|
LPCTSTR pszSrcPrinter, DWORD dwSrcAttribs,
|
|
LPCTSTR pszDestPrinter, DWORD dwDestAttribs);
|
|
STDAPI_(void) CopyHooksTerminate(void);
|
|
|
|
|
|
#define CONFIRM_DELETE_FILE 0x00000001
|
|
#define CONFIRM_DELETE_FOLDER 0x00000002
|
|
#define CONFIRM_REPLACE_FILE 0x00000004
|
|
#define CONFIRM_WONT_RECYCLE_FILE 0x00000008
|
|
#define CONFIRM_REPLACE_FOLDER 0x00000010
|
|
#define CONFIRM_MOVE_FILE 0x00000020
|
|
#define CONFIRM_MOVE_FOLDER 0x00000040
|
|
#define CONFIRM_WONT_RECYCLE_FOLDER 0x00000080
|
|
#define CONFIRM_RENAME_FILE 0x00000100
|
|
#define CONFIRM_RENAME_FOLDER 0x00000200
|
|
#define CONFIRM_SYSTEM_FILE 0x00000400 // any destructive op on a system file
|
|
#define CONFIRM_READONLY_FILE 0x00001000 // any destructive op on a read-only file
|
|
#define CONFIRM_PROGRAM_FILE 0x00002000 // any destructive op on a program
|
|
#define CONFIRM_MULTIPLE 0x00004000 // multiple file/folder confirm setting
|
|
#define CONFIRM_LFNTOFAT 0x00008000
|
|
#define CONFIRM_STREAMLOSS 0x00010000 // Multi-stream file copied from NTFS -> FAT
|
|
#define CONFIRM_PATH_TOO_LONG 0x00020000 // give warning before really nuking paths that are too long to move to recycle bin
|
|
#define CONFIRM_FAILED_ENCRYPT 0x00040000 // we failed to encrypt a file that we were moving into an encrypted directory
|
|
#define CONFIRM_WONT_RECYCLE_OFFLINE 0x00080000 // give warning before really nuking paths that are offline and can't be recycled
|
|
#define CONFIRM_LOST_ENCRYPT_FILE 0x00100000 // Can't move over encryption flag
|
|
#define CONFIRM_LOST_ENCRYPT_FOLDER 0x00200000 // Can't move over encryption flag
|
|
|
|
/// these parts below are true flags, those above are pseudo enums
|
|
#define CONFIRM_WASTEBASKET_PURGE 0x01000000
|
|
|
|
typedef LONG CONFIRM_FLAG;
|
|
|
|
#define CONFIRM_FLAG_FLAG_MASK 0xFF000000
|
|
#define CONFIRM_FLAG_TYPE_MASK 0x00FFFFFF
|
|
|
|
typedef struct {
|
|
CONFIRM_FLAG fConfirm; // confirm things with their bits set here
|
|
CONFIRM_FLAG fNoToAll; // do "no to all" on things with these bits set
|
|
} CONFIRM_DATA;
|
|
|
|
|
|
//
|
|
// BBDeleteFile returns one of the flags below in a out variable so that
|
|
// the caller can detect why BBDeleteFile succeeded/failed.
|
|
//
|
|
#define BBDELETE_SUCCESS 0x00000000
|
|
#define BBDELETE_UNKNOWN_ERROR 0x00000001
|
|
#define BBDELETE_FORCE_NUKE 0x00000002
|
|
#define BBDELETE_CANNOT_DELETE 0x00000004
|
|
#define BBDELETE_SIZE_TOO_BIG 0x00000008
|
|
#define BBDELETE_PATH_TOO_LONG 0x00000010
|
|
#define BBDELETE_NUKE_OFFLINE 0x00000020
|
|
#define BBDELETE_CANCELLED 0x00000040
|
|
|
|
|
|
#ifndef INTERNAL_COPY_ENGINE
|
|
STDAPI_(INT_PTR) ConfirmFileOp(HWND hwnd, LPVOID pcs, CONFIRM_DATA *pcd,
|
|
int nSourceFiles, int cDepth, CONFIRM_FLAG fConfirm,
|
|
LPCTSTR pFileSource, const WIN32_FIND_DATA *pfdSource,
|
|
LPCTSTR pFileDest, const WIN32_FIND_DATA *pfdDest,
|
|
LPCTSTR pStreamNames);
|
|
STDAPI_(int) CountFiles(LPCTSTR pInput);
|
|
#endif
|
|
|
|
STDAPI_(INT_PTR) ValidateCreateFileFromClip(HWND hwnd, LPFILEDESCRIPTOR pfdSrc, TCHAR *szPathDest, PYNLIST pynl);
|
|
|
|
STDAPI_(void) StartCopyEngine(HANDLE *phEventRunning);
|
|
STDAPI_(void) EndCopyEngine(HANDLE hEventRunning);
|
|
STDAPI_(BOOL) IsCopyEngineRunning();
|
|
|
|
#endif // _COPY_H
|