1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_lmshare.d)
8  */
9 /// Automatically imported and edited from the druntime module
10 /// core.sys.windows.lmshare for the auto-generated win32 package.
11 module win32.lmshare;
12 //version (Windows):
13 @system:
14 version (Win32_UseLib) pragma(lib, "netapi32");
15 
16 import win32.lmcons;
17 import win32.w32api, win32.windef;
18 
19 
20 enum SHARE_NETNAME_PARMNUM      = 1;
21 enum SHARE_TYPE_PARMNUM         = 3;
22 enum SHARE_REMARK_PARMNUM       = 4;
23 enum SHARE_PERMISSIONS_PARMNUM  = 5;
24 enum SHARE_MAX_USES_PARMNUM     = 6;
25 enum SHARE_CURRENT_USES_PARMNUM = 7;
26 enum SHARE_PATH_PARMNUM         = 8;
27 enum SHARE_PASSWD_PARMNUM       = 9;
28 enum SHARE_FILE_SD_PARMNUM      = 501;
29 enum SHARE_REMARK_INFOLEVEL   = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM;
30 enum SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM;
31 enum SHARE_FILE_SD_INFOLEVEL  = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM;
32 
33 enum SHI1_NUM_ELEMENTS = 4;
34 enum SHI2_NUM_ELEMENTS = 10;
35 
36 enum STYPE_DISKTREE = 0;
37 enum STYPE_PRINTQ   = 1;
38 enum STYPE_DEVICE   = 2;
39 enum STYPE_IPC      = 3;
40 enum STYPE_DFS      = 100;
41 enum STYPE_SPECIAL  = 0x80000000;
42 
43 enum DWORD SHI_USES_UNLIMITED = -1;
44 
45 enum SESS_GUEST = 1;
46 enum SESS_NOENCRYPTION = 2;
47 enum SESI1_NUM_ELEMENTS = 8;
48 enum SESI2_NUM_ELEMENTS = 9;
49 
50 enum PERM_FILE_READ   = 1;
51 enum PERM_FILE_WRITE  = 2;
52 enum PERM_FILE_CREATE = 4;
53 
54 struct FILE_INFO_2 {
55     DWORD fi2_id;
56 }
57 alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2;
58 
59 struct FILE_INFO_3 {
60     DWORD fi3_id;
61     DWORD fi3_permissions;
62     DWORD fi3_num_locks;
63     LPTSTR fi3_pathname;
64     LPTSTR fi3_username;
65 }
66 alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3;
67 
68 struct SHARE_INFO_0 {
69     LPTSTR shi0_netname;
70 }
71 alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0;
72 
73 struct SHARE_INFO_1 {
74     LPTSTR shi1_netname;
75     DWORD shi1_type;
76     LPTSTR shi1_remark;
77 }
78 alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1;
79 
80 struct SHARE_INFO_2 {
81     LPTSTR shi2_netname;
82     DWORD shi2_type;
83     LPTSTR shi2_remark;
84     DWORD shi2_permissions;
85     DWORD shi2_max_uses;
86     DWORD shi2_current_uses;
87     LPTSTR shi2_path;
88     LPTSTR shi2_passwd;
89 }
90 alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2;
91 
92 struct SHARE_INFO_502 {
93     LPTSTR shi502_netname;
94     DWORD shi502_type;
95     LPTSTR shi502_remark;
96     DWORD shi502_permissions;
97     DWORD shi502_max_uses;
98     DWORD shi502_current_uses;
99     LPTSTR shi502_path;
100     LPTSTR shi502_passwd;
101     DWORD shi502_reserved;
102     PSECURITY_DESCRIPTOR shi502_security_descriptor;
103 }
104 alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502;
105 
106 struct SHARE_INFO_1004 {
107     LPTSTR shi1004_remark;
108 }
109 alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004;
110 
111 struct SHARE_INFO_1006 {
112     DWORD shi1006_max_uses;
113 }
114 alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006;
115 
116 struct SHARE_INFO_1501 {
117     DWORD shi1501_reserved;
118     PSECURITY_DESCRIPTOR shi1501_security_descriptor;
119 }
120 alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501;
121 
122 struct SESSION_INFO_0 {
123     LPWSTR sesi0_cname;
124 }
125 alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0;
126 
127 struct SESSION_INFO_1 {
128     LPTSTR sesi1_cname;
129     LPTSTR sesi1_username;
130     DWORD sesi1_num_opens;
131     DWORD sesi1_time;
132     DWORD sesi1_idle_time;
133     DWORD sesi1_user_flags;
134 }
135 alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1;
136 
137 struct SESSION_INFO_2 {
138     LPTSTR sesi2_cname;
139     LPTSTR sesi2_username;
140     DWORD sesi2_num_opens;
141     DWORD sesi2_time;
142     DWORD sesi2_idle_time;
143     DWORD sesi2_user_flags;
144     LPWSTR sesi2_cltype_name;
145 }
146 alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2;
147 
148 struct SESSION_INFO_10 {
149     LPWSTR sesi10_cname;
150     LPWSTR sesi10_username;
151     DWORD sesi10_time;
152     DWORD sesi10_idle_time;
153 }
154 alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10;
155 
156 struct SESSION_INFO_502 {
157     LPWSTR sesi502_cname;
158     LPWSTR sesi502_username;
159     DWORD sesi502_num_opens;
160     DWORD sesi502_time;
161     DWORD sesi502_idle_time;
162     DWORD sesi502_user_flags;
163     LPWSTR sesi502_cltype_name;
164     LPWSTR sesi502_transport;
165 }
166 alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502;
167 
168 struct CONNECTION_INFO_0 {
169     DWORD coni0_id;
170 }
171 alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0;
172 
173 struct CONNECTION_INFO_1 {
174     DWORD coni1_id;
175     DWORD coni1_type;
176     DWORD coni1_num_opens;
177     DWORD coni1_num_users;
178     DWORD coni1_time;
179     LPWSTR coni1_username;
180     LPWSTR coni1_netname;
181 }
182 alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1;
183 
184 extern (Windows) {
185 NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD);
186 NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
187 NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle);
188 NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
189 NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD);
190 NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD);
191 NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD);
192 NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD);
193 NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
194 NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR);
195 NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*);
196 NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
197 NET_API_STATUS NetFileClose(LPWSTR,DWORD);
198 NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
199 NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*);
200 }