mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
[KERNEL32]
- Move CopyFileExW() implementation to BasepCopyFileExW() - Call BasepCopyFileExW() from CopyFileExW() - Implement PrivCopyFileExW() using BasepCopyFileExW() TODO: Fix BasepCopyFileExW() implementation svn path=/trunk/; revision=63579
This commit is contained in:
parent
b1847abb77
commit
9bf52b7156
|
@ -191,20 +191,16 @@ SetLastWriteTime(
|
|||
return errCode;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
CopyFileExW (
|
||||
LPCWSTR lpExistingFileName,
|
||||
LPCWSTR lpNewFileName,
|
||||
LPPROGRESS_ROUTINE lpProgressRoutine,
|
||||
LPVOID lpData,
|
||||
BOOL *pbCancel,
|
||||
DWORD dwCopyFlags
|
||||
)
|
||||
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)
|
||||
{
|
||||
NTSTATUS errCode;
|
||||
HANDLE FileHandleSource, FileHandleDest;
|
||||
|
@ -307,6 +303,53 @@ CopyFileExW (
|
|||
return RC;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
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 Ret;
|
||||
HANDLE ExistingHandle, NewHandle;
|
||||
|
||||
ExistingHandle = INVALID_HANDLE_VALUE;
|
||||
NewHandle = INVALID_HANDLE_VALUE;
|
||||
|
||||
_SEH2_TRY
|
||||
{
|
||||
Ret = BasepCopyFileExW(lpExistingFileName,
|
||||
lpNewFileName,
|
||||
lpProgressRoutine,
|
||||
lpData,
|
||||
pbCancel,
|
||||
dwCopyFlags,
|
||||
0,
|
||||
&ExistingHandle,
|
||||
&NewHandle);
|
||||
}
|
||||
_SEH2_FINALLY
|
||||
{
|
||||
if (ExistingHandle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(ExistingHandle);
|
||||
}
|
||||
|
||||
if (NewHandle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(NewHandle);
|
||||
}
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
@ -404,17 +447,53 @@ CopyFileW(IN LPCWSTR lpExistingFileName,
|
|||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
PrivCopyFileExW (
|
||||
LPCWSTR lpExistingFileName,
|
||||
LPCWSTR lpNewFileName,
|
||||
LPPROGRESS_ROUTINE lpProgressRoutine,
|
||||
LPVOID lpData,
|
||||
BOOL *pbCancel,
|
||||
DWORD dwCopyFlags
|
||||
)
|
||||
PrivCopyFileExW(IN LPCWSTR lpExistingFileName,
|
||||
IN LPCWSTR lpNewFileName,
|
||||
IN LPPROGRESS_ROUTINE lpProgressRoutine,
|
||||
IN LPVOID lpData,
|
||||
IN LPBOOL pbCancel,
|
||||
IN DWORD dwCopyFlags)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
BOOL Ret;
|
||||
HANDLE ExistingHandle, NewHandle;
|
||||
|
||||
ExistingHandle = INVALID_HANDLE_VALUE;
|
||||
NewHandle = INVALID_HANDLE_VALUE;
|
||||
|
||||
/* Check for incompatible flags */
|
||||
if (dwCopyFlags & COPY_FILE_FAIL_IF_EXISTS && dwCopyFlags & BASEP_COPY_REPLACE)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_SEH2_TRY
|
||||
{
|
||||
Ret = BasepCopyFileExW(lpExistingFileName,
|
||||
lpNewFileName,
|
||||
lpProgressRoutine,
|
||||
lpData,
|
||||
pbCancel,
|
||||
dwCopyFlags & BASEP_COPY_PUBLIC_MASK,
|
||||
dwCopyFlags & BASEP_COPY_BASEP_MASK,
|
||||
&ExistingHandle,
|
||||
&NewHandle);
|
||||
}
|
||||
_SEH2_FINALLY
|
||||
{
|
||||
if (ExistingHandle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(ExistingHandle);
|
||||
}
|
||||
|
||||
if (NewHandle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(NewHandle);
|
||||
}
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Reference in a new issue