1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
/**
* 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;
|