mirror of
https://github.com/yv1ing/ShotRDP.git
synced 2025-09-16 15:10:57 +08:00
905 lines
29 KiB
Go
905 lines
29 KiB
Go
// This file was automatically generated by https://github.com/kbinani/win/blob/generator/internal/cmd/gen/gen.go
|
|
// go run internal/cmd/gen/gen.go
|
|
|
|
// +build windows
|
|
|
|
package win
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
var (
|
|
// Library
|
|
libws2_32 uintptr
|
|
|
|
// Functions
|
|
freeAddrInfoExW uintptr
|
|
freeAddrInfoW uintptr
|
|
getAddrInfoEx uintptr
|
|
getAddrInfoW uintptr
|
|
getNameInfoW uintptr
|
|
inetNtopW uintptr
|
|
inetPtonW uintptr
|
|
wPUCompleteOverlappedRequest uintptr
|
|
wSAAccept uintptr
|
|
wSAAddressToString uintptr
|
|
wSAAsyncGetHostByAddr uintptr
|
|
wSAAsyncGetHostByName uintptr
|
|
wSAAsyncGetProtoByName uintptr
|
|
wSAAsyncGetProtoByNumber uintptr
|
|
wSAAsyncGetServByName uintptr
|
|
wSAAsyncGetServByPort uintptr
|
|
wSAAsyncSelect uintptr
|
|
wSACancelAsyncRequest uintptr
|
|
wSACancelBlockingCall uintptr
|
|
wSACleanup uintptr
|
|
wSACloseEvent uintptr
|
|
wSAConnect uintptr
|
|
wSACreateEvent uintptr
|
|
wSADuplicateSocket uintptr
|
|
wSAEnumNameSpaceProviders uintptr
|
|
wSAEnumNetworkEvents uintptr
|
|
wSAEnumProtocols uintptr
|
|
wSAEventSelect uintptr
|
|
wSAGetLastError uintptr
|
|
wSAGetOverlappedResult uintptr
|
|
wSAGetQOSByName uintptr
|
|
wSAGetServiceClassInfo uintptr
|
|
wSAGetServiceClassNameByClassId uintptr
|
|
wSAHtonl uintptr
|
|
wSAHtons uintptr
|
|
wSAInstallServiceClass uintptr
|
|
wSAIoctl uintptr
|
|
wSAIsBlocking uintptr
|
|
wSAJoinLeaf uintptr
|
|
wSALookupServiceBegin uintptr
|
|
wSALookupServiceEnd uintptr
|
|
wSALookupServiceNext uintptr
|
|
wSANSPIoctl uintptr
|
|
wSANtohl uintptr
|
|
wSANtohs uintptr
|
|
wSAPoll uintptr
|
|
wSAProviderConfigChange uintptr
|
|
wSARecv uintptr
|
|
wSARecvDisconnect uintptr
|
|
wSARecvFrom uintptr
|
|
wSARemoveServiceClass uintptr
|
|
wSASend uintptr
|
|
wSASendDisconnect uintptr
|
|
wSASendMsg uintptr
|
|
wSASendTo uintptr
|
|
wSASetBlockingHook uintptr
|
|
wSASetLastError uintptr
|
|
wSASetService uintptr
|
|
wSASocket uintptr
|
|
wSAStartup uintptr
|
|
wSAStringToAddress uintptr
|
|
wSAUnhookBlockingHook uintptr
|
|
wSApSetPostRoutine uintptr
|
|
wSCDeinstallProvider uintptr
|
|
wSCEnableNSProvider uintptr
|
|
wSCEnumProtocols uintptr
|
|
wSCGetProviderPath uintptr
|
|
wSCInstallNameSpace uintptr
|
|
wSCInstallProvider uintptr
|
|
wSCUnInstallNameSpace uintptr
|
|
wSCWriteProviderOrder uintptr
|
|
gethostname uintptr
|
|
)
|
|
|
|
func init() {
|
|
// Library
|
|
libws2_32 = doLoadLibrary("ws2_32.dll")
|
|
|
|
// Functions
|
|
freeAddrInfoExW = doGetProcAddress(libws2_32, "FreeAddrInfoExW")
|
|
freeAddrInfoW = doGetProcAddress(libws2_32, "FreeAddrInfoW")
|
|
getAddrInfoEx = doGetProcAddress(libws2_32, "GetAddrInfoExW")
|
|
getAddrInfoW = doGetProcAddress(libws2_32, "GetAddrInfoW")
|
|
getNameInfoW = doGetProcAddress(libws2_32, "GetNameInfoW")
|
|
inetNtopW = doGetProcAddress(libws2_32, "InetNtopW")
|
|
inetPtonW = doGetProcAddress(libws2_32, "InetPtonW")
|
|
wPUCompleteOverlappedRequest = doGetProcAddress(libws2_32, "WPUCompleteOverlappedRequest")
|
|
wSAAccept = doGetProcAddress(libws2_32, "WSAAccept")
|
|
wSAAddressToString = doGetProcAddress(libws2_32, "WSAAddressToStringW")
|
|
wSAAsyncGetHostByAddr = doGetProcAddress(libws2_32, "WSAAsyncGetHostByAddr")
|
|
wSAAsyncGetHostByName = doGetProcAddress(libws2_32, "WSAAsyncGetHostByName")
|
|
wSAAsyncGetProtoByName = doGetProcAddress(libws2_32, "WSAAsyncGetProtoByName")
|
|
wSAAsyncGetProtoByNumber = doGetProcAddress(libws2_32, "WSAAsyncGetProtoByNumber")
|
|
wSAAsyncGetServByName = doGetProcAddress(libws2_32, "WSAAsyncGetServByName")
|
|
wSAAsyncGetServByPort = doGetProcAddress(libws2_32, "WSAAsyncGetServByPort")
|
|
wSAAsyncSelect = doGetProcAddress(libws2_32, "WSAAsyncSelect")
|
|
wSACancelAsyncRequest = doGetProcAddress(libws2_32, "WSACancelAsyncRequest")
|
|
wSACancelBlockingCall = doGetProcAddress(libws2_32, "WSACancelBlockingCall")
|
|
wSACleanup = doGetProcAddress(libws2_32, "WSACleanup")
|
|
wSACloseEvent = doGetProcAddress(libws2_32, "WSACloseEvent")
|
|
wSAConnect = doGetProcAddress(libws2_32, "WSAConnect")
|
|
wSACreateEvent = doGetProcAddress(libws2_32, "WSACreateEvent")
|
|
wSADuplicateSocket = doGetProcAddress(libws2_32, "WSADuplicateSocketW")
|
|
wSAEnumNameSpaceProviders = doGetProcAddress(libws2_32, "WSAEnumNameSpaceProvidersW")
|
|
wSAEnumNetworkEvents = doGetProcAddress(libws2_32, "WSAEnumNetworkEvents")
|
|
wSAEnumProtocols = doGetProcAddress(libws2_32, "WSAEnumProtocolsW")
|
|
wSAEventSelect = doGetProcAddress(libws2_32, "WSAEventSelect")
|
|
wSAGetLastError = doGetProcAddress(libws2_32, "WSAGetLastError")
|
|
wSAGetOverlappedResult = doGetProcAddress(libws2_32, "WSAGetOverlappedResult")
|
|
wSAGetQOSByName = doGetProcAddress(libws2_32, "WSAGetQOSByName")
|
|
wSAGetServiceClassInfo = doGetProcAddress(libws2_32, "WSAGetServiceClassInfoW")
|
|
wSAGetServiceClassNameByClassId = doGetProcAddress(libws2_32, "WSAGetServiceClassNameByClassIdW")
|
|
wSAHtonl = doGetProcAddress(libws2_32, "WSAHtonl")
|
|
wSAHtons = doGetProcAddress(libws2_32, "WSAHtons")
|
|
wSAInstallServiceClass = doGetProcAddress(libws2_32, "WSAInstallServiceClassW")
|
|
wSAIoctl = doGetProcAddress(libws2_32, "WSAIoctl")
|
|
wSAIsBlocking = doGetProcAddress(libws2_32, "WSAIsBlocking")
|
|
wSAJoinLeaf = doGetProcAddress(libws2_32, "WSAJoinLeaf")
|
|
wSALookupServiceBegin = doGetProcAddress(libws2_32, "WSALookupServiceBeginW")
|
|
wSALookupServiceEnd = doGetProcAddress(libws2_32, "WSALookupServiceEnd")
|
|
wSALookupServiceNext = doGetProcAddress(libws2_32, "WSALookupServiceNextW")
|
|
wSANSPIoctl = doGetProcAddress(libws2_32, "WSANSPIoctl")
|
|
wSANtohl = doGetProcAddress(libws2_32, "WSANtohl")
|
|
wSANtohs = doGetProcAddress(libws2_32, "WSANtohs")
|
|
wSAPoll = doGetProcAddress(libws2_32, "WSAPoll")
|
|
wSAProviderConfigChange = doGetProcAddress(libws2_32, "WSAProviderConfigChange")
|
|
wSARecv = doGetProcAddress(libws2_32, "WSARecv")
|
|
wSARecvDisconnect = doGetProcAddress(libws2_32, "WSARecvDisconnect")
|
|
wSARecvFrom = doGetProcAddress(libws2_32, "WSARecvFrom")
|
|
wSARemoveServiceClass = doGetProcAddress(libws2_32, "WSARemoveServiceClass")
|
|
wSASend = doGetProcAddress(libws2_32, "WSASend")
|
|
wSASendDisconnect = doGetProcAddress(libws2_32, "WSASendDisconnect")
|
|
wSASendMsg = doGetProcAddress(libws2_32, "WSASendMsg")
|
|
wSASendTo = doGetProcAddress(libws2_32, "WSASendTo")
|
|
wSASetBlockingHook = doGetProcAddress(libws2_32, "WSASetBlockingHook")
|
|
wSASetLastError = doGetProcAddress(libws2_32, "WSASetLastError")
|
|
wSASetService = doGetProcAddress(libws2_32, "WSASetServiceW")
|
|
wSASocket = doGetProcAddress(libws2_32, "WSASocketW")
|
|
wSAStartup = doGetProcAddress(libws2_32, "WSAStartup")
|
|
wSAStringToAddress = doGetProcAddress(libws2_32, "WSAStringToAddressW")
|
|
wSAUnhookBlockingHook = doGetProcAddress(libws2_32, "WSAUnhookBlockingHook")
|
|
wSApSetPostRoutine = doGetProcAddress(libws2_32, "WSApSetPostRoutine")
|
|
wSCDeinstallProvider = doGetProcAddress(libws2_32, "WSCDeinstallProvider")
|
|
wSCEnableNSProvider = doGetProcAddress(libws2_32, "WSCEnableNSProvider")
|
|
wSCEnumProtocols = doGetProcAddress(libws2_32, "WSCEnumProtocols")
|
|
wSCGetProviderPath = doGetProcAddress(libws2_32, "WSCGetProviderPath")
|
|
wSCInstallNameSpace = doGetProcAddress(libws2_32, "WSCInstallNameSpace")
|
|
wSCInstallProvider = doGetProcAddress(libws2_32, "WSCInstallProvider")
|
|
wSCUnInstallNameSpace = doGetProcAddress(libws2_32, "WSCUnInstallNameSpace")
|
|
wSCWriteProviderOrder = doGetProcAddress(libws2_32, "WSCWriteProviderOrder")
|
|
gethostname = doGetProcAddress(libws2_32, "gethostname")
|
|
}
|
|
|
|
func FreeAddrInfoExW(ai *ADDRINFOEX) {
|
|
syscall3(freeAddrInfoExW, 1,
|
|
uintptr(unsafe.Pointer(ai)),
|
|
0,
|
|
0)
|
|
}
|
|
|
|
func FreeAddrInfoW(ai PADDRINFO) {
|
|
syscall3(freeAddrInfoW, 1,
|
|
uintptr(unsafe.Pointer(ai)),
|
|
0,
|
|
0)
|
|
}
|
|
|
|
func GetAddrInfoEx(name /*const*/ *WCHAR, servname /*const*/ *WCHAR, namespace DWORD, namespace_id *GUID, hints /*const*/ *ADDRINFOEX, result **ADDRINFOEX, timeout *Timeval, overlapped *OVERLAPPED, completion_routine LPLOOKUPSERVICE_COMPLETION_ROUTINE, handle *HANDLE) int32 {
|
|
completion_routineCallback := syscall.NewCallback(completion_routine)
|
|
ret1 := syscall12(getAddrInfoEx, 10,
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(unsafe.Pointer(servname)),
|
|
uintptr(namespace),
|
|
uintptr(unsafe.Pointer(namespace_id)),
|
|
uintptr(unsafe.Pointer(hints)),
|
|
uintptr(unsafe.Pointer(result)),
|
|
uintptr(unsafe.Pointer(timeout)),
|
|
uintptr(unsafe.Pointer(overlapped)),
|
|
completion_routineCallback,
|
|
uintptr(unsafe.Pointer(handle)),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func GetAddrInfoW(nodename string, servname string, hints /*const*/ *ADDRINFO, res *PADDRINFO) int32 {
|
|
nodenameStr := unicode16FromString(nodename)
|
|
servnameStr := unicode16FromString(servname)
|
|
ret1 := syscall6(getAddrInfoW, 4,
|
|
uintptr(unsafe.Pointer(&nodenameStr[0])),
|
|
uintptr(unsafe.Pointer(&servnameStr[0])),
|
|
uintptr(unsafe.Pointer(hints)),
|
|
uintptr(unsafe.Pointer(res)),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func GetNameInfoW(sa /*const*/ *SOCKADDR, salen Socklen_t, host PWCHAR, hostlen DWORD, serv PWCHAR, servlen DWORD, flags INT) int32 {
|
|
ret1 := syscall9(getNameInfoW, 7,
|
|
uintptr(unsafe.Pointer(sa)),
|
|
uintptr(salen),
|
|
uintptr(unsafe.Pointer(host)),
|
|
uintptr(hostlen),
|
|
uintptr(unsafe.Pointer(serv)),
|
|
uintptr(servlen),
|
|
uintptr(flags),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func InetNtopW(family INT, addr uintptr, buffer PWSTR, aLen SIZE_T) string {
|
|
ret1 := syscall6(inetNtopW, 4,
|
|
uintptr(family),
|
|
addr,
|
|
uintptr(unsafe.Pointer(buffer)),
|
|
uintptr(aLen),
|
|
0,
|
|
0)
|
|
return stringFromUnicode16((*uint16)(unsafe.Pointer(ret1)))
|
|
}
|
|
|
|
func InetPtonW(family INT, addr string, buffer uintptr) INT {
|
|
addrStr := unicode16FromString(addr)
|
|
ret1 := syscall3(inetPtonW, 3,
|
|
uintptr(family),
|
|
uintptr(unsafe.Pointer(&addrStr[0])),
|
|
buffer)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WPUCompleteOverlappedRequest(s SOCKET, overlapped LPWSAOVERLAPPED, error DWORD, transferred DWORD, errcode *int32) WSAEVENT {
|
|
ret1 := syscall6(wPUCompleteOverlappedRequest, 5,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(overlapped)),
|
|
uintptr(error),
|
|
uintptr(transferred),
|
|
uintptr(unsafe.Pointer(errcode)),
|
|
0)
|
|
return WSAEVENT(ret1)
|
|
}
|
|
|
|
func WSAAccept(s SOCKET, addr *Sockaddr, addrlen *int32, lpfnCondition LPCONDITIONPROC, dwCallbackData *uint32) SOCKET {
|
|
lpfnConditionCallback := syscall.NewCallback(func(lpCallerIdRawArg LPWSABUF, lpCallerDataRawArg LPWSABUF, lpSQOSRawArg LPQOS, lpGQOSRawArg LPQOS, lpCalleeIdRawArg LPWSABUF, lpCalleeDataRawArg LPWSABUF, gRawArg *GROUP, dwCallbackDataRawArg DWORD_PTR) uintptr {
|
|
ret := lpfnCondition(lpCallerIdRawArg, lpCallerDataRawArg, lpSQOSRawArg, lpGQOSRawArg, lpCalleeIdRawArg, lpCalleeDataRawArg, gRawArg, dwCallbackDataRawArg)
|
|
return uintptr(ret)
|
|
})
|
|
ret1 := syscall6(wSAAccept, 5,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(addr)),
|
|
uintptr(unsafe.Pointer(addrlen)),
|
|
lpfnConditionCallback,
|
|
uintptr(unsafe.Pointer(dwCallbackData)),
|
|
0)
|
|
return SOCKET(ret1)
|
|
}
|
|
|
|
func WSAAddressToString(sockaddr *SOCKADDR, aLen DWORD, info LPWSAPROTOCOL_INFO, string LPWSTR, lenstr *uint32) INT {
|
|
ret1 := syscall6(wSAAddressToString, 5,
|
|
uintptr(unsafe.Pointer(sockaddr)),
|
|
uintptr(aLen),
|
|
uintptr(unsafe.Pointer(info)),
|
|
uintptr(unsafe.Pointer(string)),
|
|
uintptr(unsafe.Pointer(lenstr)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetHostByAddr(hWnd HWND, uMsg UINT, addr /*const*/ LPCSTR, aLen INT, aType INT, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall9(wSAAsyncGetHostByAddr, 7,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(unsafe.Pointer(addr)),
|
|
uintptr(aLen),
|
|
uintptr(aType),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen),
|
|
0,
|
|
0)
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetHostByName(hWnd HWND, uMsg UINT, name /*const*/ LPCSTR, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall6(wSAAsyncGetHostByName, 5,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen),
|
|
0)
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetProtoByName(hWnd HWND, uMsg UINT, name /*const*/ LPCSTR, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall6(wSAAsyncGetProtoByName, 5,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen),
|
|
0)
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetProtoByNumber(hWnd HWND, uMsg UINT, number INT, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall6(wSAAsyncGetProtoByNumber, 5,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(number),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen),
|
|
0)
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetServByName(hWnd HWND, uMsg UINT, name /*const*/ LPCSTR, proto /*const*/ LPCSTR, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall6(wSAAsyncGetServByName, 6,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(unsafe.Pointer(proto)),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen))
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncGetServByPort(hWnd HWND, uMsg UINT, port INT, proto /*const*/ LPCSTR, sbuf LPSTR, buflen INT) HANDLE {
|
|
ret1 := syscall6(wSAAsyncGetServByPort, 6,
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(port),
|
|
uintptr(unsafe.Pointer(proto)),
|
|
uintptr(unsafe.Pointer(sbuf)),
|
|
uintptr(buflen))
|
|
return HANDLE(ret1)
|
|
}
|
|
|
|
func WSAAsyncSelect(s SOCKET, hWnd HWND, uMsg UINT, lEvent LONG) INT {
|
|
ret1 := syscall6(wSAAsyncSelect, 4,
|
|
uintptr(s),
|
|
uintptr(hWnd),
|
|
uintptr(uMsg),
|
|
uintptr(lEvent),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSACancelAsyncRequest(hAsyncTaskHandle HANDLE) INT {
|
|
ret1 := syscall3(wSACancelAsyncRequest, 1,
|
|
uintptr(hAsyncTaskHandle),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSACancelBlockingCall() INT {
|
|
ret1 := syscall3(wSACancelBlockingCall, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSACleanup() INT {
|
|
ret1 := syscall3(wSACleanup, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSACloseEvent(event WSAEVENT) bool {
|
|
ret1 := syscall3(wSACloseEvent, 1,
|
|
uintptr(event),
|
|
0,
|
|
0)
|
|
return ret1 != 0
|
|
}
|
|
|
|
func WSAConnect(s SOCKET, name /*const*/ *Sockaddr, namelen int32, lpCallerData LPWSABUF, lpCalleeData LPWSABUF, lpSQOS *QOS, lpGQOS *QOS) int32 {
|
|
ret1 := syscall9(wSAConnect, 7,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(namelen),
|
|
uintptr(unsafe.Pointer(lpCallerData)),
|
|
uintptr(unsafe.Pointer(lpCalleeData)),
|
|
uintptr(unsafe.Pointer(lpSQOS)),
|
|
uintptr(unsafe.Pointer(lpGQOS)),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSACreateEvent() WSAEVENT {
|
|
ret1 := syscall3(wSACreateEvent, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return WSAEVENT(ret1)
|
|
}
|
|
|
|
func WSADuplicateSocket(s SOCKET, dwProcessId DWORD, lpProtocolInfo LPWSAPROTOCOL_INFO) int32 {
|
|
ret1 := syscall3(wSADuplicateSocket, 3,
|
|
uintptr(s),
|
|
uintptr(dwProcessId),
|
|
uintptr(unsafe.Pointer(lpProtocolInfo)))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAEnumNameSpaceProviders(aLen *uint32, buffer LPWSANAMESPACE_INFO) INT {
|
|
ret1 := syscall3(wSAEnumNameSpaceProviders, 2,
|
|
uintptr(unsafe.Pointer(aLen)),
|
|
uintptr(unsafe.Pointer(buffer)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAEnumNetworkEvents(s SOCKET, hEvent WSAEVENT, lpEvent *WSANETWORKEVENTS) int32 {
|
|
ret1 := syscall3(wSAEnumNetworkEvents, 3,
|
|
uintptr(s),
|
|
uintptr(hEvent),
|
|
uintptr(unsafe.Pointer(lpEvent)))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAEnumProtocols(protocols *int32, buffer LPWSAPROTOCOL_INFO, aLen *uint32) INT {
|
|
ret1 := syscall3(wSAEnumProtocols, 3,
|
|
uintptr(unsafe.Pointer(protocols)),
|
|
uintptr(unsafe.Pointer(buffer)),
|
|
uintptr(unsafe.Pointer(aLen)))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAEventSelect(s SOCKET, hEvent WSAEVENT, lEvent LONG) int32 {
|
|
ret1 := syscall3(wSAEventSelect, 3,
|
|
uintptr(s),
|
|
uintptr(hEvent),
|
|
uintptr(lEvent))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAGetLastError() INT {
|
|
ret1 := syscall3(wSAGetLastError, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAGetOverlappedResult(s SOCKET, lpOverlapped LPWSAOVERLAPPED, lpcbTransfer *uint32, fWait bool, lpdwFlags *uint32) bool {
|
|
ret1 := syscall6(wSAGetOverlappedResult, 5,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
uintptr(unsafe.Pointer(lpcbTransfer)),
|
|
getUintptrFromBool(fWait),
|
|
uintptr(unsafe.Pointer(lpdwFlags)),
|
|
0)
|
|
return ret1 != 0
|
|
}
|
|
|
|
func WSAGetQOSByName(s SOCKET, lpQOSName LPWSABUF, lpQOS *QOS) bool {
|
|
ret1 := syscall3(wSAGetQOSByName, 3,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpQOSName)),
|
|
uintptr(unsafe.Pointer(lpQOS)))
|
|
return ret1 != 0
|
|
}
|
|
|
|
func WSAGetServiceClassInfo(provider *GUID, service *GUID, aLen *uint32, info LPWSASERVICECLASSINFO) INT {
|
|
ret1 := syscall6(wSAGetServiceClassInfo, 4,
|
|
uintptr(unsafe.Pointer(provider)),
|
|
uintptr(unsafe.Pointer(service)),
|
|
uintptr(unsafe.Pointer(aLen)),
|
|
uintptr(unsafe.Pointer(info)),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAGetServiceClassNameByClassId(class *GUID, service LPWSTR, aLen *uint32) INT {
|
|
ret1 := syscall3(wSAGetServiceClassNameByClassId, 3,
|
|
uintptr(unsafe.Pointer(class)),
|
|
uintptr(unsafe.Pointer(service)),
|
|
uintptr(unsafe.Pointer(aLen)))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAHtonl(s SOCKET, hostlong ULONG, lpnetlong *ULONG) int32 {
|
|
ret1 := syscall3(wSAHtonl, 3,
|
|
uintptr(s),
|
|
uintptr(hostlong),
|
|
uintptr(unsafe.Pointer(lpnetlong)))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAHtons(s SOCKET, hostshort uint16, lpnetshort *uint16) int32 {
|
|
ret1 := syscall3(wSAHtons, 3,
|
|
uintptr(s),
|
|
uintptr(hostshort),
|
|
uintptr(unsafe.Pointer(lpnetshort)))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAInstallServiceClass(info LPWSASERVICECLASSINFO) int32 {
|
|
ret1 := syscall3(wSAInstallServiceClass, 1,
|
|
uintptr(unsafe.Pointer(info)),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAIoctl(s SOCKET, code DWORD, in_buff LPVOID, in_size DWORD, out_buff LPVOID, out_size DWORD, ret_size *uint32, overlapped LPWSAOVERLAPPED, completion LPWSAOVERLAPPED_COMPLETION_ROUTINE) INT {
|
|
completionCallback := syscall.NewCallback(completion)
|
|
ret1 := syscall9(wSAIoctl, 9,
|
|
uintptr(s),
|
|
uintptr(code),
|
|
uintptr(unsafe.Pointer(in_buff)),
|
|
uintptr(in_size),
|
|
uintptr(unsafe.Pointer(out_buff)),
|
|
uintptr(out_size),
|
|
uintptr(unsafe.Pointer(ret_size)),
|
|
uintptr(unsafe.Pointer(overlapped)),
|
|
completionCallback)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAIsBlocking() bool {
|
|
ret1 := syscall3(wSAIsBlocking, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return ret1 != 0
|
|
}
|
|
|
|
func WSAJoinLeaf(s SOCKET, addr /*const*/ *Sockaddr, addrlen int32, lpCallerData LPWSABUF, lpCalleeData LPWSABUF, lpSQOS *QOS, lpGQOS *QOS, dwFlags DWORD) SOCKET {
|
|
ret1 := syscall9(wSAJoinLeaf, 8,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(addr)),
|
|
uintptr(addrlen),
|
|
uintptr(unsafe.Pointer(lpCallerData)),
|
|
uintptr(unsafe.Pointer(lpCalleeData)),
|
|
uintptr(unsafe.Pointer(lpSQOS)),
|
|
uintptr(unsafe.Pointer(lpGQOS)),
|
|
uintptr(dwFlags),
|
|
0)
|
|
return SOCKET(ret1)
|
|
}
|
|
|
|
func WSALookupServiceBegin(lpqsRestrictions LPWSAQUERYSET, dwControlFlags DWORD, lphLookup *HANDLE) INT {
|
|
ret1 := syscall3(wSALookupServiceBegin, 3,
|
|
uintptr(unsafe.Pointer(lpqsRestrictions)),
|
|
uintptr(dwControlFlags),
|
|
uintptr(unsafe.Pointer(lphLookup)))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSALookupServiceEnd(lookup HANDLE) INT {
|
|
ret1 := syscall3(wSALookupServiceEnd, 1,
|
|
uintptr(lookup),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSALookupServiceNext(lookup HANDLE, flags DWORD, aLen *uint32, results LPWSAQUERYSET) INT {
|
|
ret1 := syscall6(wSALookupServiceNext, 4,
|
|
uintptr(lookup),
|
|
uintptr(flags),
|
|
uintptr(unsafe.Pointer(aLen)),
|
|
uintptr(unsafe.Pointer(results)),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSANSPIoctl(hLookup HANDLE, dwControlCode DWORD, lpvInBuffer LPVOID, cbInBuffer DWORD, lpvOutBuffer LPVOID, cbOutBuffer DWORD, lpcbBytesReturned *uint32, lpCompletion *WSACOMPLETION) INT {
|
|
ret1 := syscall9(wSANSPIoctl, 8,
|
|
uintptr(hLookup),
|
|
uintptr(dwControlCode),
|
|
uintptr(unsafe.Pointer(lpvInBuffer)),
|
|
uintptr(cbInBuffer),
|
|
uintptr(unsafe.Pointer(lpvOutBuffer)),
|
|
uintptr(cbOutBuffer),
|
|
uintptr(unsafe.Pointer(lpcbBytesReturned)),
|
|
uintptr(unsafe.Pointer(lpCompletion)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSANtohl(s SOCKET, netlong ULONG, lphostlong *ULONG) INT {
|
|
ret1 := syscall3(wSANtohl, 3,
|
|
uintptr(s),
|
|
uintptr(netlong),
|
|
uintptr(unsafe.Pointer(lphostlong)))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSANtohs(s SOCKET, netshort uint16, lphostshort *uint16) INT {
|
|
ret1 := syscall3(wSANtohs, 3,
|
|
uintptr(s),
|
|
uintptr(netshort),
|
|
uintptr(unsafe.Pointer(lphostshort)))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAPoll(wfds *WSAPOLLFD, count ULONG, timeout int32) int32 {
|
|
ret1 := syscall3(wSAPoll, 3,
|
|
uintptr(unsafe.Pointer(wfds)),
|
|
uintptr(count),
|
|
uintptr(timeout))
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAProviderConfigChange(handle *HANDLE, overlapped LPWSAOVERLAPPED, completion LPWSAOVERLAPPED_COMPLETION_ROUTINE) INT {
|
|
completionCallback := syscall.NewCallback(completion)
|
|
ret1 := syscall3(wSAProviderConfigChange, 3,
|
|
uintptr(unsafe.Pointer(handle)),
|
|
uintptr(unsafe.Pointer(overlapped)),
|
|
completionCallback)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSARecv(s SOCKET, lpBuffers LPWSABUF, dwBufferCount DWORD, numberOfBytesReceived *uint32, lpFlags *uint32, lpOverlapped LPWSAOVERLAPPED, lpCompletionRoutine LPWSAOVERLAPPED_COMPLETION_ROUTINE) int32 {
|
|
lpCompletionRoutineCallback := syscall.NewCallback(lpCompletionRoutine)
|
|
ret1 := syscall9(wSARecv, 7,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpBuffers)),
|
|
uintptr(dwBufferCount),
|
|
uintptr(unsafe.Pointer(numberOfBytesReceived)),
|
|
uintptr(unsafe.Pointer(lpFlags)),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
lpCompletionRoutineCallback,
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSARecvDisconnect(s SOCKET, disconnectdata LPWSABUF) INT {
|
|
ret1 := syscall3(wSARecvDisconnect, 2,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(disconnectdata)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSARecvFrom(s SOCKET, lpBuffers LPWSABUF, dwBufferCount DWORD, lpNumberOfBytesRecvd *uint32, lpFlags *uint32, lpFrom *Sockaddr, lpFromlen *int32, lpOverlapped LPWSAOVERLAPPED, lpCompletionRoutine LPWSAOVERLAPPED_COMPLETION_ROUTINE) INT {
|
|
lpCompletionRoutineCallback := syscall.NewCallback(lpCompletionRoutine)
|
|
ret1 := syscall9(wSARecvFrom, 9,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpBuffers)),
|
|
uintptr(dwBufferCount),
|
|
uintptr(unsafe.Pointer(lpNumberOfBytesRecvd)),
|
|
uintptr(unsafe.Pointer(lpFlags)),
|
|
uintptr(unsafe.Pointer(lpFrom)),
|
|
uintptr(unsafe.Pointer(lpFromlen)),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
lpCompletionRoutineCallback)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSARemoveServiceClass(info *GUID) int32 {
|
|
ret1 := syscall3(wSARemoveServiceClass, 1,
|
|
uintptr(unsafe.Pointer(info)),
|
|
0,
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSASend(s SOCKET, lpBuffers LPWSABUF, dwBufferCount DWORD, lpNumberOfBytesSent *uint32, dwFlags DWORD, lpOverlapped LPWSAOVERLAPPED, lpCompletionRoutine LPWSAOVERLAPPED_COMPLETION_ROUTINE) INT {
|
|
lpCompletionRoutineCallback := syscall.NewCallback(lpCompletionRoutine)
|
|
ret1 := syscall9(wSASend, 7,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpBuffers)),
|
|
uintptr(dwBufferCount),
|
|
uintptr(unsafe.Pointer(lpNumberOfBytesSent)),
|
|
uintptr(dwFlags),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
lpCompletionRoutineCallback,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSASendDisconnect(s SOCKET, lpBuffers LPWSABUF) INT {
|
|
ret1 := syscall3(wSASendDisconnect, 2,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpBuffers)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSASendMsg(s SOCKET, msg *WSAMSG, dwFlags DWORD, lpNumberOfBytesSent *uint32, lpOverlapped LPWSAOVERLAPPED, lpCompletionRoutine LPWSAOVERLAPPED_COMPLETION_ROUTINE) int32 {
|
|
lpCompletionRoutineCallback := syscall.NewCallback(lpCompletionRoutine)
|
|
ret1 := syscall6(wSASendMsg, 6,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(msg)),
|
|
uintptr(dwFlags),
|
|
uintptr(unsafe.Pointer(lpNumberOfBytesSent)),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
lpCompletionRoutineCallback)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSASendTo(s SOCKET, lpBuffers LPWSABUF, dwBufferCount DWORD, lpNumberOfBytesSent *uint32, dwFlags DWORD, to /*const*/ *Sockaddr, tolen int32, lpOverlapped LPWSAOVERLAPPED, lpCompletionRoutine LPWSAOVERLAPPED_COMPLETION_ROUTINE) INT {
|
|
lpCompletionRoutineCallback := syscall.NewCallback(lpCompletionRoutine)
|
|
ret1 := syscall9(wSASendTo, 9,
|
|
uintptr(s),
|
|
uintptr(unsafe.Pointer(lpBuffers)),
|
|
uintptr(dwBufferCount),
|
|
uintptr(unsafe.Pointer(lpNumberOfBytesSent)),
|
|
uintptr(dwFlags),
|
|
uintptr(unsafe.Pointer(to)),
|
|
uintptr(tolen),
|
|
uintptr(unsafe.Pointer(lpOverlapped)),
|
|
lpCompletionRoutineCallback)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSASetBlockingHook(lpBlockFunc FARPROC) FARPROC {
|
|
lpBlockFuncCallback := syscall.NewCallback(func() uintptr {
|
|
ret := lpBlockFunc()
|
|
return uintptr(unsafe.Pointer(ret))
|
|
})
|
|
ret1 := syscall3(wSASetBlockingHook, 1,
|
|
lpBlockFuncCallback,
|
|
0,
|
|
0)
|
|
return func() INT_PTR {
|
|
ret2 := syscall3(ret1, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return (INT_PTR)(unsafe.Pointer(ret2))
|
|
}
|
|
}
|
|
|
|
func WSASetLastError(iError INT) {
|
|
syscall3(wSASetLastError, 1,
|
|
uintptr(iError),
|
|
0,
|
|
0)
|
|
}
|
|
|
|
func WSASetService(query LPWSAQUERYSET, operation WSAESETSERVICEOP, flags DWORD) INT {
|
|
ret1 := syscall3(wSASetService, 3,
|
|
uintptr(unsafe.Pointer(query)),
|
|
uintptr(operation),
|
|
uintptr(flags))
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSASocket(af int32, aType int32, protocol int32, lpProtocolInfo LPWSAPROTOCOL_INFO, g GROUP, dwFlags DWORD) SOCKET {
|
|
ret1 := syscall6(wSASocket, 6,
|
|
uintptr(af),
|
|
uintptr(aType),
|
|
uintptr(protocol),
|
|
uintptr(unsafe.Pointer(lpProtocolInfo)),
|
|
uintptr(g),
|
|
uintptr(dwFlags))
|
|
return SOCKET(ret1)
|
|
}
|
|
|
|
func WSAStartup(wVersionRequested WORD, lpWSAData *WSADATA) int32 {
|
|
ret1 := syscall3(wSAStartup, 2,
|
|
uintptr(wVersionRequested),
|
|
uintptr(unsafe.Pointer(lpWSAData)),
|
|
0)
|
|
return int32(ret1)
|
|
}
|
|
|
|
func WSAStringToAddress(addressString LPWSTR, addressFamily INT, lpProtocolInfo LPWSAPROTOCOL_INFO, lpAddress *SOCKADDR, lpAddressLength *int32) INT {
|
|
ret1 := syscall6(wSAStringToAddress, 5,
|
|
uintptr(unsafe.Pointer(addressString)),
|
|
uintptr(addressFamily),
|
|
uintptr(unsafe.Pointer(lpProtocolInfo)),
|
|
uintptr(unsafe.Pointer(lpAddress)),
|
|
uintptr(unsafe.Pointer(lpAddressLength)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSAUnhookBlockingHook() INT {
|
|
ret1 := syscall3(wSAUnhookBlockingHook, 0,
|
|
0,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSApSetPostRoutine(lpPostRoutine LPWPUPOSTMESSAGE) INT {
|
|
lpPostRoutineCallback := syscall.NewCallback(func(unnamed0RawArg HWND, unnamed1RawArg UINT, unnamed2RawArg WPARAM, unnamed3RawArg LPARAM) uintptr {
|
|
ret := lpPostRoutine(unnamed0RawArg, unnamed1RawArg, unnamed2RawArg, unnamed3RawArg)
|
|
return uintptr(ret)
|
|
})
|
|
ret1 := syscall3(wSApSetPostRoutine, 1,
|
|
lpPostRoutineCallback,
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCDeinstallProvider(lpProviderId *GUID, lpErrno *int32) INT {
|
|
ret1 := syscall3(wSCDeinstallProvider, 2,
|
|
uintptr(unsafe.Pointer(lpProviderId)),
|
|
uintptr(unsafe.Pointer(lpErrno)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCEnableNSProvider(provider *GUID, enable bool) INT {
|
|
ret1 := syscall3(wSCEnableNSProvider, 2,
|
|
uintptr(unsafe.Pointer(provider)),
|
|
getUintptrFromBool(enable),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCEnumProtocols(protocols *int32, buffer LPWSAPROTOCOL_INFO, aLen *uint32, err *int32) INT {
|
|
ret1 := syscall6(wSCEnumProtocols, 4,
|
|
uintptr(unsafe.Pointer(protocols)),
|
|
uintptr(unsafe.Pointer(buffer)),
|
|
uintptr(unsafe.Pointer(aLen)),
|
|
uintptr(unsafe.Pointer(err)),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCGetProviderPath(provider *GUID, path LPWSTR, aLen *int32, errcode *int32) INT {
|
|
ret1 := syscall6(wSCGetProviderPath, 4,
|
|
uintptr(unsafe.Pointer(provider)),
|
|
uintptr(unsafe.Pointer(path)),
|
|
uintptr(unsafe.Pointer(aLen)),
|
|
uintptr(unsafe.Pointer(errcode)),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCInstallNameSpace(identifier LPWSTR, path LPWSTR, namespace DWORD, version DWORD, provider *GUID) INT {
|
|
ret1 := syscall6(wSCInstallNameSpace, 5,
|
|
uintptr(unsafe.Pointer(identifier)),
|
|
uintptr(unsafe.Pointer(path)),
|
|
uintptr(namespace),
|
|
uintptr(version),
|
|
uintptr(unsafe.Pointer(provider)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCInstallProvider(lpProviderId /*const*/ *GUID, lpszProviderDllPath string, lpProtocolInfoList /*const*/ LPWSAPROTOCOL_INFO, dwNumberOfEntries DWORD, lpErrno *int32) INT {
|
|
lpszProviderDllPathStr := unicode16FromString(lpszProviderDllPath)
|
|
ret1 := syscall6(wSCInstallProvider, 5,
|
|
uintptr(unsafe.Pointer(lpProviderId)),
|
|
uintptr(unsafe.Pointer(&lpszProviderDllPathStr[0])),
|
|
uintptr(unsafe.Pointer(lpProtocolInfoList)),
|
|
uintptr(dwNumberOfEntries),
|
|
uintptr(unsafe.Pointer(lpErrno)),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCUnInstallNameSpace(lpProviderId *GUID) INT {
|
|
ret1 := syscall3(wSCUnInstallNameSpace, 1,
|
|
uintptr(unsafe.Pointer(lpProviderId)),
|
|
0,
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func WSCWriteProviderOrder(entry *uint32, number DWORD) INT {
|
|
ret1 := syscall3(wSCWriteProviderOrder, 2,
|
|
uintptr(unsafe.Pointer(entry)),
|
|
uintptr(number),
|
|
0)
|
|
return INT(ret1)
|
|
}
|
|
|
|
func Gethostname(name *CHAR, namelen INT) int32 {
|
|
ret1 := syscall3(gethostname, 2,
|
|
uintptr(unsafe.Pointer(name)),
|
|
uintptr(namelen),
|
|
0)
|
|
return int32(ret1)
|
|
}
|