xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/winnetwk.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_winnetwk.d)
9  */
10 module core.sys.windows.winnetwk;
version(Windows)11 version (Windows):
12 @system:
13 
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "mpr");
16 
17 import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt;
18 
19 enum : DWORD {
20     WNNC_NET_MSNET       = 0x00010000,
21     WNNC_NET_LANMAN      = 0x00020000,
22     WNNC_NET_NETWARE     = 0x00030000,
23     WNNC_NET_VINES       = 0x00040000,
24     WNNC_NET_10NET       = 0x00050000,
25     WNNC_NET_LOCUS       = 0x00060000,
26     WNNC_NET_SUN_PC_NFS  = 0x00070000,
27     WNNC_NET_LANSTEP     = 0x00080000,
28     WNNC_NET_9TILES      = 0x00090000,
29     WNNC_NET_LANTASTIC   = 0x000A0000,
30     WNNC_NET_AS400       = 0x000B0000,
31     WNNC_NET_FTP_NFS     = 0x000C0000,
32     WNNC_NET_PATHWORKS   = 0x000D0000,
33     WNNC_NET_LIFENET     = 0x000E0000,
34     WNNC_NET_POWERLAN    = 0x000F0000,
35     WNNC_NET_BWNFS       = 0x00100000,
36     WNNC_NET_COGENT      = 0x00110000,
37     WNNC_NET_FARALLON    = 0x00120000,
38     WNNC_NET_APPLETALK   = 0x00130000,
39     WNNC_NET_INTERGRAPH  = 0x00140000,
40     WNNC_NET_SYMFONET    = 0x00150000,
41     WNNC_NET_CLEARCASE   = 0x00160000,
42     WNNC_NET_FRONTIER    = 0x00170000,
43     WNNC_NET_BMC         = 0x00180000,
44     WNNC_NET_DCE         = 0x00190000,
45     WNNC_NET_AVID        = 0x001A0000,
46     WNNC_NET_DOCUSPACE   = 0x001B0000,
47     WNNC_NET_MANGOSOFT   = 0x001C0000,
48     WNNC_NET_SERNET      = 0x001D0000,
49     WNNC_NET_DECORB      = 0x00200000,
50     WNNC_NET_PROTSTOR    = 0x00210000,
51     WNNC_NET_FJ_REDIR    = 0x00220000,
52     WNNC_NET_DISTINCT    = 0x00230000,
53     WNNC_NET_TWINS       = 0x00240000,
54     WNNC_NET_RDR2SAMPLE  = 0x00250000,
55     WNNC_NET_CSC         = 0x00260000,
56     WNNC_NET_3IN1        = 0x00270000,
57     WNNC_NET_EXTENDNET   = 0x00290000,
58     WNNC_NET_OBJECT_DIRE = 0x00300000,
59     WNNC_NET_MASFAX      = 0x00310000,
60     WNNC_NET_HOB_NFS     = 0x00320000,
61     WNNC_NET_SHIVA       = 0x00330000,
62     WNNC_NET_IBMAL       = 0x00340000,
63     WNNC_CRED_MANAGER    = 0xFFFF0000
64 }
65 
66 enum : DWORD {
67     RESOURCE_CONNECTED  = 1,
68     RESOURCE_GLOBALNET  = 2,
69     RESOURCE_REMEMBERED = 3,
70     RESOURCE_RECENT     = 4,
71     RESOURCE_CONTEXT    = 5
72 }
73 
74 enum DWORD
75     RESOURCETYPE_ANY      = 0,
76     RESOURCETYPE_DISK     = 1,
77     RESOURCETYPE_PRINT    = 2,
78     RESOURCETYPE_RESERVED = 8,
79     RESOURCETYPE_UNKNOWN  = 0xFFFFFFFF;
80 
81 enum DWORD
82     RESOURCEUSAGE_CONNECTABLE   = 0x00000001,
83     RESOURCEUSAGE_CONTAINER     = 0x00000002,
84     RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004,
85     RESOURCEUSAGE_SIBLING       = 0x00000008,
86     RESOURCEUSAGE_ATTACHED      = 0x00000010,
87     RESOURCEUSAGE_ALL           = (RESOURCEUSAGE_CONNECTABLE
88                                   | RESOURCEUSAGE_CONTAINER
89                                   | RESOURCEUSAGE_ATTACHED),
90     RESOURCEUSAGE_RESERVED      = 0x80000000;
91 
92 enum : DWORD {
93     RESOURCEDISPLAYTYPE_GENERIC,
94     RESOURCEDISPLAYTYPE_DOMAIN,
95     RESOURCEDISPLAYTYPE_SERVER,
96     RESOURCEDISPLAYTYPE_SHARE,
97     RESOURCEDISPLAYTYPE_FILE,
98     RESOURCEDISPLAYTYPE_GROUP,
99     RESOURCEDISPLAYTYPE_NETWORK,
100     RESOURCEDISPLAYTYPE_ROOT,
101     RESOURCEDISPLAYTYPE_SHAREADMIN,
102     RESOURCEDISPLAYTYPE_DIRECTORY,
103     RESOURCEDISPLAYTYPE_TREE // = 10
104 }
105 
106 enum NETPROPERTY_PERSISTENT = 1;
107 
108 enum DWORD
109     CONNECT_UPDATE_PROFILE =   1,
110     CONNECT_UPDATE_RECENT  =   2,
111     CONNECT_TEMPORARY      =   4,
112     CONNECT_INTERACTIVE    =   8,
113     CONNECT_PROMPT         =  16,
114     CONNECT_NEED_DRIVE     =  32,
115     CONNECT_REFCOUNT       =  64,
116     CONNECT_REDIRECT       = 128,
117     CONNECT_LOCALDRIVE     = 256,
118     CONNECT_CURRENT_MEDIA  = 512;
119 
120 enum DWORD
121     CONNDLG_RO_PATH     =  1,
122     CONNDLG_CONN_POINT  =  2,
123     CONNDLG_USE_MRU     =  4,
124     CONNDLG_HIDE_BOX    =  8,
125     CONNDLG_PERSIST     = 16,
126     CONNDLG_NOT_PERSIST = 32;
127 
128 enum DWORD
129     DISC_UPDATE_PROFILE =  1,
130     DISC_NO_FORCE       = 64;
131 
132 enum DWORD
133     WNFMT_MULTILINE   =  1,
134     WNFMT_ABBREVIATED =  2,
135     WNFMT_INENUM      = 16,
136     WNFMT_CONNECTION  = 32;
137 
138 enum : DWORD {
139     WN_SUCCESS                   = NO_ERROR,
140     WN_NO_ERROR                  = NO_ERROR,
141     WN_NOT_SUPPORTED             = ERROR_NOT_SUPPORTED,
142     WN_CANCEL                    = ERROR_CANCELLED,
143     WN_RETRY                     = ERROR_RETRY,
144     WN_NET_ERROR                 = ERROR_UNEXP_NET_ERR,
145     WN_MORE_DATA                 = ERROR_MORE_DATA,
146     WN_BAD_POINTER               = ERROR_INVALID_ADDRESS,
147     WN_BAD_VALUE                 = ERROR_INVALID_PARAMETER,
148     WN_BAD_USER                  = ERROR_BAD_USERNAME,
149     WN_BAD_PASSWORD              = ERROR_INVALID_PASSWORD,
150     WN_ACCESS_DENIED             = ERROR_ACCESS_DENIED,
151     WN_FUNCTION_BUSY             = ERROR_BUSY,
152     WN_WINDOWS_ERROR             = ERROR_UNEXP_NET_ERR,
153     WN_OUT_OF_MEMORY             = ERROR_NOT_ENOUGH_MEMORY,
154     WN_NO_NETWORK                = ERROR_NO_NETWORK,
155     WN_EXTENDED_ERROR            = ERROR_EXTENDED_ERROR,
156     WN_BAD_LEVEL                 = ERROR_INVALID_LEVEL,
157     WN_BAD_HANDLE                = ERROR_INVALID_HANDLE,
158     WN_NOT_INITIALIZING          = ERROR_ALREADY_INITIALIZED,
159     WN_NO_MORE_DEVICES           = ERROR_NO_MORE_DEVICES,
160     WN_NOT_CONNECTED             = ERROR_NOT_CONNECTED,
161     WN_OPEN_FILES                = ERROR_OPEN_FILES,
162     WN_DEVICE_IN_USE             = ERROR_DEVICE_IN_USE,
163     WN_BAD_NETNAME               = ERROR_BAD_NET_NAME,
164     WN_BAD_LOCALNAME             = ERROR_BAD_DEVICE,
165     WN_ALREADY_CONNECTED         = ERROR_ALREADY_ASSIGNED,
166     WN_DEVICE_ERROR              = ERROR_GEN_FAILURE,
167     WN_CONNECTION_CLOSED         = ERROR_CONNECTION_UNAVAIL,
168     WN_NO_NET_OR_BAD_PATH        = ERROR_NO_NET_OR_BAD_PATH,
169     WN_BAD_PROVIDER              = ERROR_BAD_PROVIDER,
170     WN_CANNOT_OPEN_PROFILE       = ERROR_CANNOT_OPEN_PROFILE,
171     WN_BAD_PROFILE               = ERROR_BAD_PROFILE,
172     WN_BAD_DEV_TYPE              = ERROR_BAD_DEV_TYPE,
173     WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED,
174     WN_NO_MORE_ENTRIES           = ERROR_NO_MORE_ITEMS,
175     WN_NOT_CONTAINER             = ERROR_NOT_CONTAINER,
176     WN_NOT_AUTHENTICATED         = ERROR_NOT_AUTHENTICATED,
177     WN_NOT_LOGGED_ON             = ERROR_NOT_LOGGED_ON,
178     WN_NOT_VALIDATED             = ERROR_NO_LOGON_SERVERS
179 }
180 
181 enum : DWORD {
182     UNIVERSAL_NAME_INFO_LEVEL = 1,
183     REMOTE_NAME_INFO_LEVEL
184 }
185 
186 enum DWORD
187     NETINFO_DLL16      = 1,
188     NETINFO_DISKRED    = 4,
189     NETINFO_PRINTERRED = 8;
190 
191 enum DWORD
192     RP_LOGON   = 1,
193     RP_INIFILE = 2;
194 
195 enum DWORD PP_DISPLAYERRORS = 1;
196 
197 enum DWORD
198     WNCON_FORNETCARD = 1,
199     WNCON_NOTROUTED  = 2,
200     WNCON_SLOWLINK   = 4,
201     WNCON_DYNAMIC    = 8;
202 
203 struct NETRESOURCEA {
204     DWORD dwScope;
205     DWORD dwType;
206     DWORD dwDisplayType;
207     DWORD dwUsage;
208     LPSTR lpLocalName;
209     LPSTR lpRemoteName;
210     LPSTR lpComment;
211     LPSTR lpProvider;
212 }
213 alias NETRESOURCEA* LPNETRESOURCEA;
214 
215 struct NETRESOURCEW {
216     DWORD  dwScope;
217     DWORD  dwType;
218     DWORD  dwDisplayType;
219     DWORD  dwUsage;
220     LPWSTR lpLocalName;
221     LPWSTR lpRemoteName;
222     LPWSTR lpComment ;
223     LPWSTR lpProvider;
224 }
225 alias NETRESOURCEW* LPNETRESOURCEW;
226 
227 struct CONNECTDLGSTRUCTA {
228     DWORD          cbStructure;
229     HWND           hwndOwner;
230     LPNETRESOURCEA lpConnRes;
231     DWORD          dwFlags;
232     DWORD          dwDevNum;
233 }
234 alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA;
235 
236 struct CONNECTDLGSTRUCTW {
237     DWORD          cbStructure;
238     HWND           hwndOwner;
239     LPNETRESOURCEW lpConnRes;
240     DWORD          dwFlags;
241     DWORD          dwDevNum;
242 }
243 alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW;
244 
245 struct DISCDLGSTRUCTA {
246     DWORD cbStructure;
247     HWND  hwndOwner;
248     LPSTR lpLocalName;
249     LPSTR lpRemoteName;
250     DWORD dwFlags;
251 }
252 alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA;
253 
254 struct DISCDLGSTRUCTW {
255     DWORD  cbStructure;
256     HWND   hwndOwner;
257     LPWSTR lpLocalName;
258     LPWSTR lpRemoteName;
259     DWORD  dwFlags;
260 }
261 alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW;
262 
263 struct UNIVERSAL_NAME_INFOA {
264     LPSTR lpUniversalName;
265 }
266 alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA;
267 
268 struct UNIVERSAL_NAME_INFOW {
269     LPWSTR lpUniversalName;
270 }
271 alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW;
272 
273 struct REMOTE_NAME_INFOA {
274     LPSTR lpUniversalName;
275     LPSTR lpConnectionName;
276     LPSTR lpRemainingPath;
277 }
278 alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA;
279 
280 struct REMOTE_NAME_INFOW {
281     LPWSTR lpUniversalName;
282     LPWSTR lpConnectionName;
283     LPWSTR lpRemainingPath;
284 }
285 alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW;
286 
287 struct NETINFOSTRUCT {
288     DWORD cbStructure;
289     DWORD dwProviderVersion;
290     DWORD dwStatus;
291     DWORD dwCharacteristics;
292     ULONG_PTR dwHandle;
293     WORD  wNetType;
294     DWORD dwPrinters;
295     DWORD dwDrives;
296 }
297 alias NETINFOSTRUCT* LPNETINFOSTRUCT;
298 
299 extern (Windows) {
300     alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA;
301     alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW;
302     alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA;
303     alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW;
304     alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD)
305       PFNPROCESSPOLICIESA;
306     alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD)
307       PFNPROCESSPOLICIESW;
308 }
309 
310 struct NETCONNECTINFOSTRUCT {
311     DWORD cbStructure;
312     DWORD dwFlags;
313     DWORD dwSpeed;
314     DWORD dwDelay;
315     DWORD dwOptDataSize;
316 }
317 alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT;
318 
319 extern (Windows) {
320     DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD);
321     DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD);
322     DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD);
323     DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD);
324     DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL);
325     DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL);
326     DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD);
327     DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD);
328     DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD,
329       LPSTR, PDWORD, PDWORD);
330     DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD,
331       LPWSTR, PDWORD, PDWORD);
332     DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID);
333     DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID);
334     DWORD WNetConnectionDialog(HWND, DWORD);
335     DWORD WNetDisconnectDialog(HWND, DWORD);
336     DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
337     DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
338     DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
339     DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
340     DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE);
341     DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE);
342     DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD);
343     DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD);
344     DWORD WNetCloseEnum(HANDLE);
345     DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD);
346     DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD);
347     DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD);
348     DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD);
349     DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD);
350     DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD);
351     DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT);
352     DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT);
353     DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD,
354       LPSTR*);
355     DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD,
356       LPWSTR*);
357     DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD);
358     DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD);
359     DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD);
360     DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD);
361     DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA,
362       LPNETCONNECTINFOSTRUCT);
363     DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW,
364       LPNETCONNECTINFOSTRUCT);
365     deprecated {
366         DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR);
367         DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR);
368         DWORD WNetCancelConnectionA(LPCSTR, BOOL);
369         DWORD WNetCancelConnectionW(LPCWSTR, BOOL);
370     }
371 }
372 
version(Unicode)373 version (Unicode) {
374     alias PFNGETPROFILEPATHW PFNGETPROFILEPATH;
375     alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE;
376     alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES;
377     alias NETRESOURCEW NETRESOURCE;
378     alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT;
379     alias DISCDLGSTRUCTW DISCDLGSTRUCT;
380     alias REMOTE_NAME_INFOW REMOTE_NAME_INFO;
381     alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO;
382     alias WNetAddConnection2W WNetAddConnection2;
383     alias WNetAddConnection3W WNetAddConnection3;
384     alias WNetCancelConnection2W WNetCancelConnection2;
385     alias WNetGetConnectionW WNetGetConnection;
386     alias WNetUseConnectionW WNetUseConnection;
387     alias WNetSetConnectionW WNetSetConnection;
388     alias WNetConnectionDialog1W WNetConnectionDialog1;
389     alias WNetDisconnectDialog1W WNetDisconnectDialog1;
390     alias WNetOpenEnumW WNetOpenEnum;
391     alias WNetEnumResourceW WNetEnumResource;
392     alias WNetGetUniversalNameW WNetGetUniversalName;
393     alias WNetGetUserW WNetGetUser;
394     alias WNetGetProviderNameW WNetGetProviderName;
395     alias WNetGetNetworkInformationW WNetGetNetworkInformation;
396     alias WNetGetResourceInformationW WNetGetResourceInformation;
397     alias WNetGetResourceParentW WNetGetResourceParent;
398     alias WNetGetLastErrorW WNetGetLastError;
399     alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance;
400     deprecated {
401         alias WNetAddConnectionW WNetAddConnection;
402         alias WNetCancelConnectionW WNetCancelConnection;
403     }
404 } else {
405     alias PFNGETPROFILEPATHA PFNGETPROFILEPATH;
406     alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE;
407     alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES;
408     alias NETRESOURCEA NETRESOURCE;
409     alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT;
410     alias DISCDLGSTRUCTA DISCDLGSTRUCT;
411     alias REMOTE_NAME_INFOA REMOTE_NAME_INFO;
412     alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO;
413     alias WNetAddConnection2A WNetAddConnection2;
414     alias WNetAddConnection3A WNetAddConnection3;
415     alias WNetCancelConnection2A WNetCancelConnection2;
416     alias WNetGetConnectionA WNetGetConnection;
417     alias WNetUseConnectionA WNetUseConnection;
418     alias WNetSetConnectionA WNetSetConnection;
419     alias WNetConnectionDialog1A WNetConnectionDialog1;
420     alias WNetDisconnectDialog1A WNetDisconnectDialog1;
421     alias WNetOpenEnumA WNetOpenEnum;
422     alias WNetEnumResourceA WNetEnumResource;
423     alias WNetGetUniversalNameA WNetGetUniversalName;
424     alias WNetGetUserA WNetGetUser;
425     alias WNetGetProviderNameA WNetGetProviderName;
426     alias WNetGetNetworkInformationA WNetGetNetworkInformation;
427     alias WNetGetResourceInformationA WNetGetResourceInformation;
428     alias WNetGetResourceParentA WNetGetResourceParent;
429     alias WNetGetLastErrorA WNetGetLastError;
430     alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance;
431     deprecated {
432         alias WNetAddConnectionA WNetAddConnection;
433         alias WNetCancelConnectionA WNetCancelConnection;
434     }
435 }
436 
437 alias NETRESOURCE* LPNETRESOURCE;
438 alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT;
439 alias DISCDLGSTRUCT* LPDISCDLGSTRUCT;
440 alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO;
441 alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO;
442