|
@@ -43,6 +43,7 @@ var (
|
|
|
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
|
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
|
|
moduser32 = NewLazySystemDLL("user32.dll")
|
|
moduser32 = NewLazySystemDLL("user32.dll")
|
|
|
modole32 = NewLazySystemDLL("ole32.dll")
|
|
modole32 = NewLazySystemDLL("ole32.dll")
|
|
|
|
|
+ modntdll = NewLazySystemDLL("ntdll.dll")
|
|
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
|
|
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
|
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
|
|
modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
|
|
modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
|
|
@@ -232,6 +233,7 @@ var (
|
|
|
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
|
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
|
|
procCoCreateGuid = modole32.NewProc("CoCreateGuid")
|
|
procCoCreateGuid = modole32.NewProc("CoCreateGuid")
|
|
|
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
|
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
|
|
|
|
+ procRtlGetVersion = modntdll.NewProc("RtlGetVersion")
|
|
|
procWSAStartup = modws2_32.NewProc("WSAStartup")
|
|
procWSAStartup = modws2_32.NewProc("WSAStartup")
|
|
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
|
|
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
|
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
|
@@ -2520,6 +2522,14 @@ func coTaskMemFree(address unsafe.Pointer) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func rtlGetVersion(info *OsVersionInfoEx) (ret error) {
|
|
|
|
|
+ r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
|
|
|
|
|
+ if r0 != 0 {
|
|
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
|
|
+ }
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
|
|
func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
|
|
|
r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
|
|
r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
|
|
|
if r0 != 0 {
|
|
if r0 != 0 {
|