windows-nt/Source/XPSP1/NT/shell/shell32/copy.h
2020-09-26 16:20:57 +08:00

108 lines
4.8 KiB
C

#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