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 src/core/sys/windows/_nspapi.d)
9 */
10 module core.sys.windows.nspapi;
version(Windows)11 version (Windows):
12 @system:
13
14 version (ANSI) {} else version = Unicode;
15
16 import core.sys.windows.basetyps, core.sys.windows.windef;
17
18 // FIXME: check types of constants
19
20 enum {
21 NS_ALL = 0,
22
23 NS_SAP,
24 NS_NDS,
25 NS_PEER_BROWSE,
26
27 NS_TCPIP_LOCAL = 10,
28 NS_TCPIP_HOSTS,
29 NS_DNS,
30 NS_NETBT,
31 NS_WINS,
32
33 NS_NBP = 20,
34
35 NS_MS = 30,
36 NS_STDA,
37 NS_NTDS,
38
39 NS_X500 = 40,
40 NS_NIS,
41 NS_NISPLUS,
42
43 NS_WRQ = 50
44 }
45
46 enum {
47 SERVICE_REGISTER = 1,
48 SERVICE_DEREGISTER = 2,
49 SERVICE_FLUSH = 3,
50 SERVICE_FLAG_HARD = 2
51 }
52
53 import core.sys.windows.winsock2;
54
55 struct SOCKET_ADDRESS {
56 LPSOCKADDR lpSockaddr;
57 INT iSockaddrLength;
58 }
59 alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS;
60
61 struct CSADDR_INFO {
62 SOCKET_ADDRESS LocalAddr;
63 SOCKET_ADDRESS RemoteAddr;
64 INT iSocketType;
65 INT iProtocol;
66 }
67 alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO;
68
69 struct BLOB {
70 ULONG cbSize;
71 BYTE* pBlobData;
72 }
73 alias BLOB* PBLOB, LPBLOB;
74
75 struct SERVICE_ADDRESS {
76 DWORD dwAddressType;
77 DWORD dwAddressFlags;
78 DWORD dwAddressLength;
79 DWORD dwPrincipalLength;
80 BYTE* lpAddress;
81 BYTE* lpPrincipal;
82 }
83
84 struct SERVICE_ADDRESSES {
85 DWORD dwAddressCount;
86 SERVICE_ADDRESS _Addresses;
87
88 SERVICE_ADDRESS* Addresses() return { return &_Addresses; }
89 }
90 alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES;
91
92 struct SERVICE_INFOA {
93 LPGUID lpServiceType;
94 LPSTR lpServiceName;
95 LPSTR lpComment;
96 LPSTR lpLocale;
97 DWORD dwDisplayHint;
98 DWORD dwVersion;
99 DWORD dwTime;
100 LPSTR lpMachineName;
101 LPSERVICE_ADDRESSES lpServiceAddress;
102 BLOB ServiceSpecificInfo;
103 }
104 alias SERVICE_INFOA* LPSERVICE_INFOA;
105
106 struct SERVICE_INFOW {
107 LPGUID lpServiceType;
108 LPWSTR lpServiceName;
109 LPWSTR lpComment;
110 LPWSTR lpLocale;
111 DWORD dwDisplayHint;
112 DWORD dwVersion;
113 DWORD dwTime;
114 LPWSTR lpMachineName;
115 LPSERVICE_ADDRESSES lpServiceAddress;
116 BLOB ServiceSpecificInfo;
117 }
118 alias SERVICE_INFOW* LPSERVICE_INFOW;
119
120 alias void* LPSERVICE_ASYNC_INFO;
121
122 extern (Windows) {
123 INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA,
124 LPSERVICE_ASYNC_INFO, LPDWORD);
125 INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW,
126 LPSERVICE_ASYNC_INFO, LPDWORD);
127 INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD,
128 LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD);
129 INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD,
130 LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD);
131 }
132
133 version (Unicode) {
134 alias SERVICE_INFOW SERVICE_INFO;
135 alias SetServiceW SetService;
136 alias GetAddressByNameW GetAddressByName;
137 } else {
138 alias SERVICE_INFOA SERVICE_INFO;
139 alias SetServiceA SetService;
140 alias GetAddressByNameA GetAddressByName;
141 }
142
143 alias SERVICE_INFO _SERVICE_INFO;
144 alias SERVICE_INFO* LPSERVICE_INFO;
145