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