56 EndOfFileFound =
FALSE;
58 while (! EndOfFileFound &&
60 (
NULL == pbCancel || ! *pbCancel))
62 if (
NULL != lpProgressRoutine)
64 ProgressResult = (*lpProgressRoutine)(SourceFileSize,
73 switch (ProgressResult)
76 TRACE(
"Progress callback requested cancel\n");
80 TRACE(
"Progress callback requested stop\n");
85 lpProgressRoutine =
NULL;
128 WARN(
"Error 0x%08x reading writing to dest\n", errCode);
135 EndOfFileFound =
TRUE;
140 WARN(
"Error 0x%08x reading from source\n", errCode);
146 if (! EndOfFileFound && (
NULL != pbCancel && *pbCancel))
148 TRACE(
"User requested cancel\n");
159 TRACE(
"Error 0x%08x allocating buffer of %lu bytes\n", errCode,
RegionSize);
182 WARN(
"Error 0x%08x obtaining FileBasicInformation\n", errCode);
194 WARN(
"Error 0x%0x setting LastWriteTime\n", errCode);
213 HANDLE FileHandleSource, FileHandleDest;
237 TRACE(
"Status 0x%08x obtaining FileStandardInformation for source\n", errCode);
248 TRACE(
"Status 0x%08x obtaining FileBasicInformation for source\n", errCode);
262 errCode =
CopyLoop(FileHandleSource,
289 if (! RC && ! KeepDestOnError)
326 HANDLE ExistingHandle, NewHandle;
378 if (!lpExistingFileNameW)
413 if (!lpExistingFileNameW)
465 HANDLE ExistingHandle, NewHandle;
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
#define ERROR_INVALID_PARAMETER
PUNICODE_STRING WINAPI Basep8BitStringToStaticUnicodeString(IN LPCSTR String)
#define CALLBACK_CHUNK_FINISHED
#define BASEP_COPY_PUBLIC_MASK
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
#define INVALID_HANDLE_VALUE
#define CALLBACK_STREAM_SWITCH
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI CopyFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN BOOL bFailIfExists)
#define STATUS_END_OF_FILE
BOOLEAN WINAPI Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString, IN LPCSTR String)
static NTSTATUS CopyLoop(HANDLE FileHandleSource, HANDLE FileHandleDest, LARGE_INTEGER SourceFileSize, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, BOOL *pbCancel, BOOL *KeepDest)
#define COPY_FILE_FAIL_IF_EXISTS
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
#define DEBUG_CHANNEL(args)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT _Out_ PUINT BytesCopied
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
DWORD BaseSetLastNTError(IN NTSTATUS Status)
#define NtCurrentProcess()
#define NT_SUCCESS(StatCode)
#define PROGRESS_CONTINUE
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
#define FILE_FLAG_NO_BUFFERING
BOOL WINAPI PrivCopyFileExW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine, IN LPVOID lpData, IN LPBOOL pbCancel, IN DWORD dwCopyFlags)
static const char * SystemError(DWORD err)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define FILE_ATTRIBUTE_NORMAL
BOOL BasepCopyFileExW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN LPBOOL pbCancel OPTIONAL, IN DWORD dwCopyFlags, IN DWORD dwBasepFlags, OUT LPHANDLE lpExistingHandle, OUT LPHANDLE lpNewHandle)
NTSYSAPI NTSTATUS NTAPI NtWriteFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID WriteBuffer, IN ULONG WriteBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey OPTIONAL)
DWORD(WINAPI * LPPROGRESS_ROUTINE)(_In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ DWORD, _In_ DWORD, _In_ HANDLE, _In_ HANDLE, _In_opt_ LPVOID)
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)
#define STATUS_REQUEST_ABORTED
BOOL WINAPI CopyFileExA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN LPBOOL pbCancel OPTIONAL, IN DWORD dwCopyFlags)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
#define BASEP_COPY_REPLACE
NTSTATUS NTAPI NtAllocateVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
__kernel_entry _Inout_ _Inout_ PSIZE_T RegionSize
#define BASEP_COPY_BASEP_MASK
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define FileStandardInformation
static NTSTATUS SetLastWriteTime(HANDLE FileHandle, LARGE_INTEGER LastWriteTime)
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
NTSTATUS NTAPI NtReadFile(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByteOffset, PULONG Key)
NTSTATUS NTAPI NtFreeVirtualMemory(IN HANDLE ProcessHandle, IN PVOID *UBaseAddress, IN PSIZE_T URegionSize, IN ULONG FreeType)
PULONG MinorVersion OPTIONAL