/** * Windows API header module * * Translated from MinGW Windows headers * * Authors: Stewart Gordon * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC core/sys/windows/_nspapi.d) */ module core.sys.windows.nspapi; version (Windows): @system: version (ANSI) {} else version = Unicode; import core.sys.windows.basetyps, core.sys.windows.windef; // FIXME: check types of constants enum { NS_ALL = 0, NS_SAP, NS_NDS, NS_PEER_BROWSE, NS_TCPIP_LOCAL = 10, NS_TCPIP_HOSTS, NS_DNS, NS_NETBT, NS_WINS, NS_NBP = 20, NS_MS = 30, NS_STDA, NS_NTDS, NS_X500 = 40, NS_NIS, NS_NISPLUS, NS_WRQ = 50 } enum { SERVICE_REGISTER = 1, SERVICE_DEREGISTER = 2, SERVICE_FLUSH = 3, SERVICE_FLAG_HARD = 2 } import core.sys.windows.winsock2; struct SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; INT iSockaddrLength; } alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; struct CSADDR_INFO { SOCKET_ADDRESS LocalAddr; SOCKET_ADDRESS RemoteAddr; INT iSocketType; INT iProtocol; } alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; struct BLOB { ULONG cbSize; BYTE* pBlobData; } alias BLOB* PBLOB, LPBLOB; struct SERVICE_ADDRESS { DWORD dwAddressType; DWORD dwAddressFlags; DWORD dwAddressLength; DWORD dwPrincipalLength; BYTE* lpAddress; BYTE* lpPrincipal; } struct SERVICE_ADDRESSES { DWORD dwAddressCount; SERVICE_ADDRESS _Addresses; SERVICE_ADDRESS* Addresses() return { return &_Addresses; } } alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; struct SERVICE_INFOA { LPGUID lpServiceType; LPSTR lpServiceName; LPSTR lpComment; LPSTR lpLocale; DWORD dwDisplayHint; DWORD dwVersion; DWORD dwTime; LPSTR lpMachineName; LPSERVICE_ADDRESSES lpServiceAddress; BLOB ServiceSpecificInfo; } alias SERVICE_INFOA* LPSERVICE_INFOA; struct SERVICE_INFOW { LPGUID lpServiceType; LPWSTR lpServiceName; LPWSTR lpComment; LPWSTR lpLocale; DWORD dwDisplayHint; DWORD dwVersion; DWORD dwTime; LPWSTR lpMachineName; LPSERVICE_ADDRESSES lpServiceAddress; BLOB ServiceSpecificInfo; } alias SERVICE_INFOW* LPSERVICE_INFOW; alias void* LPSERVICE_ASYNC_INFO; extern (Windows) { INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, LPSERVICE_ASYNC_INFO, LPDWORD); INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, LPSERVICE_ASYNC_INFO, LPDWORD); INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); } version (Unicode) { alias SERVICE_INFOW SERVICE_INFO; alias SetServiceW SetService; alias GetAddressByNameW GetAddressByName; } else { alias SERVICE_INFOA SERVICE_INFO; alias SetServiceA SetService; alias GetAddressByNameA GetAddressByName; } alias SERVICE_INFO _SERVICE_INFO; alias SERVICE_INFO* LPSERVICE_INFO;