/// <summary> /// CopyFile2 wrapper. Only available on Windows8 and above. /// </summary> public static void CopyFile2(string source, string destination, bool overwrite = false) { unsafe { int cancel = 0; COPYFILE2_EXTENDED_PARAMETERS parameters = new COPYFILE2_EXTENDED_PARAMETERS(); parameters.dwSize = (uint)Marshal.SizeOf <COPYFILE2_EXTENDED_PARAMETERS>(); parameters.pfCanel = &cancel; parameters.dwCopyFlags = overwrite ? 0 : CopyFileFlags.COPY_FILE_FAIL_IF_EXISTS; HRESULT hr = Direct.CopyFile2(source, destination, ¶meters); if (ErrorMacros.FAILED(hr)) { throw ErrorHelper.GetIoExceptionForHResult(hr, source); } } }
/// <summary> /// CopyFile2 wrapper. Only available on Windows8 and above. /// </summary> public static void CopyFile2(string source, string destination, bool overwrite = false) { unsafe { int cancel = 0; COPYFILE2_EXTENDED_PARAMETERS parameters = new COPYFILE2_EXTENDED_PARAMETERS() { dwSize = (uint)sizeof(COPYFILE2_EXTENDED_PARAMETERS), pfCanel = &cancel, dwCopyFlags = overwrite ? 0 : CopyFileFlags.COPY_FILE_FAIL_IF_EXISTS }; HRESULT hr = Imports.CopyFile2(source, destination, ¶meters); if (ErrorMacros.FAILED(hr)) { throw Errors.GetIoExceptionForHResult(hr, source); } } }