root/trunk/win32/nspapi.d

Revision 170, 3.5 kB (checked in by smjg, 5 years ago)

Changed winsock2 to be default per consensus; tidied them up a bit

  • Property svn:eol-style set to native
Line 
1 /***********************************************************************\
2 *                                nspapi.d                               *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                 Translated from MinGW Windows headers                 *
7 *                           by Stewart Gordon                           *
8 *                                                                       *
9 *                       Placed into public domain                       *
10 \***********************************************************************/
11 module win32.nspapi;
12
13 private import win32.basetyps, win32.windef;
14
15 // FIXME: check types of constants
16
17 enum {
18     NS_ALL         =  0,
19
20     NS_SAP,
21     NS_NDS,
22     NS_PEER_BROWSE,
23
24     NS_TCPIP_LOCAL = 10,
25     NS_TCPIP_HOSTS,
26     NS_DNS,
27     NS_NETBT,
28     NS_WINS,
29
30     NS_NBP         = 20,
31
32     NS_MS          = 30,
33     NS_STDA,
34     NS_NTDS,
35
36     NS_X500        = 40,
37     NS_NIS,
38     NS_NISPLUS,
39
40     NS_WRQ         = 50
41 }
42
43 enum {
44     SERVICE_REGISTER   = 1,
45     SERVICE_DEREGISTER = 2,
46     SERVICE_FLUSH      = 3,
47     SERVICE_FLAG_HARD  = 2
48 }
49
50 /*  MinGW makes the next section conditional on winsock.h or winsock2.h
51  *  being included.  But that doesn't translate well into D.
52  */
53 version (Win32_Winsock1) {
54     import win32.winsock;
55 } else {
56     import win32.winsock2;
57 }
58
59 struct SOCKET_ADDRESS {
60     LPSOCKADDR lpSockaddr;
61     INT        iSockaddrLength;
62 }
63 alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS;
64
65 struct CSADDR_INFO {
66     SOCKET_ADDRESS LocalAddr;
67     SOCKET_ADDRESS RemoteAddr;
68     INT            iSocketType;
69     INT            iProtocol;
70 }
71 alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO;
72
73 struct BLOB {
74     ULONG cbSize;
75     BYTE* pBlobData;
76 }
77 alias BLOB* PBLOB, LPBLOB;
78
79 struct SERVICE_ADDRESS {
80     DWORD dwAddressType;
81     DWORD dwAddressFlags;
82     DWORD dwAddressLength;
83     DWORD dwPrincipalLength;
84     BYTE* lpAddress;
85     BYTE* lpPrincipal;
86 }
87
88 struct SERVICE_ADDRESSES {
89     DWORD           dwAddressCount;
90     SERVICE_ADDRESS _Addresses;
91
92     SERVICE_ADDRESS* Addresses() { return &_Addresses; }
93 }
94 alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES;
95
96 struct SERVICE_INFOA {
97     LPGUID lpServiceType;
98     LPSTR  lpServiceName;
99     LPSTR  lpComment;
100     LPSTR  lpLocale;
101     DWORD  dwDisplayHint;
102     DWORD  dwVersion;
103     DWORD  dwTime;
104     LPSTR  lpMachineName;
105     LPSERVICE_ADDRESSES lpServiceAddress;
106     BLOB   ServiceSpecificInfo;
107 }
108 alias SERVICE_INFOA* LPSERVICE_INFOA;
109
110 struct SERVICE_INFOW {
111     LPGUID lpServiceType;
112     LPWSTR lpServiceName;
113     LPWSTR lpComment;
114     LPWSTR lpLocale;
115     DWORD  dwDisplayHint;
116     DWORD  dwVersion;
117     DWORD  dwTime;
118     LPWSTR lpMachineName;
119     LPSERVICE_ADDRESSES lpServiceAddress;
120     BLOB   ServiceSpecificInfo;
121 }
122 alias SERVICE_INFOW* LPSERVICE_INFOW;
123
124 alias void* LPSERVICE_ASYNC_INFO;
125
126 extern (Windows) {
127     INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA,
128       LPSERVICE_ASYNC_INFO, LPDWORD);
129     INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW,
130       LPSERVICE_ASYNC_INFO, LPDWORD);
131     INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD,
132       LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD);
133     INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD,
134       LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD);
135 }
136
137 version (Unicode) {
138     alias SERVICE_INFOW SERVICE_INFO;
139     alias SetServiceW SetService;
140     alias GetAddressByNameW GetAddressByName;
141 } else {
142     alias SERVICE_INFOA SERVICE_INFO;
143     alias SetServiceA SetService;
144     alias GetAddressByNameA GetAddressByName;
145 }
146
147 alias SERVICE_INFO _SERVICE_INFO;
148 alias SERVICE_INFO* LPSERVICE_INFO;
Note: See TracBrowser for help on using the browser.