mirror of
https://github.com/yv1ing/ShotRDP.git
synced 2025-09-16 15:10:57 +08:00
基本适应win7,win10,win server 08,win server 12,win server 16的截图
This commit is contained in:
904
grdp/win/ws2_32.go
Normal file
904
grdp/win/ws2_32.go
Normal file
@@ -0,0 +1,904 @@
|
||||
// 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)
|
||||
}
|
||||
Reference in New Issue
Block a user