master
hpp 41 lines 1.05 KB
Raw
1 /*++
2
3 Copyright (c) Microsoft. All rights reserved.
4
5 Module Name:
6
7 disk.hpp
8
9 Abstract:
10
11 This file contains disk functions declarations.
12
13 --*/
14
15 #pragma once
16
17 namespace wsl::windows::common::disk {
18
19 constexpr inline auto c_diskOperationRetry = std::chrono::milliseconds(500);
20
21 wil::unique_hfile OpenDevice(_In_ LPCWSTR Name, _In_ DWORD Access = GENERIC_READ, _In_ size_t TimeoutMs = 5 * 1000);
22
23 bool IsDiskOnline(_In_ HANDLE Disk);
24
25 void SetOnline(_In_ HANDLE Disk, _In_ bool Online, _In_ size_t TimeoutMs = 5 * 1000);
26
27 void LockVolume(_In_ HANDLE Disk);
28
29 void Ioctl(_In_ HANDLE Disk, _In_ DWORD Code, _In_opt_ LPVOID InData = nullptr, _In_ DWORD InDataSize = 0, _Out_opt_ LPVOID OutData = nullptr, _In_ DWORD OutDataSize = 0);
30
31 std::map<std::wstring, wil::unique_hfile> ListDiskVolumes(_In_ HANDLE Disk);
32
33 std::vector<std::wstring> GetVolumeDevices(_In_ HANDLE Volume);
34
35 DWORD
36 GetDiskNumber(_In_ HANDLE Disk);
37
38 std::vector<std::wstring> ListDiskPartitions(_In_ HANDLE Disk);
39
40 void ValidateDiskVolumesAreReady(_In_ HANDLE Disk);
41 } // namespace wsl::windows::common::disk