29#define IsAttrib(x, y) ((INVALID_FILE_ATTRIBUTES != (x)) && ((x) & (y)))
30#define IsAttribFile(x) (!((x) & FILE_ATTRIBUTE_DIRECTORY))
31#define IsAttribDir(x) IsAttrib(x, FILE_ATTRIBUTE_DIRECTORY)
32#define IsDotDir(x) ((x[0] == '.') && ((x[1] == 0) || ((x[1] == '.') && (x[2] == 0))))
36#define NEW_FILENAME_ON_COPY_TRIES 100
50#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026
225 switch (nKindOfDialog)
288 FIXME(
" Unhandled nKindOfDialog %d stub\n", nKindOfDialog);
301 assert(nKindOfDialog >= 0 && nKindOfDialog < 32);
302 if (
op && (
op->dwYesToAllMask & (1 << nKindOfDialog)))
312 szText, 0, 0, szBuffer,
sizeof(szBuffer), (
va_list*)
args);
320 op->dwYesToAllMask |= (1 << nKindOfDialog);
326 op->req->fAnyOperationsAborted =
TRUE;
395 op->bCancelled |=
op->progress->HasUserCancelled();
481 switch (
op->req->wFunc)
504 op->progress->SetLine(1, szPreflight,
false,
NULL);
511 LPWSTR fileSpecS, pathSpecS, fileSpecD, pathSpecD;
512 WCHAR szFolderS[50], szFolderD[50], szFinalString[260];
522 pathSpecS = fileSpecS;
526 lstrcpynW(szFolderS, pathSpecS,
min(50, fileSpecS - pathSpecS));
529 switch (
op->req->wFunc)
537 pathSpecD = fileSpecD;
541 lstrcpynW(szFolderD, pathSpecD,
min(50, fileSpecD - pathSpecD));
551 op->szBuilderString, 0, 0, szFinalString,
sizeof(szFinalString), (
va_list*)
args);
553 op->progress->SetLine(1, fileSpecS,
false,
NULL);
554 op->progress->SetLine(2, szFinalString,
false,
NULL);
563 DWORD dwStreamNumber,
564 DWORD dwCallbackReason,
578 op->completedSize.QuadPart += TotalFileSize.
QuadPart;
580 op->progress->SetProgress64(
op->completedSize.QuadPart -
583 ,
op->totalSize.QuadPart);
586 op->bCancelled =
op->progress->HasUserCancelled();
620 tmp.
u.LowPart = wfd.nFileSizeLow;
621 tmp.
u.HighPart = wfd.nFileSizeHigh;
675 CStringW strTitle, strMask, strText;
760 WCHAR tmp[] = {
L"A:\\" };
806 TRACE(
"[shell32, SHNotifyCopyFileW] STILL SHIT\n");
817 attribs &= ~FILE_ATTRIBUTE_READONLY;
941 while (*pSlash && *pSlash !=
'\\') pSlash++;
990 if (b_FileMask &&
IsAttribDir(wfd.dwFileAttributes))
992 dwAttr = wfd.dwFileAttributes;
1019 PCSTR tmpSrc = strSrc;
1026 }
while (
size != 1);
1049 *pStrDest = strDest;
1071 int errCode, retCode;
1101 ERR(
"SHFileOperationW failed with 0x%x\n", retCode);
1130 list->num_alloc * 2 *
sizeof(*newx) );
1131 list->feFiles = newx;
1132 list->num_alloc *= 2;
1152 dwLen =
ptr - szFile + 1;
1168 DWORD dwDirLen, dwFullLen;
1174 dwDirLen =
ptr - szWildCard + 1;
1176 dwFullLen = dwDirLen +
lstrlenW(szFileName) + 1;
1179 lstrcpynW(szFullPath, szWildCard, dwDirLen + 1);
1207 file->attributes = wfd.dwFileAttributes;
1293 if (!flList || !flList->
feFiles)
1373 if (!
op->bManyItems)
1384 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1579 op->req->fAnyOperationsAborted =
TRUE;
1584 if (
op->progress !=
NULL)
1585 op->bCancelled |=
op->progress->HasUserCancelled();
1635 op->req->fAnyOperationsAborted =
TRUE;
1678 op->req->fAnyOperationsAborted =
TRUE;
1707 if (
op->progress !=
NULL)
1708 op->bCancelled |=
op->progress->HasUserCancelled();
1728 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1731 szTo[
lstrlenW(szDestPath) + 1] =
'\0';
1841 if (mismatched && !fileDest->
bExists)
1863 op->req->fAnyOperationsAborted =
TRUE;
1874 if (
op->progress !=
NULL)
1875 op->bCancelled |=
op->progress->HasUserCancelled();
1930 if (fFlags & wUnsupportedFlags)
1931 FIXME(
"Unsupported flags: %04x\n", fFlags);
1952 for (
k = 0;
k < dwNumDest; ++
k)
1996 if (cchFrom < cchTo)
1998 WCHAR ch = szTo[cchFrom];
2062 op.totalSize.QuadPart = 0ull;
2063 op.completedSize.QuadPart = 0ull;
2067 ret = validate_operation(lpFileOp, &flFrom, &flTo);
2074 CLSCTX_INPROC_SERVER,
2084 switch (lpFileOp->
wFunc)
2104 op.progress->StopProgressDialog();
2105 op.progress->Release();
2273 char root[] =
"A:\\";
2293 FIXME(
"unimplemented flags 0x%08x\n",
flags);
2299 if (last_slash ==
NULL)
2307 realpath = temppath;
2318 FIXME(
"treating SHPPFW_ASKDIRCREATE as SHPPFW_DIRCREATE\n");
2366 entryToCount = &
from->feFiles[
i];
2381 WCHAR *pwszFilename = pwszBuf + cchBuf;
2382 size_t cchFilenameMax =
MAX_PATH - cchBuf;
2383 if (!cchFilenameMax)
2387 *(pwszFilename++) =
'\\';
2397 ERR(
"FindFirstFileW %ls failed\n", pwszBuf);
2406 if (!
wcscmp(wfd.cFileName,
L".") || !
wcscmp(wfd.cFileName,
L".."))
2416 FileSize.
u.HighPart = wfd.nFileSizeHigh;
2422 if (
op->progress !=
NULL)
2423 op->bCancelled =
op->progress->HasUserCancelled();
BOOL TRASH_TrashFile(LPCWSTR wszPath)
BOOL TRASH_CanTrashFile(LPCWSTR wszPath)
#define shell32_hInstance
char * strcpy(char *DstString, const char *SrcString)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
void __cdecl Format(UINT nFormatID,...)
#define IDS_OVERWRITEFILE_TEXT
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
#define ERROR_INVALID_PARAMETER
#define GetCurrentDirectoryW(x, y)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR *const ext[]
static void cleanup(void)
BOOL WINAPI CopyFileExW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN LPBOOL pbCancel OPTIONAL, IN DWORD dwCopyFlags)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
UINT WINAPI GetDriveTypeA(IN LPCSTR lpRootPathName)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI MoveFileWithProgressW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine, IN LPVOID lpData, IN DWORD dwFlags)
BOOL WINAPI MoveFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
DWORD WINAPI GetTickCount(VOID)
static const WCHAR sizeW[]
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
void WINAPI SHFree(LPVOID pv)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR lpszPath)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
LPWSTR WINAPI StrPBrkW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
LPWSTR WINAPI StrCpyNW(LPWSTR dst, LPCWSTR src, int count)
int WINAPIV wnsprintfW(LPWSTR lpOut, int cchLimitIn, LPCWSTR lpFmt,...)
void WINAPI DSA_DestroyCallback(HDSA hdsa, PFNDSAENUMCALLBACK enumProc, LPVOID lParam)
#define MOVEFILE_REPLACE_EXISTING
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
TCHAR szTitle[MAX_LOADSTRING]
#define ERROR_ALREADY_EXISTS
#define ERROR_FILE_NOT_FOUND
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_DIRECTORY
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define ASK_OVERWRITE_FILE
#define ASK_DELETE_MULTIPLE_ITEM
#define ASK_OVERWRITE_FOLDER
#define ASK_DELETE_SELECTED
#define ASK_DELETE_FOLDER
#define ASK_CANT_TRASH_ITEM
#define ASK_TRASH_MULTIPLE_ITEM
#define FOF_WANTNUKEWARNING
#define FOF_NOCOPYSECURITYATTRIBS
#define FOF_MULTIDESTFILES
#define FOF_RENAMEONCOLLISION
#define FOF_NOCONFIRMATION
#define FOF_SIMPLEPROGRESS
#define FOF_NO_CONNECTED_ELEMENTS
#define FOF_NORECURSEREPARSE
#define FOF_WANTMAPPINGHANDLE
BOOL SHELL_DeleteDirectoryW(FILE_OPERATION *op, LPCWSTR pszDir, BOOL bShowUI)
static LPWSTR wildcard_to_file(LPCWSTR szWildCard, LPCWSTR szFileName)
static HRESULT rename_files(FILE_OPERATION *op, const FILE_LIST *flFrom, const FILE_LIST *flTo)
EXTERN_C DWORD WINAPI SheGetDirA(DWORD drive, LPSTR buffer)
DWORD CALLBACK SHCopyProgressRoutine(LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData)
#define NEW_FILENAME_ON_COPY_TRIES
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND
static void move_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo)
static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE_LIST *flFrom)
static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
static void parse_wildcard_files(FILE_LIST *flList, LPCWSTR szFile, LPDWORD pdwListIndex)
EXTERN_C DWORD WINAPI SheChangeDirW(LPWSTR path)
static HRESULT copy_files(FILE_OPERATION *op, BOOL multiDest, const FILE_LIST *flFrom, FILE_LIST *flTo)
EXTERN_C int WINAPI IsNetDrive(int drive)
static void confirm_msg_move_button(HWND hDlg, INT iId, INT *xPos, INT yOffset, BOOL bShow)
int WINAPI SHCreateDirectoryExA(HWND hWnd, LPCSTR path, LPSECURITY_ATTRIBUTES sec)
static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
static DWORD _ConvertAtoW(PCSTR strSrc, PCWSTR *pStrDest, BOOL isList)
static INT_PTR ConfirmMsgBox_Init(HWND hDlg, LPARAM lParam)
static DWORD SHNotifyDeleteFileW(FILE_OPERATION *op, LPCWSTR path)
EXTERN_C DWORD WINAPI Win32DeleteFileW(LPCWSTR path)
static int CALLBACK _DestroyCallback(void *p, void *pData)
static void destroy_file_list(FILE_LIST *flList)
EXTERN_C HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status)
int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
static INT_PTR CALLBACK ConfirmMsgBoxProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
static void copy_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo)
static CStringW try_find_new_name(LPCWSTR szDestPath)
static DWORD SHNotifyRemoveDirectoryW(LPCWSTR path)
EXTERN_C DWORD WINAPI SheChangeDirA(LPSTR path)
EXTERN_C INT WINAPI RealDriveType(INT drive, BOOL bQueryNet)
static void __inline grow_list(FILE_LIST *list)
EXTERN_C DWORD WINAPI SheGetDirW(DWORD drive, LPWSTR buffer)
EXTERN_C BOOL WINAPI Win32RemoveDirectoryW(LPCWSTR path)
BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
static void add_file_to_entry(FILE_ENTRY *feFile, LPCWSTR szFile)
EXTERN_C HRESULT WINAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *modless, LPCSTR path, DWORD flags)
static void create_dest_dirs(LPCWSTR szDestDir)
static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCHAR *szTo)
static BOOL SHELL_ConfirmDialogW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir, FILE_OPERATION *op)
EXTERN_C HRESULT WINAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *modless, LPCWSTR path, DWORD flags)
static BOOL SHELL_ConfirmIDs(int nKindOfDialog, SHELL_ConfirmIDstruc *ids)
static void SHELL32_FreeUnicodeBuf(LPWSTR wPath)
static void _SetOperationTitle(FILE_OPERATION *op)
int WINAPI SHCreateDirectory(HWND hWnd, LPCWSTR path)
int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, HICON hIcon, BOOL bYesToAll)
static DWORD SHNotifyCreateDirectoryW(LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
static INT_PTR ConfirmMsgBox_Paint(HWND hDlg)
static DWORD SHNotifyMoveFileW(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest, BOOL isdir)
static HRESULT delete_files(FILE_OPERATION *op, const FILE_LIST *flFrom)
DWORD WINAPI _FileOpCountManager(FILE_OPERATION *op, const FILE_LIST *flFrom)
static DWORD move_files(FILE_OPERATION *op, BOOL multiDest, const FILE_LIST *flFrom, const FILE_LIST *flTo)
static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
static BOOL _FileOpCount(FILE_OPERATION *op, LPWSTR pwszBuf, BOOL bFolder, DWORD *ticks)
static void _SetOperationTexts(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest)
static void move_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
EXTERN_C BOOL WINAPI Win32CreateDirectoryW(LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
static void check_flags(FILEOP_FLAGS fFlags)
static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars)
static DWORD SHNotifyCopyFileW(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
static BOOL SHIsCdRom(LPCWSTR path)
#define SHPPFW_IGNOREFILENAME
#define SHPPFW_ASKDIRCREATE
#define IDD_YESTOALL_MSGBOX
#define IDS_DELETESELECTED_TEXT
#define IDI_SHELL_FOLDER_MOVE2
#define IDI_SHELL_CONFIRM_DELETE
#define IDS_MOVEERRORSUBFOLDER
#define IDS_OVERWRITEFOLDER_TEXT
#define IDS_FILEOOP_FROM_TO
#define IDS_CREATEFOLDER_DENIED
#define IDS_OVERWRITEFILE_CAPTION
#define IDS_FILEOOP_MOVING
#define IDS_COPYERRORSUBFOLDER
#define IDC_YESTOALL_MESSAGE
#define IDS_CREATEFOLDER_CAPTION
#define IDS_CANTTRASH_TEXT
#define IDS_MOVEERRORSAME
#define IDS_TRASHITEM_TEXT
#define IDS_DELETEITEM_CAPTION
#define IDS_FILEOOP_DELETING
#define IDS_TRASHMULTIPLE_TEXT
#define IDC_YESTOALL_ICON
#define IDS_TRASHFOLDER_TEXT
#define IDS_FILEOOP_COPYING
#define IDS_DELETEFOLDER_CAPTION
#define IDS_DELETEITEM_TEXT
#define IDI_SHELL_TRASH_FILE
#define IDS_COPYERRORTITLE
#define IDS_COPYERRORSAME
#define IDS_FILEOOP_PREFLIGHT
#define IDS_MOVEERRORTITLE
#define IDS_DELETEMULTIPLE_TEXT
#define IDS_MOVEERRORSAMEFOLDER
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
IProgressDialog * progress
ULARGE_INTEGER completedSize
BOOL fAnyOperationsAborted
BOOL fAnyOperationsAborted
LPCWSTR lpszProgressTitle
struct _ULARGE_INTEGER::@3944 u
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
struct _LARGE_INTEGER::@2274 u
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_FROM_SYSTEM
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define CALLBACK_STREAM_SWITCH
#define ERROR_NO_MORE_SEARCH_HANDLES
#define ERROR_PATH_NOT_FOUND
#define ERROR_BAD_PATHNAME
#define ERROR_GEN_FAILURE
#define ERROR_FILE_EXISTS
#define ERROR_FILENAME_EXCED_RANGE
#define HRESULT_FROM_WIN32(x)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
HDC WINAPI GetDC(_In_opt_ HWND)
#define MB_ICONEXCLAMATION
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define MAKEINTRESOURCEW(i)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
#define IID_PPV_ARG(Itype, ppType)