1 #pragma once
2 
3 #include <vector>
4 #include <string>
5 #include <sstream>
6 #ifndef __REACTOS__
7 #include <string_view>
8 #else
9 #define string_view string
10 #define wstring_view wstring
11 #endif
12 #include <iostream>
13 #include <iomanip>
14 
15 class mountmgr_point {
16 public:
17     mountmgr_point(const std::wstring_view& symlink, const std::string_view& unique_id, const std::wstring_view& device_name) : symlink(symlink), device_name(device_name), unique_id(unique_id) {
18     }
19 
20     std::wstring symlink, device_name;
21     std::string unique_id;
22 };
23 
24 class mountmgr {
25 public:
26     mountmgr();
27     ~mountmgr();
28     void create_point(const std::wstring_view& symlink, const std::wstring_view& device) const;
29     void delete_points(const std::wstring_view& symlink, const std::wstring_view& unique_id = L"", const std::wstring_view& device_name = L"") const;
30     std::vector<mountmgr_point> query_points(const std::wstring_view& symlink = L"", const std::wstring_view& unique_id = L"", const std::wstring_view& device_name = L"") const;
31 
32 private:
33     HANDLE h;
34 };
35