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
226 switch (nKindOfDialog)
289 FIXME(
" Unhandled nKindOfDialog %d stub\n", nKindOfDialog);
302 assert(nKindOfDialog >= 0 && nKindOfDialog < 32);
303 if (
op && (
op->dwYesToAllMask & (1 << nKindOfDialog)))
313 szText, 0, 0, szBuffer,
sizeof(szBuffer), (
va_list*)
args);
321 op->dwYesToAllMask |= (1 << nKindOfDialog);
327 op->req->fAnyOperationsAborted =
TRUE;
396 op->bCancelled |=
op->progress->HasUserCancelled();
482 switch (
op->req->wFunc)
505 op->progress->SetLine(1, szPreflight,
false,
NULL);
512 LPWSTR fileSpecS, pathSpecS, fileSpecD, pathSpecD;
513 WCHAR szFolderS[50], szFolderD[50], szFinalString[260];
523 pathSpecS = fileSpecS;
527 lstrcpynW(szFolderS, pathSpecS,
min(50, fileSpecS - pathSpecS));
530 switch (
op->req->wFunc)
538 pathSpecD = fileSpecD;
542 lstrcpynW(szFolderD, pathSpecD,
min(50, fileSpecD - pathSpecD));
552 op->szBuilderString, 0, 0, szFinalString,
sizeof(szFinalString), (
va_list*)
args);
554 op->progress->SetLine(1, fileSpecS,
false,
NULL);
555 op->progress->SetLine(2, szFinalString,
false,
NULL);
564 DWORD dwStreamNumber,
565 DWORD dwCallbackReason,
579 op->completedSize.QuadPart += TotalFileSize.
QuadPart;
581 op->progress->SetProgress64(
op->completedSize.QuadPart -
584 ,
op->totalSize.QuadPart);
587 op->bCancelled =
op->progress->HasUserCancelled();
621 tmp.
u.LowPart = wfd.nFileSizeLow;
622 tmp.
u.HighPart = wfd.nFileSizeHigh;
675 CStringW strTitle, strMask, strText;
755 WCHAR tmp[] = {
L"A:\\" };
801 TRACE(
"[shell32, SHNotifyCopyFileW] STILL SHIT\n");
812 attribs &= ~FILE_ATTRIBUTE_READONLY;
932 while (*pSlash && *pSlash !=
'\\') pSlash++;
981 if (b_FileMask &&
IsAttribDir(wfd.dwFileAttributes))
983 dwAttr = wfd.dwFileAttributes;
1010 PCSTR tmpSrc = strSrc;
1017 }
while (
size != 1);
1040 *pStrDest = strDest;
1062 int errCode, retCode;
1092 ERR(
"SHFileOperationW failed with 0x%x\n", retCode);
1121 list->num_alloc * 2 *
sizeof(*newx) );
1122 list->feFiles = newx;
1123 list->num_alloc *= 2;
1143 dwLen =
ptr - szFile + 1;
1159 DWORD dwDirLen, dwFullLen;
1165 dwDirLen =
ptr - szWildCard + 1;
1167 dwFullLen = dwDirLen +
lstrlenW(szFileName) + 1;
1170 lstrcpynW(szFullPath, szWildCard, dwDirLen + 1);
1198 file->attributes = wfd.dwFileAttributes;
1284 if (!flList || !flList->
feFiles)
1353 if (!
op->bManyItems)
1364 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1546 op->req->fAnyOperationsAborted =
TRUE;
1551 if (
op->progress !=
NULL)
1552 op->bCancelled |=
op->progress->HasUserCancelled();
1605 op->req->fAnyOperationsAborted =
TRUE;
1649 op->req->fAnyOperationsAborted =
TRUE;
1676 if (
op->progress !=
NULL)
1677 op->bCancelled |=
op->progress->HasUserCancelled();
1697 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1700 szTo[
lstrlenW(szDestPath) + 1] =
'\0';
1807 if (mismatched && !fileDest->
bExists)
1828 op->req->fAnyOperationsAborted =
TRUE;
1833 if (
op->progress !=
NULL)
1834 op->bCancelled |=
op->progress->HasUserCancelled();
1885 if (fFlags & wUnsupportedFlags)
1886 FIXME(
"Unsupported flags: %04x\n", fFlags);
1889#define GET_FILENAME(fe) ((fe)->szFilename[0] ? (fe)->szFilename : (fe)->szFullPath)
1907 for (
k = 0;
k < dwNumDest; ++
k)
1951 if (cchFrom < cchTo)
1953 WCHAR ch = szTo[cchFrom];
2017 op.totalSize.QuadPart = 0ull;
2018 op.completedSize.QuadPart = 0ull;
2028 CLSCTX_INPROC_SERVER,
2038 switch (lpFileOp->
wFunc)
2058 op.progress->StopProgressDialog();
2059 op.progress->Release();
2229 char root[] =
"A:\\";
2249 FIXME(
"unimplemented flags 0x%08x\n",
flags);
2255 if (last_slash ==
NULL)
2263 realpath = temppath;
2274 FIXME(
"treating SHPPFW_ASKDIRCREATE as SHPPFW_DIRCREATE\n");
2322 entryToCount = &
from->feFiles[
i];
2337 WCHAR *pwszFilename = pwszBuf + cchBuf;
2338 size_t cchFilenameMax =
MAX_PATH - cchBuf;
2339 if (!cchFilenameMax)
2343 *(pwszFilename++) =
'\\';
2353 ERR(
"FindFirstFileW %ls failed\n", pwszBuf);
2362 if (!
wcscmp(wfd.cFileName,
L".") || !
wcscmp(wfd.cFileName,
L".."))
2372 FileSize.
u.HighPart = wfd.nFileSizeHigh;
2378 if (
op->progress !=
NULL)
2379 op->bCancelled =
op->progress->HasUserCancelled();
BOOL TRASH_TrashFile(LPCWSTR wszPath)
EXTERN_C HRESULT WINAPI SHUpdateRecycleBinIcon(void)
BOOL TRASH_CanTrashFile(LPCWSTR wszPath)
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
int confirm(const char *cmd, const char *file)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
bool IsEmpty() const noexcept
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)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
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 PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR lpszPath)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
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)
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)
#define PathAddBackslashW
_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
#define SHELL_GetSetting(pss, ssf, field)
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 BOOL move_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCHAR *szTo)
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)
static DWORD validate_operation(LPSHFILEOPSTRUCTW lpFileOp, FILE_LIST *flFrom, FILE_LIST *flTo)
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 DWORD CheckForError(FILE_OPERATION *op, DWORD error, LPCWSTR src)
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 SSF_NOCONFIRMRECYCLE
#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::@4186 u
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
struct _LARGE_INTEGER::@2307 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)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
#define GetWindowLongPtrW
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 *)
HDC WINAPI GetDC(_In_opt_ HWND)
#define MB_ICONEXCLAMATION
#define MAKEINTRESOURCEW(i)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define SetWindowLongPtrW
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)