4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * nspapi.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.nspapi; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.basetyps, win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: check types of constants 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: NS_ALL = 0, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_SAP, 4e2933c620 2015-04-21 kinaba: NS_NDS, 4e2933c620 2015-04-21 kinaba: NS_PEER_BROWSE, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_TCPIP_LOCAL = 10, 4e2933c620 2015-04-21 kinaba: NS_TCPIP_HOSTS, 4e2933c620 2015-04-21 kinaba: NS_DNS, 4e2933c620 2015-04-21 kinaba: NS_NETBT, 4e2933c620 2015-04-21 kinaba: NS_WINS, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_NBP = 20, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_MS = 30, 4e2933c620 2015-04-21 kinaba: NS_STDA, 4e2933c620 2015-04-21 kinaba: NS_NTDS, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_X500 = 40, 4e2933c620 2015-04-21 kinaba: NS_NIS, 4e2933c620 2015-04-21 kinaba: NS_NISPLUS, 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: NS_WRQ = 50 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: SERVICE_REGISTER = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_DEREGISTER = 2, 4e2933c620 2015-04-21 kinaba: SERVICE_FLUSH = 3, 4e2933c620 2015-04-21 kinaba: SERVICE_FLAG_HARD = 2 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* MinGW makes the next section conditional on winsock.h or winsock2.h 4e2933c620 2015-04-21 kinaba: * being included. But that doesn't translate well into D. 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: version (Win32_Winsock1) { 4e2933c620 2015-04-21 kinaba: import win32.winsock; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: import win32.winsock2; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SOCKET_ADDRESS { 4e2933c620 2015-04-21 kinaba: LPSOCKADDR lpSockaddr; 4e2933c620 2015-04-21 kinaba: INT iSockaddrLength; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct CSADDR_INFO { 4e2933c620 2015-04-21 kinaba: SOCKET_ADDRESS LocalAddr; 4e2933c620 2015-04-21 kinaba: SOCKET_ADDRESS RemoteAddr; 4e2933c620 2015-04-21 kinaba: INT iSocketType; 4e2933c620 2015-04-21 kinaba: INT iProtocol; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct BLOB { 4e2933c620 2015-04-21 kinaba: ULONG cbSize; 4e2933c620 2015-04-21 kinaba: BYTE* pBlobData; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias BLOB* PBLOB, LPBLOB; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_ADDRESS { 4e2933c620 2015-04-21 kinaba: DWORD dwAddressType; 4e2933c620 2015-04-21 kinaba: DWORD dwAddressFlags; 4e2933c620 2015-04-21 kinaba: DWORD dwAddressLength; 4e2933c620 2015-04-21 kinaba: DWORD dwPrincipalLength; 4e2933c620 2015-04-21 kinaba: BYTE* lpAddress; 4e2933c620 2015-04-21 kinaba: BYTE* lpPrincipal; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_ADDRESSES { 4e2933c620 2015-04-21 kinaba: DWORD dwAddressCount; 4e2933c620 2015-04-21 kinaba: SERVICE_ADDRESS _Addresses; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: SERVICE_ADDRESS* Addresses() { return &_Addresses; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_INFOA { 4e2933c620 2015-04-21 kinaba: LPGUID lpServiceType; 4e2933c620 2015-04-21 kinaba: LPSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPSTR lpComment; 4e2933c620 2015-04-21 kinaba: LPSTR lpLocale; 4e2933c620 2015-04-21 kinaba: DWORD dwDisplayHint; 4e2933c620 2015-04-21 kinaba: DWORD dwVersion; 4e2933c620 2015-04-21 kinaba: DWORD dwTime; 4e2933c620 2015-04-21 kinaba: LPSTR lpMachineName; 4e2933c620 2015-04-21 kinaba: LPSERVICE_ADDRESSES lpServiceAddress; 4e2933c620 2015-04-21 kinaba: BLOB ServiceSpecificInfo; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFOA* LPSERVICE_INFOA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_INFOW { 4e2933c620 2015-04-21 kinaba: LPGUID lpServiceType; 4e2933c620 2015-04-21 kinaba: LPWSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPWSTR lpComment; 4e2933c620 2015-04-21 kinaba: LPWSTR lpLocale; 4e2933c620 2015-04-21 kinaba: DWORD dwDisplayHint; 4e2933c620 2015-04-21 kinaba: DWORD dwVersion; 4e2933c620 2015-04-21 kinaba: DWORD dwTime; 4e2933c620 2015-04-21 kinaba: LPWSTR lpMachineName; 4e2933c620 2015-04-21 kinaba: LPSERVICE_ADDRESSES lpServiceAddress; 4e2933c620 2015-04-21 kinaba: BLOB ServiceSpecificInfo; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFOW* LPSERVICE_INFOW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias void* LPSERVICE_ASYNC_INFO; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, 4e2933c620 2015-04-21 kinaba: LPSERVICE_ASYNC_INFO, LPDWORD); 4e2933c620 2015-04-21 kinaba: INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, 4e2933c620 2015-04-21 kinaba: LPSERVICE_ASYNC_INFO, LPDWORD); 4e2933c620 2015-04-21 kinaba: INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, 4e2933c620 2015-04-21 kinaba: LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); 4e2933c620 2015-04-21 kinaba: INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, 4e2933c620 2015-04-21 kinaba: LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFOW SERVICE_INFO; 4e2933c620 2015-04-21 kinaba: alias SetServiceW SetService; 4e2933c620 2015-04-21 kinaba: alias GetAddressByNameW GetAddressByName; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFOA SERVICE_INFO; 4e2933c620 2015-04-21 kinaba: alias SetServiceA SetService; 4e2933c620 2015-04-21 kinaba: alias GetAddressByNameA GetAddressByName; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFO _SERVICE_INFO; 4e2933c620 2015-04-21 kinaba: alias SERVICE_INFO* LPSERVICE_INFO;