| 189 | } |
| 190 | |
| 191 | HRESULT NFileOperations::CopyFiles( |
| 192 | HWND hwnd, IShellItem *destinationFolder, std::vector<PCIDLIST_ABSOLUTE> &pidls, bool move) |
| 193 | { |
| 194 | IFileOperation *fo; |
| 195 | HRESULT hr = CoCreateInstance(CLSID_FileOperation, nullptr, CLSCTX_ALL, IID_PPV_ARGS(&fo)); |
| 196 | |
| 197 | if (FAILED(hr)) |
| 198 | { |
| 199 | return hr; |
| 200 | } |
| 201 | |
| 202 | BOOST_SCOPE_EXIT(fo) |
| 203 | { |
| 204 | fo->Release(); |
| 205 | } |
| 206 | BOOST_SCOPE_EXIT_END |
| 207 | |
| 208 | hr = fo->SetOwnerWindow(hwnd); |
| 209 | |
| 210 | if (FAILED(hr)) |
| 211 | { |
| 212 | return hr; |
| 213 | } |
| 214 | |
| 215 | hr = fo->SetOperationFlags(FOF_ALLOWUNDO); |
| 216 | |
| 217 | if (FAILED(hr)) |
| 218 | { |
| 219 | return hr; |
| 220 | } |
| 221 | |
| 222 | IShellItemArray *shellItemArray; |
| 223 | hr = SHCreateShellItemArrayFromIDLists( |
| 224 | static_cast<UINT>(pidls.size()), &pidls[0], &shellItemArray); |
| 225 | |
| 226 | if (FAILED(hr)) |
| 227 | { |
| 228 | return hr; |
| 229 | } |
| 230 | |
| 231 | BOOST_SCOPE_EXIT(shellItemArray) |
| 232 | { |
| 233 | shellItemArray->Release(); |
| 234 | } |
| 235 | BOOST_SCOPE_EXIT_END |
| 236 | |
| 237 | IUnknown *unknown; |
| 238 | hr = shellItemArray->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&unknown)); |
| 239 | |
| 240 | if (FAILED(hr)) |
| 241 | { |
| 242 | return hr; |
| 243 | } |
| 244 | |
| 245 | BOOST_SCOPE_EXIT(unknown) |
| 246 | { |
| 247 | unknown->Release(); |
| 248 | } |
nothing calls this directly
no test coverage detected