github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/src/syscall/zsyscall_windows.go (about)

     1  // MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
     2  
     3  package syscall
     4  
     5  import (
     6  	"internal/syscall/windows/sysdll"
     7  	"unsafe"
     8  )
     9  
    10  var _ unsafe.Pointer
    11  
    12  // Do the interface allocations only once for common
    13  // Errno values.
    14  const (
    15  	errnoERROR_IO_PENDING = 997
    16  )
    17  
    18  var (
    19  	errERROR_IO_PENDING error = Errno(errnoERROR_IO_PENDING)
    20  )
    21  
    22  // errnoErr returns common boxed Errno values, to prevent
    23  // allocations at runtime.
    24  func errnoErr(e Errno) error {
    25  	switch e {
    26  	case 0:
    27  		return nil
    28  	case errnoERROR_IO_PENDING:
    29  		return errERROR_IO_PENDING
    30  	}
    31  	// TODO: add more here, after collecting data on the common
    32  	// error values see on Windows. (perhaps when running
    33  	// all.bat?)
    34  	return e
    35  }
    36  
    37  var (
    38  	modkernel32 = NewLazyDLL(sysdll.Add("kernel32.dll"))
    39  	modadvapi32 = NewLazyDLL(sysdll.Add("advapi32.dll"))
    40  	modshell32  = NewLazyDLL(sysdll.Add("shell32.dll"))
    41  	modmswsock  = NewLazyDLL(sysdll.Add("mswsock.dll"))
    42  	modcrypt32  = NewLazyDLL(sysdll.Add("crypt32.dll"))
    43  	modws2_32   = NewLazyDLL(sysdll.Add("ws2_32.dll"))
    44  	moddnsapi   = NewLazyDLL(sysdll.Add("dnsapi.dll"))
    45  	modiphlpapi = NewLazyDLL(sysdll.Add("iphlpapi.dll"))
    46  	modsecur32  = NewLazyDLL(sysdll.Add("secur32.dll"))
    47  	modnetapi32 = NewLazyDLL(sysdll.Add("netapi32.dll"))
    48  	moduserenv  = NewLazyDLL(sysdll.Add("userenv.dll"))
    49  
    50  	procGetLastError                       = modkernel32.NewProc("GetLastError")
    51  	procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
    52  	procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
    53  	procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
    54  	procGetVersion                         = modkernel32.NewProc("GetVersion")
    55  	procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
    56  	procExitProcess                        = modkernel32.NewProc("ExitProcess")
    57  	procCreateFileW                        = modkernel32.NewProc("CreateFileW")
    58  	procReadFile                           = modkernel32.NewProc("ReadFile")
    59  	procWriteFile                          = modkernel32.NewProc("WriteFile")
    60  	procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
    61  	procCloseHandle                        = modkernel32.NewProc("CloseHandle")
    62  	procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
    63  	procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
    64  	procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
    65  	procFindClose                          = modkernel32.NewProc("FindClose")
    66  	procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
    67  	procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
    68  	procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
    69  	procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
    70  	procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
    71  	procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
    72  	procMoveFileW                          = modkernel32.NewProc("MoveFileW")
    73  	procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
    74  	procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
    75  	procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
    76  	procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
    77  	procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
    78  	procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
    79  	procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
    80  	procCancelIo                           = modkernel32.NewProc("CancelIo")
    81  	procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
    82  	procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
    83  	procOpenProcess                        = modkernel32.NewProc("OpenProcess")
    84  	procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
    85  	procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
    86  	procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
    87  	procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
    88  	procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
    89  	procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
    90  	procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
    91  	procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
    92  	procCreatePipe                         = modkernel32.NewProc("CreatePipe")
    93  	procGetFileType                        = modkernel32.NewProc("GetFileType")
    94  	procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
    95  	procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
    96  	procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
    97  	procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
    98  	procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
    99  	procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
   100  	procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
   101  	procSetFileTime                        = modkernel32.NewProc("SetFileTime")
   102  	procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
   103  	procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
   104  	procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
   105  	procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
   106  	procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
   107  	procLocalFree                          = modkernel32.NewProc("LocalFree")
   108  	procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
   109  	procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
   110  	procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
   111  	procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
   112  	procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
   113  	procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
   114  	procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
   115  	procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
   116  	procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
   117  	procVirtualLock                        = modkernel32.NewProc("VirtualLock")
   118  	procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
   119  	procTransmitFile                       = modmswsock.NewProc("TransmitFile")
   120  	procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
   121  	procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
   122  	procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
   123  	procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
   124  	procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
   125  	procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
   126  	procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
   127  	procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
   128  	procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
   129  	procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
   130  	procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
   131  	procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
   132  	procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
   133  	procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
   134  	procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
   135  	procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
   136  	procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
   137  	procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
   138  	procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
   139  	procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
   140  	procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
   141  	procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
   142  	procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
   143  	procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
   144  	procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
   145  	procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
   146  	procWSAStartup                         = modws2_32.NewProc("WSAStartup")
   147  	procWSACleanup                         = modws2_32.NewProc("WSACleanup")
   148  	procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
   149  	procsocket                             = modws2_32.NewProc("socket")
   150  	procsetsockopt                         = modws2_32.NewProc("setsockopt")
   151  	procgetsockopt                         = modws2_32.NewProc("getsockopt")
   152  	procbind                               = modws2_32.NewProc("bind")
   153  	procconnect                            = modws2_32.NewProc("connect")
   154  	procgetsockname                        = modws2_32.NewProc("getsockname")
   155  	procgetpeername                        = modws2_32.NewProc("getpeername")
   156  	proclisten                             = modws2_32.NewProc("listen")
   157  	procshutdown                           = modws2_32.NewProc("shutdown")
   158  	procclosesocket                        = modws2_32.NewProc("closesocket")
   159  	procAcceptEx                           = modmswsock.NewProc("AcceptEx")
   160  	procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
   161  	procWSARecv                            = modws2_32.NewProc("WSARecv")
   162  	procWSASend                            = modws2_32.NewProc("WSASend")
   163  	procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
   164  	procWSASendTo                          = modws2_32.NewProc("WSASendTo")
   165  	procgethostbyname                      = modws2_32.NewProc("gethostbyname")
   166  	procgetservbyname                      = modws2_32.NewProc("getservbyname")
   167  	procntohs                              = modws2_32.NewProc("ntohs")
   168  	procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
   169  	procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
   170  	procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
   171  	procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
   172  	procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
   173  	procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
   174  	procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
   175  	procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
   176  	procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
   177  	procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
   178  	procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
   179  	procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
   180  	procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
   181  	procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
   182  	procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
   183  	procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
   184  	procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
   185  	procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
   186  	procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
   187  	procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
   188  	procCopySid                            = modadvapi32.NewProc("CopySid")
   189  	procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
   190  	procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
   191  	procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
   192  )
   193  
   194  func GetLastError() (lasterr error) {
   195  	r0, _, _ := Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
   196  	if r0 != 0 {
   197  		lasterr = Errno(r0)
   198  	}
   199  	return
   200  }
   201  
   202  func LoadLibrary(libname string) (handle Handle, err error) {
   203  	var _p0 *uint16
   204  	_p0, err = UTF16PtrFromString(libname)
   205  	if err != nil {
   206  		return
   207  	}
   208  	return _LoadLibrary(_p0)
   209  }
   210  
   211  func _LoadLibrary(libname *uint16) (handle Handle, err error) {
   212  	r0, _, e1 := Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
   213  	handle = Handle(r0)
   214  	if handle == 0 {
   215  		if e1 != 0 {
   216  			err = errnoErr(e1)
   217  		} else {
   218  			err = EINVAL
   219  		}
   220  	}
   221  	return
   222  }
   223  
   224  func FreeLibrary(handle Handle) (err error) {
   225  	r1, _, e1 := Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
   226  	if r1 == 0 {
   227  		if e1 != 0 {
   228  			err = errnoErr(e1)
   229  		} else {
   230  			err = EINVAL
   231  		}
   232  	}
   233  	return
   234  }
   235  
   236  func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
   237  	var _p0 *byte
   238  	_p0, err = BytePtrFromString(procname)
   239  	if err != nil {
   240  		return
   241  	}
   242  	return _GetProcAddress(module, _p0)
   243  }
   244  
   245  func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
   246  	r0, _, e1 := Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
   247  	proc = uintptr(r0)
   248  	if proc == 0 {
   249  		if e1 != 0 {
   250  			err = errnoErr(e1)
   251  		} else {
   252  			err = EINVAL
   253  		}
   254  	}
   255  	return
   256  }
   257  
   258  func GetVersion() (ver uint32, err error) {
   259  	r0, _, e1 := Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
   260  	ver = uint32(r0)
   261  	if ver == 0 {
   262  		if e1 != 0 {
   263  			err = errnoErr(e1)
   264  		} else {
   265  			err = EINVAL
   266  		}
   267  	}
   268  	return
   269  }
   270  
   271  func formatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
   272  	var _p0 *uint16
   273  	if len(buf) > 0 {
   274  		_p0 = &buf[0]
   275  	}
   276  	r0, _, e1 := Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
   277  	n = uint32(r0)
   278  	if n == 0 {
   279  		if e1 != 0 {
   280  			err = errnoErr(e1)
   281  		} else {
   282  			err = EINVAL
   283  		}
   284  	}
   285  	return
   286  }
   287  
   288  func ExitProcess(exitcode uint32) {
   289  	Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
   290  	return
   291  }
   292  
   293  func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
   294  	r0, _, e1 := Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
   295  	handle = Handle(r0)
   296  	if handle == InvalidHandle {
   297  		if e1 != 0 {
   298  			err = errnoErr(e1)
   299  		} else {
   300  			err = EINVAL
   301  		}
   302  	}
   303  	return
   304  }
   305  
   306  func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
   307  	var _p0 *byte
   308  	if len(buf) > 0 {
   309  		_p0 = &buf[0]
   310  	}
   311  	r1, _, e1 := Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
   312  	if r1 == 0 {
   313  		if e1 != 0 {
   314  			err = errnoErr(e1)
   315  		} else {
   316  			err = EINVAL
   317  		}
   318  	}
   319  	return
   320  }
   321  
   322  func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
   323  	var _p0 *byte
   324  	if len(buf) > 0 {
   325  		_p0 = &buf[0]
   326  	}
   327  	r1, _, e1 := Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
   328  	if r1 == 0 {
   329  		if e1 != 0 {
   330  			err = errnoErr(e1)
   331  		} else {
   332  			err = EINVAL
   333  		}
   334  	}
   335  	return
   336  }
   337  
   338  func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
   339  	r0, _, e1 := Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
   340  	newlowoffset = uint32(r0)
   341  	if newlowoffset == 0xffffffff {
   342  		if e1 != 0 {
   343  			err = errnoErr(e1)
   344  		} else {
   345  			err = EINVAL
   346  		}
   347  	}
   348  	return
   349  }
   350  
   351  func CloseHandle(handle Handle) (err error) {
   352  	r1, _, e1 := Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
   353  	if r1 == 0 {
   354  		if e1 != 0 {
   355  			err = errnoErr(e1)
   356  		} else {
   357  			err = EINVAL
   358  		}
   359  	}
   360  	return
   361  }
   362  
   363  func GetStdHandle(stdhandle int) (handle Handle, err error) {
   364  	r0, _, e1 := Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
   365  	handle = Handle(r0)
   366  	if handle == InvalidHandle {
   367  		if e1 != 0 {
   368  			err = errnoErr(e1)
   369  		} else {
   370  			err = EINVAL
   371  		}
   372  	}
   373  	return
   374  }
   375  
   376  func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
   377  	r0, _, e1 := Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
   378  	handle = Handle(r0)
   379  	if handle == InvalidHandle {
   380  		if e1 != 0 {
   381  			err = errnoErr(e1)
   382  		} else {
   383  			err = EINVAL
   384  		}
   385  	}
   386  	return
   387  }
   388  
   389  func findNextFile1(handle Handle, data *win32finddata1) (err error) {
   390  	r1, _, e1 := Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
   391  	if r1 == 0 {
   392  		if e1 != 0 {
   393  			err = errnoErr(e1)
   394  		} else {
   395  			err = EINVAL
   396  		}
   397  	}
   398  	return
   399  }
   400  
   401  func FindClose(handle Handle) (err error) {
   402  	r1, _, e1 := Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
   403  	if r1 == 0 {
   404  		if e1 != 0 {
   405  			err = errnoErr(e1)
   406  		} else {
   407  			err = EINVAL
   408  		}
   409  	}
   410  	return
   411  }
   412  
   413  func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
   414  	r1, _, e1 := Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
   415  	if r1 == 0 {
   416  		if e1 != 0 {
   417  			err = errnoErr(e1)
   418  		} else {
   419  			err = EINVAL
   420  		}
   421  	}
   422  	return
   423  }
   424  
   425  func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
   426  	r0, _, e1 := Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
   427  	n = uint32(r0)
   428  	if n == 0 {
   429  		if e1 != 0 {
   430  			err = errnoErr(e1)
   431  		} else {
   432  			err = EINVAL
   433  		}
   434  	}
   435  	return
   436  }
   437  
   438  func SetCurrentDirectory(path *uint16) (err error) {
   439  	r1, _, e1 := Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   440  	if r1 == 0 {
   441  		if e1 != 0 {
   442  			err = errnoErr(e1)
   443  		} else {
   444  			err = EINVAL
   445  		}
   446  	}
   447  	return
   448  }
   449  
   450  func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
   451  	r1, _, e1 := Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
   452  	if r1 == 0 {
   453  		if e1 != 0 {
   454  			err = errnoErr(e1)
   455  		} else {
   456  			err = EINVAL
   457  		}
   458  	}
   459  	return
   460  }
   461  
   462  func RemoveDirectory(path *uint16) (err error) {
   463  	r1, _, e1 := Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   464  	if r1 == 0 {
   465  		if e1 != 0 {
   466  			err = errnoErr(e1)
   467  		} else {
   468  			err = EINVAL
   469  		}
   470  	}
   471  	return
   472  }
   473  
   474  func DeleteFile(path *uint16) (err error) {
   475  	r1, _, e1 := Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   476  	if r1 == 0 {
   477  		if e1 != 0 {
   478  			err = errnoErr(e1)
   479  		} else {
   480  			err = EINVAL
   481  		}
   482  	}
   483  	return
   484  }
   485  
   486  func MoveFile(from *uint16, to *uint16) (err error) {
   487  	r1, _, e1 := Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
   488  	if r1 == 0 {
   489  		if e1 != 0 {
   490  			err = errnoErr(e1)
   491  		} else {
   492  			err = EINVAL
   493  		}
   494  	}
   495  	return
   496  }
   497  
   498  func GetComputerName(buf *uint16, n *uint32) (err error) {
   499  	r1, _, e1 := Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
   500  	if r1 == 0 {
   501  		if e1 != 0 {
   502  			err = errnoErr(e1)
   503  		} else {
   504  			err = EINVAL
   505  		}
   506  	}
   507  	return
   508  }
   509  
   510  func SetEndOfFile(handle Handle) (err error) {
   511  	r1, _, e1 := Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
   512  	if r1 == 0 {
   513  		if e1 != 0 {
   514  			err = errnoErr(e1)
   515  		} else {
   516  			err = EINVAL
   517  		}
   518  	}
   519  	return
   520  }
   521  
   522  func GetSystemTimeAsFileTime(time *Filetime) {
   523  	Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
   524  	return
   525  }
   526  
   527  func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
   528  	r0, _, e1 := Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
   529  	rc = uint32(r0)
   530  	if rc == 0xffffffff {
   531  		if e1 != 0 {
   532  			err = errnoErr(e1)
   533  		} else {
   534  			err = EINVAL
   535  		}
   536  	}
   537  	return
   538  }
   539  
   540  func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
   541  	r0, _, e1 := Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
   542  	handle = Handle(r0)
   543  	if handle == 0 {
   544  		if e1 != 0 {
   545  			err = errnoErr(e1)
   546  		} else {
   547  			err = EINVAL
   548  		}
   549  	}
   550  	return
   551  }
   552  
   553  func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
   554  	r1, _, e1 := Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
   555  	if r1 == 0 {
   556  		if e1 != 0 {
   557  			err = errnoErr(e1)
   558  		} else {
   559  			err = EINVAL
   560  		}
   561  	}
   562  	return
   563  }
   564  
   565  func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
   566  	r1, _, e1 := Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
   567  	if r1 == 0 {
   568  		if e1 != 0 {
   569  			err = errnoErr(e1)
   570  		} else {
   571  			err = EINVAL
   572  		}
   573  	}
   574  	return
   575  }
   576  
   577  func CancelIo(s Handle) (err error) {
   578  	r1, _, e1 := Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
   579  	if r1 == 0 {
   580  		if e1 != 0 {
   581  			err = errnoErr(e1)
   582  		} else {
   583  			err = EINVAL
   584  		}
   585  	}
   586  	return
   587  }
   588  
   589  func CancelIoEx(s Handle, o *Overlapped) (err error) {
   590  	r1, _, e1 := Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
   591  	if r1 == 0 {
   592  		if e1 != 0 {
   593  			err = errnoErr(e1)
   594  		} else {
   595  			err = EINVAL
   596  		}
   597  	}
   598  	return
   599  }
   600  
   601  func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
   602  	var _p0 uint32
   603  	if inheritHandles {
   604  		_p0 = 1
   605  	} else {
   606  		_p0 = 0
   607  	}
   608  	r1, _, e1 := Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
   609  	if r1 == 0 {
   610  		if e1 != 0 {
   611  			err = errnoErr(e1)
   612  		} else {
   613  			err = EINVAL
   614  		}
   615  	}
   616  	return
   617  }
   618  
   619  func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
   620  	var _p0 uint32
   621  	if inheritHandle {
   622  		_p0 = 1
   623  	} else {
   624  		_p0 = 0
   625  	}
   626  	r0, _, e1 := Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
   627  	handle = Handle(r0)
   628  	if handle == 0 {
   629  		if e1 != 0 {
   630  			err = errnoErr(e1)
   631  		} else {
   632  			err = EINVAL
   633  		}
   634  	}
   635  	return
   636  }
   637  
   638  func TerminateProcess(handle Handle, exitcode uint32) (err error) {
   639  	r1, _, e1 := Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
   640  	if r1 == 0 {
   641  		if e1 != 0 {
   642  			err = errnoErr(e1)
   643  		} else {
   644  			err = EINVAL
   645  		}
   646  	}
   647  	return
   648  }
   649  
   650  func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
   651  	r1, _, e1 := Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
   652  	if r1 == 0 {
   653  		if e1 != 0 {
   654  			err = errnoErr(e1)
   655  		} else {
   656  			err = EINVAL
   657  		}
   658  	}
   659  	return
   660  }
   661  
   662  func GetStartupInfo(startupInfo *StartupInfo) (err error) {
   663  	r1, _, e1 := Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
   664  	if r1 == 0 {
   665  		if e1 != 0 {
   666  			err = errnoErr(e1)
   667  		} else {
   668  			err = EINVAL
   669  		}
   670  	}
   671  	return
   672  }
   673  
   674  func GetCurrentProcess() (pseudoHandle Handle, err error) {
   675  	r0, _, e1 := Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
   676  	pseudoHandle = Handle(r0)
   677  	if pseudoHandle == 0 {
   678  		if e1 != 0 {
   679  			err = errnoErr(e1)
   680  		} else {
   681  			err = EINVAL
   682  		}
   683  	}
   684  	return
   685  }
   686  
   687  func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
   688  	r1, _, e1 := Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
   689  	if r1 == 0 {
   690  		if e1 != 0 {
   691  			err = errnoErr(e1)
   692  		} else {
   693  			err = EINVAL
   694  		}
   695  	}
   696  	return
   697  }
   698  
   699  func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
   700  	var _p0 uint32
   701  	if bInheritHandle {
   702  		_p0 = 1
   703  	} else {
   704  		_p0 = 0
   705  	}
   706  	r1, _, e1 := Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
   707  	if r1 == 0 {
   708  		if e1 != 0 {
   709  			err = errnoErr(e1)
   710  		} else {
   711  			err = EINVAL
   712  		}
   713  	}
   714  	return
   715  }
   716  
   717  func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
   718  	r0, _, e1 := Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
   719  	event = uint32(r0)
   720  	if event == 0xffffffff {
   721  		if e1 != 0 {
   722  			err = errnoErr(e1)
   723  		} else {
   724  			err = EINVAL
   725  		}
   726  	}
   727  	return
   728  }
   729  
   730  func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
   731  	r0, _, e1 := Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
   732  	n = uint32(r0)
   733  	if n == 0 {
   734  		if e1 != 0 {
   735  			err = errnoErr(e1)
   736  		} else {
   737  			err = EINVAL
   738  		}
   739  	}
   740  	return
   741  }
   742  
   743  func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
   744  	r1, _, e1 := Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
   745  	if r1 == 0 {
   746  		if e1 != 0 {
   747  			err = errnoErr(e1)
   748  		} else {
   749  			err = EINVAL
   750  		}
   751  	}
   752  	return
   753  }
   754  
   755  func GetFileType(filehandle Handle) (n uint32, err error) {
   756  	r0, _, e1 := Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
   757  	n = uint32(r0)
   758  	if n == 0 {
   759  		if e1 != 0 {
   760  			err = errnoErr(e1)
   761  		} else {
   762  			err = EINVAL
   763  		}
   764  	}
   765  	return
   766  }
   767  
   768  func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
   769  	r1, _, e1 := Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
   770  	if r1 == 0 {
   771  		if e1 != 0 {
   772  			err = errnoErr(e1)
   773  		} else {
   774  			err = EINVAL
   775  		}
   776  	}
   777  	return
   778  }
   779  
   780  func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
   781  	r1, _, e1 := Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
   782  	if r1 == 0 {
   783  		if e1 != 0 {
   784  			err = errnoErr(e1)
   785  		} else {
   786  			err = EINVAL
   787  		}
   788  	}
   789  	return
   790  }
   791  
   792  func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
   793  	r1, _, e1 := Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
   794  	if r1 == 0 {
   795  		if e1 != 0 {
   796  			err = errnoErr(e1)
   797  		} else {
   798  			err = EINVAL
   799  		}
   800  	}
   801  	return
   802  }
   803  
   804  func GetEnvironmentStrings() (envs *uint16, err error) {
   805  	r0, _, e1 := Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
   806  	envs = (*uint16)(unsafe.Pointer(r0))
   807  	if envs == nil {
   808  		if e1 != 0 {
   809  			err = errnoErr(e1)
   810  		} else {
   811  			err = EINVAL
   812  		}
   813  	}
   814  	return
   815  }
   816  
   817  func FreeEnvironmentStrings(envs *uint16) (err error) {
   818  	r1, _, e1 := Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
   819  	if r1 == 0 {
   820  		if e1 != 0 {
   821  			err = errnoErr(e1)
   822  		} else {
   823  			err = EINVAL
   824  		}
   825  	}
   826  	return
   827  }
   828  
   829  func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
   830  	r0, _, e1 := Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
   831  	n = uint32(r0)
   832  	if n == 0 {
   833  		if e1 != 0 {
   834  			err = errnoErr(e1)
   835  		} else {
   836  			err = EINVAL
   837  		}
   838  	}
   839  	return
   840  }
   841  
   842  func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
   843  	r1, _, e1 := Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
   844  	if r1 == 0 {
   845  		if e1 != 0 {
   846  			err = errnoErr(e1)
   847  		} else {
   848  			err = EINVAL
   849  		}
   850  	}
   851  	return
   852  }
   853  
   854  func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
   855  	r1, _, e1 := Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
   856  	if r1 == 0 {
   857  		if e1 != 0 {
   858  			err = errnoErr(e1)
   859  		} else {
   860  			err = EINVAL
   861  		}
   862  	}
   863  	return
   864  }
   865  
   866  func GetFileAttributes(name *uint16) (attrs uint32, err error) {
   867  	r0, _, e1 := Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
   868  	attrs = uint32(r0)
   869  	if attrs == INVALID_FILE_ATTRIBUTES {
   870  		if e1 != 0 {
   871  			err = errnoErr(e1)
   872  		} else {
   873  			err = EINVAL
   874  		}
   875  	}
   876  	return
   877  }
   878  
   879  func SetFileAttributes(name *uint16, attrs uint32) (err error) {
   880  	r1, _, e1 := Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
   881  	if r1 == 0 {
   882  		if e1 != 0 {
   883  			err = errnoErr(e1)
   884  		} else {
   885  			err = EINVAL
   886  		}
   887  	}
   888  	return
   889  }
   890  
   891  func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
   892  	r1, _, e1 := Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
   893  	if r1 == 0 {
   894  		if e1 != 0 {
   895  			err = errnoErr(e1)
   896  		} else {
   897  			err = EINVAL
   898  		}
   899  	}
   900  	return
   901  }
   902  
   903  func GetCommandLine() (cmd *uint16) {
   904  	r0, _, _ := Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
   905  	cmd = (*uint16)(unsafe.Pointer(r0))
   906  	return
   907  }
   908  
   909  func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
   910  	r0, _, e1 := Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
   911  	argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
   912  	if argv == nil {
   913  		if e1 != 0 {
   914  			err = errnoErr(e1)
   915  		} else {
   916  			err = EINVAL
   917  		}
   918  	}
   919  	return
   920  }
   921  
   922  func LocalFree(hmem Handle) (handle Handle, err error) {
   923  	r0, _, e1 := Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
   924  	handle = Handle(r0)
   925  	if handle != 0 {
   926  		if e1 != 0 {
   927  			err = errnoErr(e1)
   928  		} else {
   929  			err = EINVAL
   930  		}
   931  	}
   932  	return
   933  }
   934  
   935  func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
   936  	r1, _, e1 := Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
   937  	if r1 == 0 {
   938  		if e1 != 0 {
   939  			err = errnoErr(e1)
   940  		} else {
   941  			err = EINVAL
   942  		}
   943  	}
   944  	return
   945  }
   946  
   947  func FlushFileBuffers(handle Handle) (err error) {
   948  	r1, _, e1 := Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
   949  	if r1 == 0 {
   950  		if e1 != 0 {
   951  			err = errnoErr(e1)
   952  		} else {
   953  			err = EINVAL
   954  		}
   955  	}
   956  	return
   957  }
   958  
   959  func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
   960  	r0, _, e1 := Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
   961  	n = uint32(r0)
   962  	if n == 0 {
   963  		if e1 != 0 {
   964  			err = errnoErr(e1)
   965  		} else {
   966  			err = EINVAL
   967  		}
   968  	}
   969  	return
   970  }
   971  
   972  func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
   973  	r0, _, e1 := Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
   974  	n = uint32(r0)
   975  	if n == 0 {
   976  		if e1 != 0 {
   977  			err = errnoErr(e1)
   978  		} else {
   979  			err = EINVAL
   980  		}
   981  	}
   982  	return
   983  }
   984  
   985  func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
   986  	r0, _, e1 := Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
   987  	n = uint32(r0)
   988  	if n == 0 {
   989  		if e1 != 0 {
   990  			err = errnoErr(e1)
   991  		} else {
   992  			err = EINVAL
   993  		}
   994  	}
   995  	return
   996  }
   997  
   998  func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
   999  	r0, _, e1 := Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
  1000  	handle = Handle(r0)
  1001  	if handle == 0 {
  1002  		if e1 != 0 {
  1003  			err = errnoErr(e1)
  1004  		} else {
  1005  			err = EINVAL
  1006  		}
  1007  	}
  1008  	return
  1009  }
  1010  
  1011  func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
  1012  	r0, _, e1 := Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
  1013  	addr = uintptr(r0)
  1014  	if addr == 0 {
  1015  		if e1 != 0 {
  1016  			err = errnoErr(e1)
  1017  		} else {
  1018  			err = EINVAL
  1019  		}
  1020  	}
  1021  	return
  1022  }
  1023  
  1024  func UnmapViewOfFile(addr uintptr) (err error) {
  1025  	r1, _, e1 := Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
  1026  	if r1 == 0 {
  1027  		if e1 != 0 {
  1028  			err = errnoErr(e1)
  1029  		} else {
  1030  			err = EINVAL
  1031  		}
  1032  	}
  1033  	return
  1034  }
  1035  
  1036  func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
  1037  	r1, _, e1 := Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1038  	if r1 == 0 {
  1039  		if e1 != 0 {
  1040  			err = errnoErr(e1)
  1041  		} else {
  1042  			err = EINVAL
  1043  		}
  1044  	}
  1045  	return
  1046  }
  1047  
  1048  func VirtualLock(addr uintptr, length uintptr) (err error) {
  1049  	r1, _, e1 := Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1050  	if r1 == 0 {
  1051  		if e1 != 0 {
  1052  			err = errnoErr(e1)
  1053  		} else {
  1054  			err = EINVAL
  1055  		}
  1056  	}
  1057  	return
  1058  }
  1059  
  1060  func VirtualUnlock(addr uintptr, length uintptr) (err error) {
  1061  	r1, _, e1 := Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1062  	if r1 == 0 {
  1063  		if e1 != 0 {
  1064  			err = errnoErr(e1)
  1065  		} else {
  1066  			err = EINVAL
  1067  		}
  1068  	}
  1069  	return
  1070  }
  1071  
  1072  func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
  1073  	r1, _, e1 := Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
  1074  	if r1 == 0 {
  1075  		if e1 != 0 {
  1076  			err = errnoErr(e1)
  1077  		} else {
  1078  			err = EINVAL
  1079  		}
  1080  	}
  1081  	return
  1082  }
  1083  
  1084  func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
  1085  	var _p0 uint32
  1086  	if watchSubTree {
  1087  		_p0 = 1
  1088  	} else {
  1089  		_p0 = 0
  1090  	}
  1091  	r1, _, e1 := Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
  1092  	if r1 == 0 {
  1093  		if e1 != 0 {
  1094  			err = errnoErr(e1)
  1095  		} else {
  1096  			err = EINVAL
  1097  		}
  1098  	}
  1099  	return
  1100  }
  1101  
  1102  func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
  1103  	r0, _, e1 := Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
  1104  	store = Handle(r0)
  1105  	if store == 0 {
  1106  		if e1 != 0 {
  1107  			err = errnoErr(e1)
  1108  		} else {
  1109  			err = EINVAL
  1110  		}
  1111  	}
  1112  	return
  1113  }
  1114  
  1115  func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
  1116  	r0, _, e1 := Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
  1117  	handle = Handle(r0)
  1118  	if handle == InvalidHandle {
  1119  		if e1 != 0 {
  1120  			err = errnoErr(e1)
  1121  		} else {
  1122  			err = EINVAL
  1123  		}
  1124  	}
  1125  	return
  1126  }
  1127  
  1128  func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
  1129  	r0, _, e1 := Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
  1130  	context = (*CertContext)(unsafe.Pointer(r0))
  1131  	if context == nil {
  1132  		if e1 != 0 {
  1133  			err = errnoErr(e1)
  1134  		} else {
  1135  			err = EINVAL
  1136  		}
  1137  	}
  1138  	return
  1139  }
  1140  
  1141  func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
  1142  	r1, _, e1 := Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
  1143  	if r1 == 0 {
  1144  		if e1 != 0 {
  1145  			err = errnoErr(e1)
  1146  		} else {
  1147  			err = EINVAL
  1148  		}
  1149  	}
  1150  	return
  1151  }
  1152  
  1153  func CertCloseStore(store Handle, flags uint32) (err error) {
  1154  	r1, _, e1 := Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
  1155  	if r1 == 0 {
  1156  		if e1 != 0 {
  1157  			err = errnoErr(e1)
  1158  		} else {
  1159  			err = EINVAL
  1160  		}
  1161  	}
  1162  	return
  1163  }
  1164  
  1165  func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
  1166  	r1, _, e1 := Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
  1167  	if r1 == 0 {
  1168  		if e1 != 0 {
  1169  			err = errnoErr(e1)
  1170  		} else {
  1171  			err = EINVAL
  1172  		}
  1173  	}
  1174  	return
  1175  }
  1176  
  1177  func CertFreeCertificateChain(ctx *CertChainContext) {
  1178  	Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
  1179  	return
  1180  }
  1181  
  1182  func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
  1183  	r0, _, e1 := Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
  1184  	context = (*CertContext)(unsafe.Pointer(r0))
  1185  	if context == nil {
  1186  		if e1 != 0 {
  1187  			err = errnoErr(e1)
  1188  		} else {
  1189  			err = EINVAL
  1190  		}
  1191  	}
  1192  	return
  1193  }
  1194  
  1195  func CertFreeCertificateContext(ctx *CertContext) (err error) {
  1196  	r1, _, e1 := Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
  1197  	if r1 == 0 {
  1198  		if e1 != 0 {
  1199  			err = errnoErr(e1)
  1200  		} else {
  1201  			err = EINVAL
  1202  		}
  1203  	}
  1204  	return
  1205  }
  1206  
  1207  func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
  1208  	r1, _, e1 := Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
  1209  	if r1 == 0 {
  1210  		if e1 != 0 {
  1211  			err = errnoErr(e1)
  1212  		} else {
  1213  			err = EINVAL
  1214  		}
  1215  	}
  1216  	return
  1217  }
  1218  
  1219  func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
  1220  	r0, _, _ := Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
  1221  	if r0 != 0 {
  1222  		regerrno = Errno(r0)
  1223  	}
  1224  	return
  1225  }
  1226  
  1227  func RegCloseKey(key Handle) (regerrno error) {
  1228  	r0, _, _ := Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
  1229  	if r0 != 0 {
  1230  		regerrno = Errno(r0)
  1231  	}
  1232  	return
  1233  }
  1234  
  1235  func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
  1236  	r0, _, _ := Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
  1237  	if r0 != 0 {
  1238  		regerrno = Errno(r0)
  1239  	}
  1240  	return
  1241  }
  1242  
  1243  func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
  1244  	r0, _, _ := Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
  1245  	if r0 != 0 {
  1246  		regerrno = Errno(r0)
  1247  	}
  1248  	return
  1249  }
  1250  
  1251  func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
  1252  	r0, _, _ := Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
  1253  	if r0 != 0 {
  1254  		regerrno = Errno(r0)
  1255  	}
  1256  	return
  1257  }
  1258  
  1259  func getCurrentProcessId() (pid uint32) {
  1260  	r0, _, _ := Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
  1261  	pid = uint32(r0)
  1262  	return
  1263  }
  1264  
  1265  func GetConsoleMode(console Handle, mode *uint32) (err error) {
  1266  	r1, _, e1 := Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
  1267  	if r1 == 0 {
  1268  		if e1 != 0 {
  1269  			err = errnoErr(e1)
  1270  		} else {
  1271  			err = EINVAL
  1272  		}
  1273  	}
  1274  	return
  1275  }
  1276  
  1277  func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
  1278  	r1, _, e1 := Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
  1279  	if r1 == 0 {
  1280  		if e1 != 0 {
  1281  			err = errnoErr(e1)
  1282  		} else {
  1283  			err = EINVAL
  1284  		}
  1285  	}
  1286  	return
  1287  }
  1288  
  1289  func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
  1290  	r1, _, e1 := Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
  1291  	if r1 == 0 {
  1292  		if e1 != 0 {
  1293  			err = errnoErr(e1)
  1294  		} else {
  1295  			err = EINVAL
  1296  		}
  1297  	}
  1298  	return
  1299  }
  1300  
  1301  func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
  1302  	r0, _, e1 := Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
  1303  	handle = Handle(r0)
  1304  	if handle == InvalidHandle {
  1305  		if e1 != 0 {
  1306  			err = errnoErr(e1)
  1307  		} else {
  1308  			err = EINVAL
  1309  		}
  1310  	}
  1311  	return
  1312  }
  1313  
  1314  func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
  1315  	r1, _, e1 := Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
  1316  	if r1 == 0 {
  1317  		if e1 != 0 {
  1318  			err = errnoErr(e1)
  1319  		} else {
  1320  			err = EINVAL
  1321  		}
  1322  	}
  1323  	return
  1324  }
  1325  
  1326  func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
  1327  	r1, _, e1 := Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
  1328  	if r1 == 0 {
  1329  		if e1 != 0 {
  1330  			err = errnoErr(e1)
  1331  		} else {
  1332  			err = EINVAL
  1333  		}
  1334  	}
  1335  	return
  1336  }
  1337  
  1338  func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
  1339  	r1, _, e1 := Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
  1340  	if r1 == 0 {
  1341  		if e1 != 0 {
  1342  			err = errnoErr(e1)
  1343  		} else {
  1344  			err = EINVAL
  1345  		}
  1346  	}
  1347  	return
  1348  }
  1349  
  1350  func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
  1351  	r1, _, e1 := Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
  1352  	if r1&0xff == 0 {
  1353  		if e1 != 0 {
  1354  			err = errnoErr(e1)
  1355  		} else {
  1356  			err = EINVAL
  1357  		}
  1358  	}
  1359  	return
  1360  }
  1361  
  1362  func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
  1363  	r1, _, e1 := Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
  1364  	if r1&0xff == 0 {
  1365  		if e1 != 0 {
  1366  			err = errnoErr(e1)
  1367  		} else {
  1368  			err = EINVAL
  1369  		}
  1370  	}
  1371  	return
  1372  }
  1373  
  1374  func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
  1375  	r0, _, _ := Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
  1376  	if r0 != 0 {
  1377  		sockerr = Errno(r0)
  1378  	}
  1379  	return
  1380  }
  1381  
  1382  func WSACleanup() (err error) {
  1383  	r1, _, e1 := Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
  1384  	if r1 == socket_error {
  1385  		if e1 != 0 {
  1386  			err = errnoErr(e1)
  1387  		} else {
  1388  			err = EINVAL
  1389  		}
  1390  	}
  1391  	return
  1392  }
  1393  
  1394  func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
  1395  	r1, _, e1 := Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
  1396  	if r1 == socket_error {
  1397  		if e1 != 0 {
  1398  			err = errnoErr(e1)
  1399  		} else {
  1400  			err = EINVAL
  1401  		}
  1402  	}
  1403  	return
  1404  }
  1405  
  1406  func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
  1407  	r0, _, e1 := Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
  1408  	handle = Handle(r0)
  1409  	if handle == InvalidHandle {
  1410  		if e1 != 0 {
  1411  			err = errnoErr(e1)
  1412  		} else {
  1413  			err = EINVAL
  1414  		}
  1415  	}
  1416  	return
  1417  }
  1418  
  1419  func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
  1420  	r1, _, e1 := Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
  1421  	if r1 == socket_error {
  1422  		if e1 != 0 {
  1423  			err = errnoErr(e1)
  1424  		} else {
  1425  			err = EINVAL
  1426  		}
  1427  	}
  1428  	return
  1429  }
  1430  
  1431  func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
  1432  	r1, _, e1 := Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
  1433  	if r1 == socket_error {
  1434  		if e1 != 0 {
  1435  			err = errnoErr(e1)
  1436  		} else {
  1437  			err = EINVAL
  1438  		}
  1439  	}
  1440  	return
  1441  }
  1442  
  1443  func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
  1444  	r1, _, e1 := Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
  1445  	if r1 == socket_error {
  1446  		if e1 != 0 {
  1447  			err = errnoErr(e1)
  1448  		} else {
  1449  			err = EINVAL
  1450  		}
  1451  	}
  1452  	return
  1453  }
  1454  
  1455  func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
  1456  	r1, _, e1 := Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
  1457  	if r1 == socket_error {
  1458  		if e1 != 0 {
  1459  			err = errnoErr(e1)
  1460  		} else {
  1461  			err = EINVAL
  1462  		}
  1463  	}
  1464  	return
  1465  }
  1466  
  1467  func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
  1468  	r1, _, e1 := Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
  1469  	if r1 == socket_error {
  1470  		if e1 != 0 {
  1471  			err = errnoErr(e1)
  1472  		} else {
  1473  			err = EINVAL
  1474  		}
  1475  	}
  1476  	return
  1477  }
  1478  
  1479  func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
  1480  	r1, _, e1 := Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
  1481  	if r1 == socket_error {
  1482  		if e1 != 0 {
  1483  			err = errnoErr(e1)
  1484  		} else {
  1485  			err = EINVAL
  1486  		}
  1487  	}
  1488  	return
  1489  }
  1490  
  1491  func listen(s Handle, backlog int32) (err error) {
  1492  	r1, _, e1 := Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
  1493  	if r1 == socket_error {
  1494  		if e1 != 0 {
  1495  			err = errnoErr(e1)
  1496  		} else {
  1497  			err = EINVAL
  1498  		}
  1499  	}
  1500  	return
  1501  }
  1502  
  1503  func shutdown(s Handle, how int32) (err error) {
  1504  	r1, _, e1 := Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
  1505  	if r1 == socket_error {
  1506  		if e1 != 0 {
  1507  			err = errnoErr(e1)
  1508  		} else {
  1509  			err = EINVAL
  1510  		}
  1511  	}
  1512  	return
  1513  }
  1514  
  1515  func Closesocket(s Handle) (err error) {
  1516  	r1, _, e1 := Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
  1517  	if r1 == socket_error {
  1518  		if e1 != 0 {
  1519  			err = errnoErr(e1)
  1520  		} else {
  1521  			err = EINVAL
  1522  		}
  1523  	}
  1524  	return
  1525  }
  1526  
  1527  func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
  1528  	r1, _, e1 := Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
  1529  	if r1 == 0 {
  1530  		if e1 != 0 {
  1531  			err = errnoErr(e1)
  1532  		} else {
  1533  			err = EINVAL
  1534  		}
  1535  	}
  1536  	return
  1537  }
  1538  
  1539  func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
  1540  	Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
  1541  	return
  1542  }
  1543  
  1544  func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
  1545  	r1, _, e1 := Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
  1546  	if r1 == socket_error {
  1547  		if e1 != 0 {
  1548  			err = errnoErr(e1)
  1549  		} else {
  1550  			err = EINVAL
  1551  		}
  1552  	}
  1553  	return
  1554  }
  1555  
  1556  func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
  1557  	r1, _, e1 := Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
  1558  	if r1 == socket_error {
  1559  		if e1 != 0 {
  1560  			err = errnoErr(e1)
  1561  		} else {
  1562  			err = EINVAL
  1563  		}
  1564  	}
  1565  	return
  1566  }
  1567  
  1568  func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
  1569  	r1, _, e1 := Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
  1570  	if r1 == socket_error {
  1571  		if e1 != 0 {
  1572  			err = errnoErr(e1)
  1573  		} else {
  1574  			err = EINVAL
  1575  		}
  1576  	}
  1577  	return
  1578  }
  1579  
  1580  func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
  1581  	r1, _, e1 := Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
  1582  	if r1 == socket_error {
  1583  		if e1 != 0 {
  1584  			err = errnoErr(e1)
  1585  		} else {
  1586  			err = EINVAL
  1587  		}
  1588  	}
  1589  	return
  1590  }
  1591  
  1592  func GetHostByName(name string) (h *Hostent, err error) {
  1593  	var _p0 *byte
  1594  	_p0, err = BytePtrFromString(name)
  1595  	if err != nil {
  1596  		return
  1597  	}
  1598  	return _GetHostByName(_p0)
  1599  }
  1600  
  1601  func _GetHostByName(name *byte) (h *Hostent, err error) {
  1602  	r0, _, e1 := Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
  1603  	h = (*Hostent)(unsafe.Pointer(r0))
  1604  	if h == nil {
  1605  		if e1 != 0 {
  1606  			err = errnoErr(e1)
  1607  		} else {
  1608  			err = EINVAL
  1609  		}
  1610  	}
  1611  	return
  1612  }
  1613  
  1614  func GetServByName(name string, proto string) (s *Servent, err error) {
  1615  	var _p0 *byte
  1616  	_p0, err = BytePtrFromString(name)
  1617  	if err != nil {
  1618  		return
  1619  	}
  1620  	var _p1 *byte
  1621  	_p1, err = BytePtrFromString(proto)
  1622  	if err != nil {
  1623  		return
  1624  	}
  1625  	return _GetServByName(_p0, _p1)
  1626  }
  1627  
  1628  func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
  1629  	r0, _, e1 := Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
  1630  	s = (*Servent)(unsafe.Pointer(r0))
  1631  	if s == nil {
  1632  		if e1 != 0 {
  1633  			err = errnoErr(e1)
  1634  		} else {
  1635  			err = EINVAL
  1636  		}
  1637  	}
  1638  	return
  1639  }
  1640  
  1641  func Ntohs(netshort uint16) (u uint16) {
  1642  	r0, _, _ := Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
  1643  	u = uint16(r0)
  1644  	return
  1645  }
  1646  
  1647  func GetProtoByName(name string) (p *Protoent, err error) {
  1648  	var _p0 *byte
  1649  	_p0, err = BytePtrFromString(name)
  1650  	if err != nil {
  1651  		return
  1652  	}
  1653  	return _GetProtoByName(_p0)
  1654  }
  1655  
  1656  func _GetProtoByName(name *byte) (p *Protoent, err error) {
  1657  	r0, _, e1 := Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
  1658  	p = (*Protoent)(unsafe.Pointer(r0))
  1659  	if p == nil {
  1660  		if e1 != 0 {
  1661  			err = errnoErr(e1)
  1662  		} else {
  1663  			err = EINVAL
  1664  		}
  1665  	}
  1666  	return
  1667  }
  1668  
  1669  func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
  1670  	var _p0 *uint16
  1671  	_p0, status = UTF16PtrFromString(name)
  1672  	if status != nil {
  1673  		return
  1674  	}
  1675  	return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
  1676  }
  1677  
  1678  func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
  1679  	r0, _, _ := Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
  1680  	if r0 != 0 {
  1681  		status = Errno(r0)
  1682  	}
  1683  	return
  1684  }
  1685  
  1686  func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
  1687  	Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
  1688  	return
  1689  }
  1690  
  1691  func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
  1692  	r0, _, _ := Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
  1693  	same = r0 != 0
  1694  	return
  1695  }
  1696  
  1697  func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
  1698  	r0, _, _ := Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
  1699  	if r0 != 0 {
  1700  		sockerr = Errno(r0)
  1701  	}
  1702  	return
  1703  }
  1704  
  1705  func FreeAddrInfoW(addrinfo *AddrinfoW) {
  1706  	Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
  1707  	return
  1708  }
  1709  
  1710  func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
  1711  	r0, _, _ := Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
  1712  	if r0 != 0 {
  1713  		errcode = Errno(r0)
  1714  	}
  1715  	return
  1716  }
  1717  
  1718  func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
  1719  	r0, _, _ := Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
  1720  	if r0 != 0 {
  1721  		errcode = Errno(r0)
  1722  	}
  1723  	return
  1724  }
  1725  
  1726  func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
  1727  	r1, _, e1 := Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
  1728  	if r1 == 0 {
  1729  		if e1 != 0 {
  1730  			err = errnoErr(e1)
  1731  		} else {
  1732  			err = EINVAL
  1733  		}
  1734  	}
  1735  	return
  1736  }
  1737  
  1738  func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
  1739  	r0, _, e1 := Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
  1740  	n = int32(r0)
  1741  	if n == -1 {
  1742  		if e1 != 0 {
  1743  			err = errnoErr(e1)
  1744  		} else {
  1745  			err = EINVAL
  1746  		}
  1747  	}
  1748  	return
  1749  }
  1750  
  1751  func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
  1752  	r1, _, e1 := Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
  1753  	if r1&0xff == 0 {
  1754  		if e1 != 0 {
  1755  			err = errnoErr(e1)
  1756  		} else {
  1757  			err = EINVAL
  1758  		}
  1759  	}
  1760  	return
  1761  }
  1762  
  1763  func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
  1764  	r1, _, e1 := Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
  1765  	if r1&0xff == 0 {
  1766  		if e1 != 0 {
  1767  			err = errnoErr(e1)
  1768  		} else {
  1769  			err = EINVAL
  1770  		}
  1771  	}
  1772  	return
  1773  }
  1774  
  1775  func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
  1776  	r0, _, _ := Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
  1777  	if r0 != 0 {
  1778  		neterr = Errno(r0)
  1779  	}
  1780  	return
  1781  }
  1782  
  1783  func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
  1784  	r0, _, _ := Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
  1785  	if r0 != 0 {
  1786  		neterr = Errno(r0)
  1787  	}
  1788  	return
  1789  }
  1790  
  1791  func NetApiBufferFree(buf *byte) (neterr error) {
  1792  	r0, _, _ := Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
  1793  	if r0 != 0 {
  1794  		neterr = Errno(r0)
  1795  	}
  1796  	return
  1797  }
  1798  
  1799  func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
  1800  	r1, _, e1 := Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
  1801  	if r1 == 0 {
  1802  		if e1 != 0 {
  1803  			err = errnoErr(e1)
  1804  		} else {
  1805  			err = EINVAL
  1806  		}
  1807  	}
  1808  	return
  1809  }
  1810  
  1811  func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
  1812  	r1, _, e1 := Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
  1813  	if r1 == 0 {
  1814  		if e1 != 0 {
  1815  			err = errnoErr(e1)
  1816  		} else {
  1817  			err = EINVAL
  1818  		}
  1819  	}
  1820  	return
  1821  }
  1822  
  1823  func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
  1824  	r1, _, e1 := Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
  1825  	if r1 == 0 {
  1826  		if e1 != 0 {
  1827  			err = errnoErr(e1)
  1828  		} else {
  1829  			err = EINVAL
  1830  		}
  1831  	}
  1832  	return
  1833  }
  1834  
  1835  func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
  1836  	r1, _, e1 := Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
  1837  	if r1 == 0 {
  1838  		if e1 != 0 {
  1839  			err = errnoErr(e1)
  1840  		} else {
  1841  			err = EINVAL
  1842  		}
  1843  	}
  1844  	return
  1845  }
  1846  
  1847  func GetLengthSid(sid *SID) (len uint32) {
  1848  	r0, _, _ := Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
  1849  	len = uint32(r0)
  1850  	return
  1851  }
  1852  
  1853  func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
  1854  	r1, _, e1 := Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
  1855  	if r1 == 0 {
  1856  		if e1 != 0 {
  1857  			err = errnoErr(e1)
  1858  		} else {
  1859  			err = EINVAL
  1860  		}
  1861  	}
  1862  	return
  1863  }
  1864  
  1865  func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
  1866  	r1, _, e1 := Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
  1867  	if r1 == 0 {
  1868  		if e1 != 0 {
  1869  			err = errnoErr(e1)
  1870  		} else {
  1871  			err = EINVAL
  1872  		}
  1873  	}
  1874  	return
  1875  }
  1876  
  1877  func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
  1878  	r1, _, e1 := Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
  1879  	if r1 == 0 {
  1880  		if e1 != 0 {
  1881  			err = errnoErr(e1)
  1882  		} else {
  1883  			err = EINVAL
  1884  		}
  1885  	}
  1886  	return
  1887  }
  1888  
  1889  func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
  1890  	r1, _, e1 := Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
  1891  	if r1 == 0 {
  1892  		if e1 != 0 {
  1893  			err = errnoErr(e1)
  1894  		} else {
  1895  			err = EINVAL
  1896  		}
  1897  	}
  1898  	return
  1899  }