CopyFileExW with a progress routine, if you just need to be able to cancel and update the UI.

The trick's multithreading module and doing it in another thread.

Or doing it manually with ReadFile/WriteFile and overlapped i/o, or ReadFileEx/WriteFileEx with a file io completion port.