github.com/as/shiny@v0.8.2/sys/windows/zsyscall_windows.go (about)

     1  // MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
     2  
     3  package windows
     4  
     5  import (
     6  	"syscall"
     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 = syscall.Errno(errnoERROR_IO_PENDING)
    20  )
    21  
    22  // errnoErr returns common boxed Errno values, to prevent
    23  // allocations at runtime.
    24  func errnoErr(e syscall.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  	modadvapi32 = NewLazySystemDLL("advapi32.dll")
    39  	modkernel32 = NewLazySystemDLL("kernel32.dll")
    40  	modshell32  = NewLazySystemDLL("shell32.dll")
    41  	modmswsock  = NewLazySystemDLL("mswsock.dll")
    42  	modcrypt32  = NewLazySystemDLL("crypt32.dll")
    43  	modws2_32   = NewLazySystemDLL("ws2_32.dll")
    44  	moddnsapi   = NewLazySystemDLL("dnsapi.dll")
    45  	modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
    46  	modsecur32  = NewLazySystemDLL("secur32.dll")
    47  	modnetapi32 = NewLazySystemDLL("netapi32.dll")
    48  	moduserenv  = NewLazySystemDLL("userenv.dll")
    49  
    50  	procRegisterEventSourceW               = modadvapi32.NewProc("RegisterEventSourceW")
    51  	procDeregisterEventSource              = modadvapi32.NewProc("DeregisterEventSource")
    52  	procReportEventW                       = modadvapi32.NewProc("ReportEventW")
    53  	procOpenSCManagerW                     = modadvapi32.NewProc("OpenSCManagerW")
    54  	procCloseServiceHandle                 = modadvapi32.NewProc("CloseServiceHandle")
    55  	procCreateServiceW                     = modadvapi32.NewProc("CreateServiceW")
    56  	procOpenServiceW                       = modadvapi32.NewProc("OpenServiceW")
    57  	procDeleteService                      = modadvapi32.NewProc("DeleteService")
    58  	procStartServiceW                      = modadvapi32.NewProc("StartServiceW")
    59  	procQueryServiceStatus                 = modadvapi32.NewProc("QueryServiceStatus")
    60  	procControlService                     = modadvapi32.NewProc("ControlService")
    61  	procStartServiceCtrlDispatcherW        = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
    62  	procSetServiceStatus                   = modadvapi32.NewProc("SetServiceStatus")
    63  	procChangeServiceConfigW               = modadvapi32.NewProc("ChangeServiceConfigW")
    64  	procQueryServiceConfigW                = modadvapi32.NewProc("QueryServiceConfigW")
    65  	procChangeServiceConfig2W              = modadvapi32.NewProc("ChangeServiceConfig2W")
    66  	procQueryServiceConfig2W               = modadvapi32.NewProc("QueryServiceConfig2W")
    67  	procEnumServicesStatusExW              = modadvapi32.NewProc("EnumServicesStatusExW")
    68  	procGetLastError                       = modkernel32.NewProc("GetLastError")
    69  	procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
    70  	procLoadLibraryExW                     = modkernel32.NewProc("LoadLibraryExW")
    71  	procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
    72  	procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
    73  	procGetVersion                         = modkernel32.NewProc("GetVersion")
    74  	procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
    75  	procExitProcess                        = modkernel32.NewProc("ExitProcess")
    76  	procCreateFileW                        = modkernel32.NewProc("CreateFileW")
    77  	procReadFile                           = modkernel32.NewProc("ReadFile")
    78  	procWriteFile                          = modkernel32.NewProc("WriteFile")
    79  	procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
    80  	procCloseHandle                        = modkernel32.NewProc("CloseHandle")
    81  	procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
    82  	procSetStdHandle                       = modkernel32.NewProc("SetStdHandle")
    83  	procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
    84  	procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
    85  	procFindClose                          = modkernel32.NewProc("FindClose")
    86  	procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
    87  	procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
    88  	procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
    89  	procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
    90  	procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
    91  	procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
    92  	procMoveFileW                          = modkernel32.NewProc("MoveFileW")
    93  	procMoveFileExW                        = modkernel32.NewProc("MoveFileExW")
    94  	procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
    95  	procGetComputerNameExW                 = modkernel32.NewProc("GetComputerNameExW")
    96  	procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
    97  	procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
    98  	procGetSystemTimePreciseAsFileTime     = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
    99  	procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
   100  	procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
   101  	procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
   102  	procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
   103  	procCancelIo                           = modkernel32.NewProc("CancelIo")
   104  	procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
   105  	procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
   106  	procOpenProcess                        = modkernel32.NewProc("OpenProcess")
   107  	procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
   108  	procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
   109  	procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
   110  	procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
   111  	procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
   112  	procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
   113  	procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
   114  	procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
   115  	procCreatePipe                         = modkernel32.NewProc("CreatePipe")
   116  	procGetFileType                        = modkernel32.NewProc("GetFileType")
   117  	procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
   118  	procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
   119  	procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
   120  	procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
   121  	procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
   122  	procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
   123  	procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
   124  	procSetFileTime                        = modkernel32.NewProc("SetFileTime")
   125  	procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
   126  	procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
   127  	procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
   128  	procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
   129  	procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
   130  	procLocalFree                          = modkernel32.NewProc("LocalFree")
   131  	procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
   132  	procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
   133  	procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
   134  	procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
   135  	procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
   136  	procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
   137  	procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
   138  	procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
   139  	procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
   140  	procVirtualLock                        = modkernel32.NewProc("VirtualLock")
   141  	procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
   142  	procVirtualAlloc                       = modkernel32.NewProc("VirtualAlloc")
   143  	procVirtualFree                        = modkernel32.NewProc("VirtualFree")
   144  	procVirtualProtect                     = modkernel32.NewProc("VirtualProtect")
   145  	procTransmitFile                       = modmswsock.NewProc("TransmitFile")
   146  	procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
   147  	procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
   148  	procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
   149  	procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
   150  	procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
   151  	procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
   152  	procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
   153  	procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
   154  	procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
   155  	procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
   156  	procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
   157  	procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
   158  	procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
   159  	procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
   160  	procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
   161  	procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
   162  	procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
   163  	procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
   164  	procSetConsoleMode                     = modkernel32.NewProc("SetConsoleMode")
   165  	procGetConsoleScreenBufferInfo         = modkernel32.NewProc("GetConsoleScreenBufferInfo")
   166  	procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
   167  	procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
   168  	procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
   169  	procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
   170  	procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
   171  	procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
   172  	procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
   173  	procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
   174  	procGetCurrentThreadId                 = modkernel32.NewProc("GetCurrentThreadId")
   175  	procCreateEventW                       = modkernel32.NewProc("CreateEventW")
   176  	procCreateEventExW                     = modkernel32.NewProc("CreateEventExW")
   177  	procOpenEventW                         = modkernel32.NewProc("OpenEventW")
   178  	procSetEvent                           = modkernel32.NewProc("SetEvent")
   179  	procResetEvent                         = modkernel32.NewProc("ResetEvent")
   180  	procPulseEvent                         = modkernel32.NewProc("PulseEvent")
   181  	procDefineDosDeviceW                   = modkernel32.NewProc("DefineDosDeviceW")
   182  	procDeleteVolumeMountPointW            = modkernel32.NewProc("DeleteVolumeMountPointW")
   183  	procFindFirstVolumeW                   = modkernel32.NewProc("FindFirstVolumeW")
   184  	procFindFirstVolumeMountPointW         = modkernel32.NewProc("FindFirstVolumeMountPointW")
   185  	procFindNextVolumeW                    = modkernel32.NewProc("FindNextVolumeW")
   186  	procFindNextVolumeMountPointW          = modkernel32.NewProc("FindNextVolumeMountPointW")
   187  	procFindVolumeClose                    = modkernel32.NewProc("FindVolumeClose")
   188  	procFindVolumeMountPointClose          = modkernel32.NewProc("FindVolumeMountPointClose")
   189  	procGetDriveTypeW                      = modkernel32.NewProc("GetDriveTypeW")
   190  	procGetLogicalDrives                   = modkernel32.NewProc("GetLogicalDrives")
   191  	procGetLogicalDriveStringsW            = modkernel32.NewProc("GetLogicalDriveStringsW")
   192  	procGetVolumeInformationW              = modkernel32.NewProc("GetVolumeInformationW")
   193  	procGetVolumeInformationByHandleW      = modkernel32.NewProc("GetVolumeInformationByHandleW")
   194  	procGetVolumeNameForVolumeMountPointW  = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
   195  	procGetVolumePathNameW                 = modkernel32.NewProc("GetVolumePathNameW")
   196  	procGetVolumePathNamesForVolumeNameW   = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
   197  	procQueryDosDeviceW                    = modkernel32.NewProc("QueryDosDeviceW")
   198  	procSetVolumeLabelW                    = modkernel32.NewProc("SetVolumeLabelW")
   199  	procSetVolumeMountPointW               = modkernel32.NewProc("SetVolumeMountPointW")
   200  	procWSAStartup                         = modws2_32.NewProc("WSAStartup")
   201  	procWSACleanup                         = modws2_32.NewProc("WSACleanup")
   202  	procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
   203  	procsocket                             = modws2_32.NewProc("socket")
   204  	procsetsockopt                         = modws2_32.NewProc("setsockopt")
   205  	procgetsockopt                         = modws2_32.NewProc("getsockopt")
   206  	procbind                               = modws2_32.NewProc("bind")
   207  	procconnect                            = modws2_32.NewProc("connect")
   208  	procgetsockname                        = modws2_32.NewProc("getsockname")
   209  	procgetpeername                        = modws2_32.NewProc("getpeername")
   210  	proclisten                             = modws2_32.NewProc("listen")
   211  	procshutdown                           = modws2_32.NewProc("shutdown")
   212  	procclosesocket                        = modws2_32.NewProc("closesocket")
   213  	procAcceptEx                           = modmswsock.NewProc("AcceptEx")
   214  	procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
   215  	procWSARecv                            = modws2_32.NewProc("WSARecv")
   216  	procWSASend                            = modws2_32.NewProc("WSASend")
   217  	procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
   218  	procWSASendTo                          = modws2_32.NewProc("WSASendTo")
   219  	procgethostbyname                      = modws2_32.NewProc("gethostbyname")
   220  	procgetservbyname                      = modws2_32.NewProc("getservbyname")
   221  	procntohs                              = modws2_32.NewProc("ntohs")
   222  	procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
   223  	procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
   224  	procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
   225  	procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
   226  	procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
   227  	procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
   228  	procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
   229  	procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
   230  	procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
   231  	procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
   232  	procGetAdaptersAddresses               = modiphlpapi.NewProc("GetAdaptersAddresses")
   233  	procGetACP                             = modkernel32.NewProc("GetACP")
   234  	procMultiByteToWideChar                = modkernel32.NewProc("MultiByteToWideChar")
   235  	procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
   236  	procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
   237  	procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
   238  	procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
   239  	procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
   240  	procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
   241  	procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
   242  	procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
   243  	procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
   244  	procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
   245  	procCopySid                            = modadvapi32.NewProc("CopySid")
   246  	procAllocateAndInitializeSid           = modadvapi32.NewProc("AllocateAndInitializeSid")
   247  	procFreeSid                            = modadvapi32.NewProc("FreeSid")
   248  	procEqualSid                           = modadvapi32.NewProc("EqualSid")
   249  	procCheckTokenMembership               = modadvapi32.NewProc("CheckTokenMembership")
   250  	procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
   251  	procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
   252  	procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
   253  )
   254  
   255  func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
   256  	r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
   257  	handle = Handle(r0)
   258  	if handle == 0 {
   259  		if e1 != 0 {
   260  			err = errnoErr(e1)
   261  		} else {
   262  			err = syscall.EINVAL
   263  		}
   264  	}
   265  	return
   266  }
   267  
   268  func DeregisterEventSource(handle Handle) (err error) {
   269  	r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
   270  	if r1 == 0 {
   271  		if e1 != 0 {
   272  			err = errnoErr(e1)
   273  		} else {
   274  			err = syscall.EINVAL
   275  		}
   276  	}
   277  	return
   278  }
   279  
   280  func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
   281  	r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
   282  	if r1 == 0 {
   283  		if e1 != 0 {
   284  			err = errnoErr(e1)
   285  		} else {
   286  			err = syscall.EINVAL
   287  		}
   288  	}
   289  	return
   290  }
   291  
   292  func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
   293  	r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
   294  	handle = Handle(r0)
   295  	if handle == 0 {
   296  		if e1 != 0 {
   297  			err = errnoErr(e1)
   298  		} else {
   299  			err = syscall.EINVAL
   300  		}
   301  	}
   302  	return
   303  }
   304  
   305  func CloseServiceHandle(handle Handle) (err error) {
   306  	r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
   307  	if r1 == 0 {
   308  		if e1 != 0 {
   309  			err = errnoErr(e1)
   310  		} else {
   311  			err = syscall.EINVAL
   312  		}
   313  	}
   314  	return
   315  }
   316  
   317  func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
   318  	r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
   319  	handle = Handle(r0)
   320  	if handle == 0 {
   321  		if e1 != 0 {
   322  			err = errnoErr(e1)
   323  		} else {
   324  			err = syscall.EINVAL
   325  		}
   326  	}
   327  	return
   328  }
   329  
   330  func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
   331  	r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
   332  	handle = Handle(r0)
   333  	if handle == 0 {
   334  		if e1 != 0 {
   335  			err = errnoErr(e1)
   336  		} else {
   337  			err = syscall.EINVAL
   338  		}
   339  	}
   340  	return
   341  }
   342  
   343  func DeleteService(service Handle) (err error) {
   344  	r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
   345  	if r1 == 0 {
   346  		if e1 != 0 {
   347  			err = errnoErr(e1)
   348  		} else {
   349  			err = syscall.EINVAL
   350  		}
   351  	}
   352  	return
   353  }
   354  
   355  func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
   356  	r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
   357  	if r1 == 0 {
   358  		if e1 != 0 {
   359  			err = errnoErr(e1)
   360  		} else {
   361  			err = syscall.EINVAL
   362  		}
   363  	}
   364  	return
   365  }
   366  
   367  func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
   368  	r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
   369  	if r1 == 0 {
   370  		if e1 != 0 {
   371  			err = errnoErr(e1)
   372  		} else {
   373  			err = syscall.EINVAL
   374  		}
   375  	}
   376  	return
   377  }
   378  
   379  func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
   380  	r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
   381  	if r1 == 0 {
   382  		if e1 != 0 {
   383  			err = errnoErr(e1)
   384  		} else {
   385  			err = syscall.EINVAL
   386  		}
   387  	}
   388  	return
   389  }
   390  
   391  func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
   392  	r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
   393  	if r1 == 0 {
   394  		if e1 != 0 {
   395  			err = errnoErr(e1)
   396  		} else {
   397  			err = syscall.EINVAL
   398  		}
   399  	}
   400  	return
   401  }
   402  
   403  func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
   404  	r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
   405  	if r1 == 0 {
   406  		if e1 != 0 {
   407  			err = errnoErr(e1)
   408  		} else {
   409  			err = syscall.EINVAL
   410  		}
   411  	}
   412  	return
   413  }
   414  
   415  func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
   416  	r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
   417  	if r1 == 0 {
   418  		if e1 != 0 {
   419  			err = errnoErr(e1)
   420  		} else {
   421  			err = syscall.EINVAL
   422  		}
   423  	}
   424  	return
   425  }
   426  
   427  func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
   428  	r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
   429  	if r1 == 0 {
   430  		if e1 != 0 {
   431  			err = errnoErr(e1)
   432  		} else {
   433  			err = syscall.EINVAL
   434  		}
   435  	}
   436  	return
   437  }
   438  
   439  func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
   440  	r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
   441  	if r1 == 0 {
   442  		if e1 != 0 {
   443  			err = errnoErr(e1)
   444  		} else {
   445  			err = syscall.EINVAL
   446  		}
   447  	}
   448  	return
   449  }
   450  
   451  func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
   452  	r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
   453  	if r1 == 0 {
   454  		if e1 != 0 {
   455  			err = errnoErr(e1)
   456  		} else {
   457  			err = syscall.EINVAL
   458  		}
   459  	}
   460  	return
   461  }
   462  
   463  func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {
   464  	r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0)
   465  	if r1 == 0 {
   466  		if e1 != 0 {
   467  			err = errnoErr(e1)
   468  		} else {
   469  			err = syscall.EINVAL
   470  		}
   471  	}
   472  	return
   473  }
   474  
   475  func GetLastError() (lasterr error) {
   476  	r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
   477  	if r0 != 0 {
   478  		lasterr = syscall.Errno(r0)
   479  	}
   480  	return
   481  }
   482  
   483  func LoadLibrary(libname string) (handle Handle, err error) {
   484  	var _p0 *uint16
   485  	_p0, err = syscall.UTF16PtrFromString(libname)
   486  	if err != nil {
   487  		return
   488  	}
   489  	return _LoadLibrary(_p0)
   490  }
   491  
   492  func _LoadLibrary(libname *uint16) (handle Handle, err error) {
   493  	r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
   494  	handle = Handle(r0)
   495  	if handle == 0 {
   496  		if e1 != 0 {
   497  			err = errnoErr(e1)
   498  		} else {
   499  			err = syscall.EINVAL
   500  		}
   501  	}
   502  	return
   503  }
   504  
   505  func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
   506  	var _p0 *uint16
   507  	_p0, err = syscall.UTF16PtrFromString(libname)
   508  	if err != nil {
   509  		return
   510  	}
   511  	return _LoadLibraryEx(_p0, zero, flags)
   512  }
   513  
   514  func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
   515  	r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
   516  	handle = Handle(r0)
   517  	if handle == 0 {
   518  		if e1 != 0 {
   519  			err = errnoErr(e1)
   520  		} else {
   521  			err = syscall.EINVAL
   522  		}
   523  	}
   524  	return
   525  }
   526  
   527  func FreeLibrary(handle Handle) (err error) {
   528  	r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
   529  	if r1 == 0 {
   530  		if e1 != 0 {
   531  			err = errnoErr(e1)
   532  		} else {
   533  			err = syscall.EINVAL
   534  		}
   535  	}
   536  	return
   537  }
   538  
   539  func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
   540  	var _p0 *byte
   541  	_p0, err = syscall.BytePtrFromString(procname)
   542  	if err != nil {
   543  		return
   544  	}
   545  	return _GetProcAddress(module, _p0)
   546  }
   547  
   548  func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
   549  	r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
   550  	proc = uintptr(r0)
   551  	if proc == 0 {
   552  		if e1 != 0 {
   553  			err = errnoErr(e1)
   554  		} else {
   555  			err = syscall.EINVAL
   556  		}
   557  	}
   558  	return
   559  }
   560  
   561  func GetVersion() (ver uint32, err error) {
   562  	r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
   563  	ver = uint32(r0)
   564  	if ver == 0 {
   565  		if e1 != 0 {
   566  			err = errnoErr(e1)
   567  		} else {
   568  			err = syscall.EINVAL
   569  		}
   570  	}
   571  	return
   572  }
   573  
   574  func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
   575  	var _p0 *uint16
   576  	if len(buf) > 0 {
   577  		_p0 = &buf[0]
   578  	}
   579  	r0, _, e1 := syscall.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)
   580  	n = uint32(r0)
   581  	if n == 0 {
   582  		if e1 != 0 {
   583  			err = errnoErr(e1)
   584  		} else {
   585  			err = syscall.EINVAL
   586  		}
   587  	}
   588  	return
   589  }
   590  
   591  func ExitProcess(exitcode uint32) {
   592  	syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
   593  	return
   594  }
   595  
   596  func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
   597  	r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
   598  	handle = Handle(r0)
   599  	if handle == InvalidHandle {
   600  		if e1 != 0 {
   601  			err = errnoErr(e1)
   602  		} else {
   603  			err = syscall.EINVAL
   604  		}
   605  	}
   606  	return
   607  }
   608  
   609  func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
   610  	var _p0 *byte
   611  	if len(buf) > 0 {
   612  		_p0 = &buf[0]
   613  	}
   614  	r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
   615  	if r1 == 0 {
   616  		if e1 != 0 {
   617  			err = errnoErr(e1)
   618  		} else {
   619  			err = syscall.EINVAL
   620  		}
   621  	}
   622  	return
   623  }
   624  
   625  func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
   626  	var _p0 *byte
   627  	if len(buf) > 0 {
   628  		_p0 = &buf[0]
   629  	}
   630  	r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
   631  	if r1 == 0 {
   632  		if e1 != 0 {
   633  			err = errnoErr(e1)
   634  		} else {
   635  			err = syscall.EINVAL
   636  		}
   637  	}
   638  	return
   639  }
   640  
   641  func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
   642  	r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
   643  	newlowoffset = uint32(r0)
   644  	if newlowoffset == 0xffffffff {
   645  		if e1 != 0 {
   646  			err = errnoErr(e1)
   647  		} else {
   648  			err = syscall.EINVAL
   649  		}
   650  	}
   651  	return
   652  }
   653  
   654  func CloseHandle(handle Handle) (err error) {
   655  	r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
   656  	if r1 == 0 {
   657  		if e1 != 0 {
   658  			err = errnoErr(e1)
   659  		} else {
   660  			err = syscall.EINVAL
   661  		}
   662  	}
   663  	return
   664  }
   665  
   666  func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
   667  	r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
   668  	handle = Handle(r0)
   669  	if handle == InvalidHandle {
   670  		if e1 != 0 {
   671  			err = errnoErr(e1)
   672  		} else {
   673  			err = syscall.EINVAL
   674  		}
   675  	}
   676  	return
   677  }
   678  
   679  func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
   680  	r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
   681  	if r1 == 0 {
   682  		if e1 != 0 {
   683  			err = errnoErr(e1)
   684  		} else {
   685  			err = syscall.EINVAL
   686  		}
   687  	}
   688  	return
   689  }
   690  
   691  func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
   692  	r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
   693  	handle = Handle(r0)
   694  	if handle == InvalidHandle {
   695  		if e1 != 0 {
   696  			err = errnoErr(e1)
   697  		} else {
   698  			err = syscall.EINVAL
   699  		}
   700  	}
   701  	return
   702  }
   703  
   704  func findNextFile1(handle Handle, data *win32finddata1) (err error) {
   705  	r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
   706  	if r1 == 0 {
   707  		if e1 != 0 {
   708  			err = errnoErr(e1)
   709  		} else {
   710  			err = syscall.EINVAL
   711  		}
   712  	}
   713  	return
   714  }
   715  
   716  func FindClose(handle Handle) (err error) {
   717  	r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
   718  	if r1 == 0 {
   719  		if e1 != 0 {
   720  			err = errnoErr(e1)
   721  		} else {
   722  			err = syscall.EINVAL
   723  		}
   724  	}
   725  	return
   726  }
   727  
   728  func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
   729  	r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
   730  	if r1 == 0 {
   731  		if e1 != 0 {
   732  			err = errnoErr(e1)
   733  		} else {
   734  			err = syscall.EINVAL
   735  		}
   736  	}
   737  	return
   738  }
   739  
   740  func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
   741  	r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
   742  	n = uint32(r0)
   743  	if n == 0 {
   744  		if e1 != 0 {
   745  			err = errnoErr(e1)
   746  		} else {
   747  			err = syscall.EINVAL
   748  		}
   749  	}
   750  	return
   751  }
   752  
   753  func SetCurrentDirectory(path *uint16) (err error) {
   754  	r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   755  	if r1 == 0 {
   756  		if e1 != 0 {
   757  			err = errnoErr(e1)
   758  		} else {
   759  			err = syscall.EINVAL
   760  		}
   761  	}
   762  	return
   763  }
   764  
   765  func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
   766  	r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
   767  	if r1 == 0 {
   768  		if e1 != 0 {
   769  			err = errnoErr(e1)
   770  		} else {
   771  			err = syscall.EINVAL
   772  		}
   773  	}
   774  	return
   775  }
   776  
   777  func RemoveDirectory(path *uint16) (err error) {
   778  	r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   779  	if r1 == 0 {
   780  		if e1 != 0 {
   781  			err = errnoErr(e1)
   782  		} else {
   783  			err = syscall.EINVAL
   784  		}
   785  	}
   786  	return
   787  }
   788  
   789  func DeleteFile(path *uint16) (err error) {
   790  	r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
   791  	if r1 == 0 {
   792  		if e1 != 0 {
   793  			err = errnoErr(e1)
   794  		} else {
   795  			err = syscall.EINVAL
   796  		}
   797  	}
   798  	return
   799  }
   800  
   801  func MoveFile(from *uint16, to *uint16) (err error) {
   802  	r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
   803  	if r1 == 0 {
   804  		if e1 != 0 {
   805  			err = errnoErr(e1)
   806  		} else {
   807  			err = syscall.EINVAL
   808  		}
   809  	}
   810  	return
   811  }
   812  
   813  func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
   814  	r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
   815  	if r1 == 0 {
   816  		if e1 != 0 {
   817  			err = errnoErr(e1)
   818  		} else {
   819  			err = syscall.EINVAL
   820  		}
   821  	}
   822  	return
   823  }
   824  
   825  func GetComputerName(buf *uint16, n *uint32) (err error) {
   826  	r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
   827  	if r1 == 0 {
   828  		if e1 != 0 {
   829  			err = errnoErr(e1)
   830  		} else {
   831  			err = syscall.EINVAL
   832  		}
   833  	}
   834  	return
   835  }
   836  
   837  func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
   838  	r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
   839  	if r1 == 0 {
   840  		if e1 != 0 {
   841  			err = errnoErr(e1)
   842  		} else {
   843  			err = syscall.EINVAL
   844  		}
   845  	}
   846  	return
   847  }
   848  
   849  func SetEndOfFile(handle Handle) (err error) {
   850  	r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
   851  	if r1 == 0 {
   852  		if e1 != 0 {
   853  			err = errnoErr(e1)
   854  		} else {
   855  			err = syscall.EINVAL
   856  		}
   857  	}
   858  	return
   859  }
   860  
   861  func GetSystemTimeAsFileTime(time *Filetime) {
   862  	syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
   863  	return
   864  }
   865  
   866  func GetSystemTimePreciseAsFileTime(time *Filetime) {
   867  	syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
   868  	return
   869  }
   870  
   871  func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
   872  	r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
   873  	rc = uint32(r0)
   874  	if rc == 0xffffffff {
   875  		if e1 != 0 {
   876  			err = errnoErr(e1)
   877  		} else {
   878  			err = syscall.EINVAL
   879  		}
   880  	}
   881  	return
   882  }
   883  
   884  func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
   885  	r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
   886  	handle = Handle(r0)
   887  	if handle == 0 {
   888  		if e1 != 0 {
   889  			err = errnoErr(e1)
   890  		} else {
   891  			err = syscall.EINVAL
   892  		}
   893  	}
   894  	return
   895  }
   896  
   897  func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
   898  	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
   899  	if r1 == 0 {
   900  		if e1 != 0 {
   901  			err = errnoErr(e1)
   902  		} else {
   903  			err = syscall.EINVAL
   904  		}
   905  	}
   906  	return
   907  }
   908  
   909  func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
   910  	r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
   911  	if r1 == 0 {
   912  		if e1 != 0 {
   913  			err = errnoErr(e1)
   914  		} else {
   915  			err = syscall.EINVAL
   916  		}
   917  	}
   918  	return
   919  }
   920  
   921  func CancelIo(s Handle) (err error) {
   922  	r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
   923  	if r1 == 0 {
   924  		if e1 != 0 {
   925  			err = errnoErr(e1)
   926  		} else {
   927  			err = syscall.EINVAL
   928  		}
   929  	}
   930  	return
   931  }
   932  
   933  func CancelIoEx(s Handle, o *Overlapped) (err error) {
   934  	r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
   935  	if r1 == 0 {
   936  		if e1 != 0 {
   937  			err = errnoErr(e1)
   938  		} else {
   939  			err = syscall.EINVAL
   940  		}
   941  	}
   942  	return
   943  }
   944  
   945  func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
   946  	var _p0 uint32
   947  	if inheritHandles {
   948  		_p0 = 1
   949  	} else {
   950  		_p0 = 0
   951  	}
   952  	r1, _, e1 := syscall.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)
   953  	if r1 == 0 {
   954  		if e1 != 0 {
   955  			err = errnoErr(e1)
   956  		} else {
   957  			err = syscall.EINVAL
   958  		}
   959  	}
   960  	return
   961  }
   962  
   963  func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
   964  	var _p0 uint32
   965  	if inheritHandle {
   966  		_p0 = 1
   967  	} else {
   968  		_p0 = 0
   969  	}
   970  	r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
   971  	handle = Handle(r0)
   972  	if handle == 0 {
   973  		if e1 != 0 {
   974  			err = errnoErr(e1)
   975  		} else {
   976  			err = syscall.EINVAL
   977  		}
   978  	}
   979  	return
   980  }
   981  
   982  func TerminateProcess(handle Handle, exitcode uint32) (err error) {
   983  	r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
   984  	if r1 == 0 {
   985  		if e1 != 0 {
   986  			err = errnoErr(e1)
   987  		} else {
   988  			err = syscall.EINVAL
   989  		}
   990  	}
   991  	return
   992  }
   993  
   994  func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
   995  	r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
   996  	if r1 == 0 {
   997  		if e1 != 0 {
   998  			err = errnoErr(e1)
   999  		} else {
  1000  			err = syscall.EINVAL
  1001  		}
  1002  	}
  1003  	return
  1004  }
  1005  
  1006  func GetStartupInfo(startupInfo *StartupInfo) (err error) {
  1007  	r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
  1008  	if r1 == 0 {
  1009  		if e1 != 0 {
  1010  			err = errnoErr(e1)
  1011  		} else {
  1012  			err = syscall.EINVAL
  1013  		}
  1014  	}
  1015  	return
  1016  }
  1017  
  1018  func GetCurrentProcess() (pseudoHandle Handle, err error) {
  1019  	r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
  1020  	pseudoHandle = Handle(r0)
  1021  	if pseudoHandle == 0 {
  1022  		if e1 != 0 {
  1023  			err = errnoErr(e1)
  1024  		} else {
  1025  			err = syscall.EINVAL
  1026  		}
  1027  	}
  1028  	return
  1029  }
  1030  
  1031  func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
  1032  	r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
  1033  	if r1 == 0 {
  1034  		if e1 != 0 {
  1035  			err = errnoErr(e1)
  1036  		} else {
  1037  			err = syscall.EINVAL
  1038  		}
  1039  	}
  1040  	return
  1041  }
  1042  
  1043  func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
  1044  	var _p0 uint32
  1045  	if bInheritHandle {
  1046  		_p0 = 1
  1047  	} else {
  1048  		_p0 = 0
  1049  	}
  1050  	r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
  1051  	if r1 == 0 {
  1052  		if e1 != 0 {
  1053  			err = errnoErr(e1)
  1054  		} else {
  1055  			err = syscall.EINVAL
  1056  		}
  1057  	}
  1058  	return
  1059  }
  1060  
  1061  func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
  1062  	r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
  1063  	event = uint32(r0)
  1064  	if event == 0xffffffff {
  1065  		if e1 != 0 {
  1066  			err = errnoErr(e1)
  1067  		} else {
  1068  			err = syscall.EINVAL
  1069  		}
  1070  	}
  1071  	return
  1072  }
  1073  
  1074  func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
  1075  	r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
  1076  	n = uint32(r0)
  1077  	if n == 0 {
  1078  		if e1 != 0 {
  1079  			err = errnoErr(e1)
  1080  		} else {
  1081  			err = syscall.EINVAL
  1082  		}
  1083  	}
  1084  	return
  1085  }
  1086  
  1087  func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
  1088  	r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
  1089  	if r1 == 0 {
  1090  		if e1 != 0 {
  1091  			err = errnoErr(e1)
  1092  		} else {
  1093  			err = syscall.EINVAL
  1094  		}
  1095  	}
  1096  	return
  1097  }
  1098  
  1099  func GetFileType(filehandle Handle) (n uint32, err error) {
  1100  	r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
  1101  	n = uint32(r0)
  1102  	if n == 0 {
  1103  		if e1 != 0 {
  1104  			err = errnoErr(e1)
  1105  		} else {
  1106  			err = syscall.EINVAL
  1107  		}
  1108  	}
  1109  	return
  1110  }
  1111  
  1112  func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
  1113  	r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
  1114  	if r1 == 0 {
  1115  		if e1 != 0 {
  1116  			err = errnoErr(e1)
  1117  		} else {
  1118  			err = syscall.EINVAL
  1119  		}
  1120  	}
  1121  	return
  1122  }
  1123  
  1124  func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
  1125  	r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
  1126  	if r1 == 0 {
  1127  		if e1 != 0 {
  1128  			err = errnoErr(e1)
  1129  		} else {
  1130  			err = syscall.EINVAL
  1131  		}
  1132  	}
  1133  	return
  1134  }
  1135  
  1136  func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
  1137  	r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
  1138  	if r1 == 0 {
  1139  		if e1 != 0 {
  1140  			err = errnoErr(e1)
  1141  		} else {
  1142  			err = syscall.EINVAL
  1143  		}
  1144  	}
  1145  	return
  1146  }
  1147  
  1148  func GetEnvironmentStrings() (envs *uint16, err error) {
  1149  	r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
  1150  	envs = (*uint16)(unsafe.Pointer(r0))
  1151  	if envs == nil {
  1152  		if e1 != 0 {
  1153  			err = errnoErr(e1)
  1154  		} else {
  1155  			err = syscall.EINVAL
  1156  		}
  1157  	}
  1158  	return
  1159  }
  1160  
  1161  func FreeEnvironmentStrings(envs *uint16) (err error) {
  1162  	r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
  1163  	if r1 == 0 {
  1164  		if e1 != 0 {
  1165  			err = errnoErr(e1)
  1166  		} else {
  1167  			err = syscall.EINVAL
  1168  		}
  1169  	}
  1170  	return
  1171  }
  1172  
  1173  func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
  1174  	r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
  1175  	n = uint32(r0)
  1176  	if n == 0 {
  1177  		if e1 != 0 {
  1178  			err = errnoErr(e1)
  1179  		} else {
  1180  			err = syscall.EINVAL
  1181  		}
  1182  	}
  1183  	return
  1184  }
  1185  
  1186  func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
  1187  	r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
  1188  	if r1 == 0 {
  1189  		if e1 != 0 {
  1190  			err = errnoErr(e1)
  1191  		} else {
  1192  			err = syscall.EINVAL
  1193  		}
  1194  	}
  1195  	return
  1196  }
  1197  
  1198  func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
  1199  	r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
  1200  	if r1 == 0 {
  1201  		if e1 != 0 {
  1202  			err = errnoErr(e1)
  1203  		} else {
  1204  			err = syscall.EINVAL
  1205  		}
  1206  	}
  1207  	return
  1208  }
  1209  
  1210  func GetFileAttributes(name *uint16) (attrs uint32, err error) {
  1211  	r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
  1212  	attrs = uint32(r0)
  1213  	if attrs == INVALID_FILE_ATTRIBUTES {
  1214  		if e1 != 0 {
  1215  			err = errnoErr(e1)
  1216  		} else {
  1217  			err = syscall.EINVAL
  1218  		}
  1219  	}
  1220  	return
  1221  }
  1222  
  1223  func SetFileAttributes(name *uint16, attrs uint32) (err error) {
  1224  	r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
  1225  	if r1 == 0 {
  1226  		if e1 != 0 {
  1227  			err = errnoErr(e1)
  1228  		} else {
  1229  			err = syscall.EINVAL
  1230  		}
  1231  	}
  1232  	return
  1233  }
  1234  
  1235  func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
  1236  	r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
  1237  	if r1 == 0 {
  1238  		if e1 != 0 {
  1239  			err = errnoErr(e1)
  1240  		} else {
  1241  			err = syscall.EINVAL
  1242  		}
  1243  	}
  1244  	return
  1245  }
  1246  
  1247  func GetCommandLine() (cmd *uint16) {
  1248  	r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
  1249  	cmd = (*uint16)(unsafe.Pointer(r0))
  1250  	return
  1251  }
  1252  
  1253  func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
  1254  	r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
  1255  	argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
  1256  	if argv == nil {
  1257  		if e1 != 0 {
  1258  			err = errnoErr(e1)
  1259  		} else {
  1260  			err = syscall.EINVAL
  1261  		}
  1262  	}
  1263  	return
  1264  }
  1265  
  1266  func LocalFree(hmem Handle) (handle Handle, err error) {
  1267  	r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
  1268  	handle = Handle(r0)
  1269  	if handle != 0 {
  1270  		if e1 != 0 {
  1271  			err = errnoErr(e1)
  1272  		} else {
  1273  			err = syscall.EINVAL
  1274  		}
  1275  	}
  1276  	return
  1277  }
  1278  
  1279  func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
  1280  	r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
  1281  	if r1 == 0 {
  1282  		if e1 != 0 {
  1283  			err = errnoErr(e1)
  1284  		} else {
  1285  			err = syscall.EINVAL
  1286  		}
  1287  	}
  1288  	return
  1289  }
  1290  
  1291  func FlushFileBuffers(handle Handle) (err error) {
  1292  	r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
  1293  	if r1 == 0 {
  1294  		if e1 != 0 {
  1295  			err = errnoErr(e1)
  1296  		} else {
  1297  			err = syscall.EINVAL
  1298  		}
  1299  	}
  1300  	return
  1301  }
  1302  
  1303  func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
  1304  	r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
  1305  	n = uint32(r0)
  1306  	if n == 0 {
  1307  		if e1 != 0 {
  1308  			err = errnoErr(e1)
  1309  		} else {
  1310  			err = syscall.EINVAL
  1311  		}
  1312  	}
  1313  	return
  1314  }
  1315  
  1316  func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
  1317  	r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
  1318  	n = uint32(r0)
  1319  	if n == 0 {
  1320  		if e1 != 0 {
  1321  			err = errnoErr(e1)
  1322  		} else {
  1323  			err = syscall.EINVAL
  1324  		}
  1325  	}
  1326  	return
  1327  }
  1328  
  1329  func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
  1330  	r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
  1331  	n = uint32(r0)
  1332  	if n == 0 {
  1333  		if e1 != 0 {
  1334  			err = errnoErr(e1)
  1335  		} else {
  1336  			err = syscall.EINVAL
  1337  		}
  1338  	}
  1339  	return
  1340  }
  1341  
  1342  func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
  1343  	r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
  1344  	handle = Handle(r0)
  1345  	if handle == 0 {
  1346  		if e1 != 0 {
  1347  			err = errnoErr(e1)
  1348  		} else {
  1349  			err = syscall.EINVAL
  1350  		}
  1351  	}
  1352  	return
  1353  }
  1354  
  1355  func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
  1356  	r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
  1357  	addr = uintptr(r0)
  1358  	if addr == 0 {
  1359  		if e1 != 0 {
  1360  			err = errnoErr(e1)
  1361  		} else {
  1362  			err = syscall.EINVAL
  1363  		}
  1364  	}
  1365  	return
  1366  }
  1367  
  1368  func UnmapViewOfFile(addr uintptr) (err error) {
  1369  	r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
  1370  	if r1 == 0 {
  1371  		if e1 != 0 {
  1372  			err = errnoErr(e1)
  1373  		} else {
  1374  			err = syscall.EINVAL
  1375  		}
  1376  	}
  1377  	return
  1378  }
  1379  
  1380  func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
  1381  	r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1382  	if r1 == 0 {
  1383  		if e1 != 0 {
  1384  			err = errnoErr(e1)
  1385  		} else {
  1386  			err = syscall.EINVAL
  1387  		}
  1388  	}
  1389  	return
  1390  }
  1391  
  1392  func VirtualLock(addr uintptr, length uintptr) (err error) {
  1393  	r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1394  	if r1 == 0 {
  1395  		if e1 != 0 {
  1396  			err = errnoErr(e1)
  1397  		} else {
  1398  			err = syscall.EINVAL
  1399  		}
  1400  	}
  1401  	return
  1402  }
  1403  
  1404  func VirtualUnlock(addr uintptr, length uintptr) (err error) {
  1405  	r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
  1406  	if r1 == 0 {
  1407  		if e1 != 0 {
  1408  			err = errnoErr(e1)
  1409  		} else {
  1410  			err = syscall.EINVAL
  1411  		}
  1412  	}
  1413  	return
  1414  }
  1415  
  1416  func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
  1417  	r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
  1418  	value = uintptr(r0)
  1419  	if value == 0 {
  1420  		if e1 != 0 {
  1421  			err = errnoErr(e1)
  1422  		} else {
  1423  			err = syscall.EINVAL
  1424  		}
  1425  	}
  1426  	return
  1427  }
  1428  
  1429  func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
  1430  	r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
  1431  	if r1 == 0 {
  1432  		if e1 != 0 {
  1433  			err = errnoErr(e1)
  1434  		} else {
  1435  			err = syscall.EINVAL
  1436  		}
  1437  	}
  1438  	return
  1439  }
  1440  
  1441  func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
  1442  	r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)
  1443  	if r1 == 0 {
  1444  		if e1 != 0 {
  1445  			err = errnoErr(e1)
  1446  		} else {
  1447  			err = syscall.EINVAL
  1448  		}
  1449  	}
  1450  	return
  1451  }
  1452  
  1453  func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
  1454  	r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
  1455  	if r1 == 0 {
  1456  		if e1 != 0 {
  1457  			err = errnoErr(e1)
  1458  		} else {
  1459  			err = syscall.EINVAL
  1460  		}
  1461  	}
  1462  	return
  1463  }
  1464  
  1465  func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
  1466  	var _p0 uint32
  1467  	if watchSubTree {
  1468  		_p0 = 1
  1469  	} else {
  1470  		_p0 = 0
  1471  	}
  1472  	r1, _, e1 := syscall.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)
  1473  	if r1 == 0 {
  1474  		if e1 != 0 {
  1475  			err = errnoErr(e1)
  1476  		} else {
  1477  			err = syscall.EINVAL
  1478  		}
  1479  	}
  1480  	return
  1481  }
  1482  
  1483  func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
  1484  	r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
  1485  	store = Handle(r0)
  1486  	if store == 0 {
  1487  		if e1 != 0 {
  1488  			err = errnoErr(e1)
  1489  		} else {
  1490  			err = syscall.EINVAL
  1491  		}
  1492  	}
  1493  	return
  1494  }
  1495  
  1496  func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
  1497  	r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
  1498  	handle = Handle(r0)
  1499  	if handle == InvalidHandle {
  1500  		if e1 != 0 {
  1501  			err = errnoErr(e1)
  1502  		} else {
  1503  			err = syscall.EINVAL
  1504  		}
  1505  	}
  1506  	return
  1507  }
  1508  
  1509  func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
  1510  	r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
  1511  	context = (*CertContext)(unsafe.Pointer(r0))
  1512  	if context == nil {
  1513  		if e1 != 0 {
  1514  			err = errnoErr(e1)
  1515  		} else {
  1516  			err = syscall.EINVAL
  1517  		}
  1518  	}
  1519  	return
  1520  }
  1521  
  1522  func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
  1523  	r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
  1524  	if r1 == 0 {
  1525  		if e1 != 0 {
  1526  			err = errnoErr(e1)
  1527  		} else {
  1528  			err = syscall.EINVAL
  1529  		}
  1530  	}
  1531  	return
  1532  }
  1533  
  1534  func CertCloseStore(store Handle, flags uint32) (err error) {
  1535  	r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
  1536  	if r1 == 0 {
  1537  		if e1 != 0 {
  1538  			err = errnoErr(e1)
  1539  		} else {
  1540  			err = syscall.EINVAL
  1541  		}
  1542  	}
  1543  	return
  1544  }
  1545  
  1546  func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
  1547  	r1, _, e1 := syscall.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)
  1548  	if r1 == 0 {
  1549  		if e1 != 0 {
  1550  			err = errnoErr(e1)
  1551  		} else {
  1552  			err = syscall.EINVAL
  1553  		}
  1554  	}
  1555  	return
  1556  }
  1557  
  1558  func CertFreeCertificateChain(ctx *CertChainContext) {
  1559  	syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
  1560  	return
  1561  }
  1562  
  1563  func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
  1564  	r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
  1565  	context = (*CertContext)(unsafe.Pointer(r0))
  1566  	if context == nil {
  1567  		if e1 != 0 {
  1568  			err = errnoErr(e1)
  1569  		} else {
  1570  			err = syscall.EINVAL
  1571  		}
  1572  	}
  1573  	return
  1574  }
  1575  
  1576  func CertFreeCertificateContext(ctx *CertContext) (err error) {
  1577  	r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
  1578  	if r1 == 0 {
  1579  		if e1 != 0 {
  1580  			err = errnoErr(e1)
  1581  		} else {
  1582  			err = syscall.EINVAL
  1583  		}
  1584  	}
  1585  	return
  1586  }
  1587  
  1588  func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
  1589  	r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
  1590  	if r1 == 0 {
  1591  		if e1 != 0 {
  1592  			err = errnoErr(e1)
  1593  		} else {
  1594  			err = syscall.EINVAL
  1595  		}
  1596  	}
  1597  	return
  1598  }
  1599  
  1600  func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
  1601  	r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
  1602  	if r0 != 0 {
  1603  		regerrno = syscall.Errno(r0)
  1604  	}
  1605  	return
  1606  }
  1607  
  1608  func RegCloseKey(key Handle) (regerrno error) {
  1609  	r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
  1610  	if r0 != 0 {
  1611  		regerrno = syscall.Errno(r0)
  1612  	}
  1613  	return
  1614  }
  1615  
  1616  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) {
  1617  	r0, _, _ := syscall.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)))
  1618  	if r0 != 0 {
  1619  		regerrno = syscall.Errno(r0)
  1620  	}
  1621  	return
  1622  }
  1623  
  1624  func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
  1625  	r0, _, _ := syscall.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)
  1626  	if r0 != 0 {
  1627  		regerrno = syscall.Errno(r0)
  1628  	}
  1629  	return
  1630  }
  1631  
  1632  func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
  1633  	r0, _, _ := syscall.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)))
  1634  	if r0 != 0 {
  1635  		regerrno = syscall.Errno(r0)
  1636  	}
  1637  	return
  1638  }
  1639  
  1640  func getCurrentProcessId() (pid uint32) {
  1641  	r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
  1642  	pid = uint32(r0)
  1643  	return
  1644  }
  1645  
  1646  func GetConsoleMode(console Handle, mode *uint32) (err error) {
  1647  	r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
  1648  	if r1 == 0 {
  1649  		if e1 != 0 {
  1650  			err = errnoErr(e1)
  1651  		} else {
  1652  			err = syscall.EINVAL
  1653  		}
  1654  	}
  1655  	return
  1656  }
  1657  
  1658  func SetConsoleMode(console Handle, mode uint32) (err error) {
  1659  	r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
  1660  	if r1 == 0 {
  1661  		if e1 != 0 {
  1662  			err = errnoErr(e1)
  1663  		} else {
  1664  			err = syscall.EINVAL
  1665  		}
  1666  	}
  1667  	return
  1668  }
  1669  
  1670  func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
  1671  	r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
  1672  	if r1 == 0 {
  1673  		if e1 != 0 {
  1674  			err = errnoErr(e1)
  1675  		} else {
  1676  			err = syscall.EINVAL
  1677  		}
  1678  	}
  1679  	return
  1680  }
  1681  
  1682  func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
  1683  	r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
  1684  	if r1 == 0 {
  1685  		if e1 != 0 {
  1686  			err = errnoErr(e1)
  1687  		} else {
  1688  			err = syscall.EINVAL
  1689  		}
  1690  	}
  1691  	return
  1692  }
  1693  
  1694  func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
  1695  	r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
  1696  	if r1 == 0 {
  1697  		if e1 != 0 {
  1698  			err = errnoErr(e1)
  1699  		} else {
  1700  			err = syscall.EINVAL
  1701  		}
  1702  	}
  1703  	return
  1704  }
  1705  
  1706  func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
  1707  	r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
  1708  	handle = Handle(r0)
  1709  	if handle == InvalidHandle {
  1710  		if e1 != 0 {
  1711  			err = errnoErr(e1)
  1712  		} else {
  1713  			err = syscall.EINVAL
  1714  		}
  1715  	}
  1716  	return
  1717  }
  1718  
  1719  func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
  1720  	r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
  1721  	if r1 == 0 {
  1722  		if e1 != 0 {
  1723  			err = errnoErr(e1)
  1724  		} else {
  1725  			err = syscall.EINVAL
  1726  		}
  1727  	}
  1728  	return
  1729  }
  1730  
  1731  func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
  1732  	r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
  1733  	if r1 == 0 {
  1734  		if e1 != 0 {
  1735  			err = errnoErr(e1)
  1736  		} else {
  1737  			err = syscall.EINVAL
  1738  		}
  1739  	}
  1740  	return
  1741  }
  1742  
  1743  func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
  1744  	r1, _, e1 := syscall.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)
  1745  	if r1 == 0 {
  1746  		if e1 != 0 {
  1747  			err = errnoErr(e1)
  1748  		} else {
  1749  			err = syscall.EINVAL
  1750  		}
  1751  	}
  1752  	return
  1753  }
  1754  
  1755  func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
  1756  	r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
  1757  	if r1&0xff == 0 {
  1758  		if e1 != 0 {
  1759  			err = errnoErr(e1)
  1760  		} else {
  1761  			err = syscall.EINVAL
  1762  		}
  1763  	}
  1764  	return
  1765  }
  1766  
  1767  func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
  1768  	r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
  1769  	if r1&0xff == 0 {
  1770  		if e1 != 0 {
  1771  			err = errnoErr(e1)
  1772  		} else {
  1773  			err = syscall.EINVAL
  1774  		}
  1775  	}
  1776  	return
  1777  }
  1778  
  1779  func GetCurrentThreadId() (id uint32) {
  1780  	r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
  1781  	id = uint32(r0)
  1782  	return
  1783  }
  1784  
  1785  func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
  1786  	r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
  1787  	handle = Handle(r0)
  1788  	if handle == 0 {
  1789  		if e1 != 0 {
  1790  			err = errnoErr(e1)
  1791  		} else {
  1792  			err = syscall.EINVAL
  1793  		}
  1794  	}
  1795  	return
  1796  }
  1797  
  1798  func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
  1799  	r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
  1800  	handle = Handle(r0)
  1801  	if handle == 0 {
  1802  		if e1 != 0 {
  1803  			err = errnoErr(e1)
  1804  		} else {
  1805  			err = syscall.EINVAL
  1806  		}
  1807  	}
  1808  	return
  1809  }
  1810  
  1811  func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
  1812  	var _p0 uint32
  1813  	if inheritHandle {
  1814  		_p0 = 1
  1815  	} else {
  1816  		_p0 = 0
  1817  	}
  1818  	r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
  1819  	handle = Handle(r0)
  1820  	if handle == 0 {
  1821  		if e1 != 0 {
  1822  			err = errnoErr(e1)
  1823  		} else {
  1824  			err = syscall.EINVAL
  1825  		}
  1826  	}
  1827  	return
  1828  }
  1829  
  1830  func SetEvent(event Handle) (err error) {
  1831  	r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
  1832  	if r1 == 0 {
  1833  		if e1 != 0 {
  1834  			err = errnoErr(e1)
  1835  		} else {
  1836  			err = syscall.EINVAL
  1837  		}
  1838  	}
  1839  	return
  1840  }
  1841  
  1842  func ResetEvent(event Handle) (err error) {
  1843  	r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
  1844  	if r1 == 0 {
  1845  		if e1 != 0 {
  1846  			err = errnoErr(e1)
  1847  		} else {
  1848  			err = syscall.EINVAL
  1849  		}
  1850  	}
  1851  	return
  1852  }
  1853  
  1854  func PulseEvent(event Handle) (err error) {
  1855  	r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
  1856  	if r1 == 0 {
  1857  		if e1 != 0 {
  1858  			err = errnoErr(e1)
  1859  		} else {
  1860  			err = syscall.EINVAL
  1861  		}
  1862  	}
  1863  	return
  1864  }
  1865  
  1866  func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
  1867  	r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
  1868  	if r1 == 0 {
  1869  		if e1 != 0 {
  1870  			err = errnoErr(e1)
  1871  		} else {
  1872  			err = syscall.EINVAL
  1873  		}
  1874  	}
  1875  	return
  1876  }
  1877  
  1878  func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
  1879  	r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
  1880  	if r1 == 0 {
  1881  		if e1 != 0 {
  1882  			err = errnoErr(e1)
  1883  		} else {
  1884  			err = syscall.EINVAL
  1885  		}
  1886  	}
  1887  	return
  1888  }
  1889  
  1890  func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
  1891  	r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
  1892  	handle = Handle(r0)
  1893  	if handle == InvalidHandle {
  1894  		if e1 != 0 {
  1895  			err = errnoErr(e1)
  1896  		} else {
  1897  			err = syscall.EINVAL
  1898  		}
  1899  	}
  1900  	return
  1901  }
  1902  
  1903  func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
  1904  	r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
  1905  	handle = Handle(r0)
  1906  	if handle == InvalidHandle {
  1907  		if e1 != 0 {
  1908  			err = errnoErr(e1)
  1909  		} else {
  1910  			err = syscall.EINVAL
  1911  		}
  1912  	}
  1913  	return
  1914  }
  1915  
  1916  func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
  1917  	r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
  1918  	if r1 == 0 {
  1919  		if e1 != 0 {
  1920  			err = errnoErr(e1)
  1921  		} else {
  1922  			err = syscall.EINVAL
  1923  		}
  1924  	}
  1925  	return
  1926  }
  1927  
  1928  func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
  1929  	r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
  1930  	if r1 == 0 {
  1931  		if e1 != 0 {
  1932  			err = errnoErr(e1)
  1933  		} else {
  1934  			err = syscall.EINVAL
  1935  		}
  1936  	}
  1937  	return
  1938  }
  1939  
  1940  func FindVolumeClose(findVolume Handle) (err error) {
  1941  	r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
  1942  	if r1 == 0 {
  1943  		if e1 != 0 {
  1944  			err = errnoErr(e1)
  1945  		} else {
  1946  			err = syscall.EINVAL
  1947  		}
  1948  	}
  1949  	return
  1950  }
  1951  
  1952  func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
  1953  	r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
  1954  	if r1 == 0 {
  1955  		if e1 != 0 {
  1956  			err = errnoErr(e1)
  1957  		} else {
  1958  			err = syscall.EINVAL
  1959  		}
  1960  	}
  1961  	return
  1962  }
  1963  
  1964  func GetDriveType(rootPathName *uint16) (driveType uint32) {
  1965  	r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
  1966  	driveType = uint32(r0)
  1967  	return
  1968  }
  1969  
  1970  func GetLogicalDrives() (drivesBitMask uint32, err error) {
  1971  	r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
  1972  	drivesBitMask = uint32(r0)
  1973  	if drivesBitMask == 0 {
  1974  		if e1 != 0 {
  1975  			err = errnoErr(e1)
  1976  		} else {
  1977  			err = syscall.EINVAL
  1978  		}
  1979  	}
  1980  	return
  1981  }
  1982  
  1983  func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
  1984  	r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
  1985  	n = uint32(r0)
  1986  	if n == 0 {
  1987  		if e1 != 0 {
  1988  			err = errnoErr(e1)
  1989  		} else {
  1990  			err = syscall.EINVAL
  1991  		}
  1992  	}
  1993  	return
  1994  }
  1995  
  1996  func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
  1997  	r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
  1998  	if r1 == 0 {
  1999  		if e1 != 0 {
  2000  			err = errnoErr(e1)
  2001  		} else {
  2002  			err = syscall.EINVAL
  2003  		}
  2004  	}
  2005  	return
  2006  }
  2007  
  2008  func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
  2009  	r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
  2010  	if r1 == 0 {
  2011  		if e1 != 0 {
  2012  			err = errnoErr(e1)
  2013  		} else {
  2014  			err = syscall.EINVAL
  2015  		}
  2016  	}
  2017  	return
  2018  }
  2019  
  2020  func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
  2021  	r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
  2022  	if r1 == 0 {
  2023  		if e1 != 0 {
  2024  			err = errnoErr(e1)
  2025  		} else {
  2026  			err = syscall.EINVAL
  2027  		}
  2028  	}
  2029  	return
  2030  }
  2031  
  2032  func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
  2033  	r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
  2034  	if r1 == 0 {
  2035  		if e1 != 0 {
  2036  			err = errnoErr(e1)
  2037  		} else {
  2038  			err = syscall.EINVAL
  2039  		}
  2040  	}
  2041  	return
  2042  }
  2043  
  2044  func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
  2045  	r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
  2046  	if r1 == 0 {
  2047  		if e1 != 0 {
  2048  			err = errnoErr(e1)
  2049  		} else {
  2050  			err = syscall.EINVAL
  2051  		}
  2052  	}
  2053  	return
  2054  }
  2055  
  2056  func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
  2057  	r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
  2058  	n = uint32(r0)
  2059  	if n == 0 {
  2060  		if e1 != 0 {
  2061  			err = errnoErr(e1)
  2062  		} else {
  2063  			err = syscall.EINVAL
  2064  		}
  2065  	}
  2066  	return
  2067  }
  2068  
  2069  func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
  2070  	r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
  2071  	if r1 == 0 {
  2072  		if e1 != 0 {
  2073  			err = errnoErr(e1)
  2074  		} else {
  2075  			err = syscall.EINVAL
  2076  		}
  2077  	}
  2078  	return
  2079  }
  2080  
  2081  func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
  2082  	r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
  2083  	if r1 == 0 {
  2084  		if e1 != 0 {
  2085  			err = errnoErr(e1)
  2086  		} else {
  2087  			err = syscall.EINVAL
  2088  		}
  2089  	}
  2090  	return
  2091  }
  2092  
  2093  func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
  2094  	r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
  2095  	if r0 != 0 {
  2096  		sockerr = syscall.Errno(r0)
  2097  	}
  2098  	return
  2099  }
  2100  
  2101  func WSACleanup() (err error) {
  2102  	r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
  2103  	if r1 == socket_error {
  2104  		if e1 != 0 {
  2105  			err = errnoErr(e1)
  2106  		} else {
  2107  			err = syscall.EINVAL
  2108  		}
  2109  	}
  2110  	return
  2111  }
  2112  
  2113  func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
  2114  	r1, _, e1 := syscall.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))
  2115  	if r1 == socket_error {
  2116  		if e1 != 0 {
  2117  			err = errnoErr(e1)
  2118  		} else {
  2119  			err = syscall.EINVAL
  2120  		}
  2121  	}
  2122  	return
  2123  }
  2124  
  2125  func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
  2126  	r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
  2127  	handle = Handle(r0)
  2128  	if handle == InvalidHandle {
  2129  		if e1 != 0 {
  2130  			err = errnoErr(e1)
  2131  		} else {
  2132  			err = syscall.EINVAL
  2133  		}
  2134  	}
  2135  	return
  2136  }
  2137  
  2138  func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
  2139  	r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
  2140  	if r1 == socket_error {
  2141  		if e1 != 0 {
  2142  			err = errnoErr(e1)
  2143  		} else {
  2144  			err = syscall.EINVAL
  2145  		}
  2146  	}
  2147  	return
  2148  }
  2149  
  2150  func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
  2151  	r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
  2152  	if r1 == socket_error {
  2153  		if e1 != 0 {
  2154  			err = errnoErr(e1)
  2155  		} else {
  2156  			err = syscall.EINVAL
  2157  		}
  2158  	}
  2159  	return
  2160  }
  2161  
  2162  func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
  2163  	r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
  2164  	if r1 == socket_error {
  2165  		if e1 != 0 {
  2166  			err = errnoErr(e1)
  2167  		} else {
  2168  			err = syscall.EINVAL
  2169  		}
  2170  	}
  2171  	return
  2172  }
  2173  
  2174  func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
  2175  	r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
  2176  	if r1 == socket_error {
  2177  		if e1 != 0 {
  2178  			err = errnoErr(e1)
  2179  		} else {
  2180  			err = syscall.EINVAL
  2181  		}
  2182  	}
  2183  	return
  2184  }
  2185  
  2186  func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
  2187  	r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
  2188  	if r1 == socket_error {
  2189  		if e1 != 0 {
  2190  			err = errnoErr(e1)
  2191  		} else {
  2192  			err = syscall.EINVAL
  2193  		}
  2194  	}
  2195  	return
  2196  }
  2197  
  2198  func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
  2199  	r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
  2200  	if r1 == socket_error {
  2201  		if e1 != 0 {
  2202  			err = errnoErr(e1)
  2203  		} else {
  2204  			err = syscall.EINVAL
  2205  		}
  2206  	}
  2207  	return
  2208  }
  2209  
  2210  func listen(s Handle, backlog int32) (err error) {
  2211  	r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
  2212  	if r1 == socket_error {
  2213  		if e1 != 0 {
  2214  			err = errnoErr(e1)
  2215  		} else {
  2216  			err = syscall.EINVAL
  2217  		}
  2218  	}
  2219  	return
  2220  }
  2221  
  2222  func shutdown(s Handle, how int32) (err error) {
  2223  	r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
  2224  	if r1 == socket_error {
  2225  		if e1 != 0 {
  2226  			err = errnoErr(e1)
  2227  		} else {
  2228  			err = syscall.EINVAL
  2229  		}
  2230  	}
  2231  	return
  2232  }
  2233  
  2234  func Closesocket(s Handle) (err error) {
  2235  	r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
  2236  	if r1 == socket_error {
  2237  		if e1 != 0 {
  2238  			err = errnoErr(e1)
  2239  		} else {
  2240  			err = syscall.EINVAL
  2241  		}
  2242  	}
  2243  	return
  2244  }
  2245  
  2246  func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
  2247  	r1, _, e1 := syscall.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)
  2248  	if r1 == 0 {
  2249  		if e1 != 0 {
  2250  			err = errnoErr(e1)
  2251  		} else {
  2252  			err = syscall.EINVAL
  2253  		}
  2254  	}
  2255  	return
  2256  }
  2257  
  2258  func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
  2259  	syscall.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)
  2260  	return
  2261  }
  2262  
  2263  func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
  2264  	r1, _, e1 := syscall.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)
  2265  	if r1 == socket_error {
  2266  		if e1 != 0 {
  2267  			err = errnoErr(e1)
  2268  		} else {
  2269  			err = syscall.EINVAL
  2270  		}
  2271  	}
  2272  	return
  2273  }
  2274  
  2275  func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
  2276  	r1, _, e1 := syscall.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)
  2277  	if r1 == socket_error {
  2278  		if e1 != 0 {
  2279  			err = errnoErr(e1)
  2280  		} else {
  2281  			err = syscall.EINVAL
  2282  		}
  2283  	}
  2284  	return
  2285  }
  2286  
  2287  func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
  2288  	r1, _, e1 := syscall.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)))
  2289  	if r1 == socket_error {
  2290  		if e1 != 0 {
  2291  			err = errnoErr(e1)
  2292  		} else {
  2293  			err = syscall.EINVAL
  2294  		}
  2295  	}
  2296  	return
  2297  }
  2298  
  2299  func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
  2300  	r1, _, e1 := syscall.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)))
  2301  	if r1 == socket_error {
  2302  		if e1 != 0 {
  2303  			err = errnoErr(e1)
  2304  		} else {
  2305  			err = syscall.EINVAL
  2306  		}
  2307  	}
  2308  	return
  2309  }
  2310  
  2311  func GetHostByName(name string) (h *Hostent, err error) {
  2312  	var _p0 *byte
  2313  	_p0, err = syscall.BytePtrFromString(name)
  2314  	if err != nil {
  2315  		return
  2316  	}
  2317  	return _GetHostByName(_p0)
  2318  }
  2319  
  2320  func _GetHostByName(name *byte) (h *Hostent, err error) {
  2321  	r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
  2322  	h = (*Hostent)(unsafe.Pointer(r0))
  2323  	if h == nil {
  2324  		if e1 != 0 {
  2325  			err = errnoErr(e1)
  2326  		} else {
  2327  			err = syscall.EINVAL
  2328  		}
  2329  	}
  2330  	return
  2331  }
  2332  
  2333  func GetServByName(name string, proto string) (s *Servent, err error) {
  2334  	var _p0 *byte
  2335  	_p0, err = syscall.BytePtrFromString(name)
  2336  	if err != nil {
  2337  		return
  2338  	}
  2339  	var _p1 *byte
  2340  	_p1, err = syscall.BytePtrFromString(proto)
  2341  	if err != nil {
  2342  		return
  2343  	}
  2344  	return _GetServByName(_p0, _p1)
  2345  }
  2346  
  2347  func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
  2348  	r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
  2349  	s = (*Servent)(unsafe.Pointer(r0))
  2350  	if s == nil {
  2351  		if e1 != 0 {
  2352  			err = errnoErr(e1)
  2353  		} else {
  2354  			err = syscall.EINVAL
  2355  		}
  2356  	}
  2357  	return
  2358  }
  2359  
  2360  func Ntohs(netshort uint16) (u uint16) {
  2361  	r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
  2362  	u = uint16(r0)
  2363  	return
  2364  }
  2365  
  2366  func GetProtoByName(name string) (p *Protoent, err error) {
  2367  	var _p0 *byte
  2368  	_p0, err = syscall.BytePtrFromString(name)
  2369  	if err != nil {
  2370  		return
  2371  	}
  2372  	return _GetProtoByName(_p0)
  2373  }
  2374  
  2375  func _GetProtoByName(name *byte) (p *Protoent, err error) {
  2376  	r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
  2377  	p = (*Protoent)(unsafe.Pointer(r0))
  2378  	if p == nil {
  2379  		if e1 != 0 {
  2380  			err = errnoErr(e1)
  2381  		} else {
  2382  			err = syscall.EINVAL
  2383  		}
  2384  	}
  2385  	return
  2386  }
  2387  
  2388  func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
  2389  	var _p0 *uint16
  2390  	_p0, status = syscall.UTF16PtrFromString(name)
  2391  	if status != nil {
  2392  		return
  2393  	}
  2394  	return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
  2395  }
  2396  
  2397  func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
  2398  	r0, _, _ := syscall.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)))
  2399  	if r0 != 0 {
  2400  		status = syscall.Errno(r0)
  2401  	}
  2402  	return
  2403  }
  2404  
  2405  func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
  2406  	syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
  2407  	return
  2408  }
  2409  
  2410  func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
  2411  	r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
  2412  	same = r0 != 0
  2413  	return
  2414  }
  2415  
  2416  func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
  2417  	r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
  2418  	if r0 != 0 {
  2419  		sockerr = syscall.Errno(r0)
  2420  	}
  2421  	return
  2422  }
  2423  
  2424  func FreeAddrInfoW(addrinfo *AddrinfoW) {
  2425  	syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
  2426  	return
  2427  }
  2428  
  2429  func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
  2430  	r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
  2431  	if r0 != 0 {
  2432  		errcode = syscall.Errno(r0)
  2433  	}
  2434  	return
  2435  }
  2436  
  2437  func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
  2438  	r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
  2439  	if r0 != 0 {
  2440  		errcode = syscall.Errno(r0)
  2441  	}
  2442  	return
  2443  }
  2444  
  2445  func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
  2446  	r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
  2447  	if r1 == 0 {
  2448  		if e1 != 0 {
  2449  			err = errnoErr(e1)
  2450  		} else {
  2451  			err = syscall.EINVAL
  2452  		}
  2453  	}
  2454  	return
  2455  }
  2456  
  2457  func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
  2458  	r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
  2459  	n = int32(r0)
  2460  	if n == -1 {
  2461  		if e1 != 0 {
  2462  			err = errnoErr(e1)
  2463  		} else {
  2464  			err = syscall.EINVAL
  2465  		}
  2466  	}
  2467  	return
  2468  }
  2469  
  2470  func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
  2471  	r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
  2472  	if r0 != 0 {
  2473  		errcode = syscall.Errno(r0)
  2474  	}
  2475  	return
  2476  }
  2477  
  2478  func GetACP() (acp uint32) {
  2479  	r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
  2480  	acp = uint32(r0)
  2481  	return
  2482  }
  2483  
  2484  func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
  2485  	r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
  2486  	nwrite = int32(r0)
  2487  	if nwrite == 0 {
  2488  		if e1 != 0 {
  2489  			err = errnoErr(e1)
  2490  		} else {
  2491  			err = syscall.EINVAL
  2492  		}
  2493  	}
  2494  	return
  2495  }
  2496  
  2497  func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
  2498  	r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
  2499  	if r1&0xff == 0 {
  2500  		if e1 != 0 {
  2501  			err = errnoErr(e1)
  2502  		} else {
  2503  			err = syscall.EINVAL
  2504  		}
  2505  	}
  2506  	return
  2507  }
  2508  
  2509  func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
  2510  	r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
  2511  	if r1&0xff == 0 {
  2512  		if e1 != 0 {
  2513  			err = errnoErr(e1)
  2514  		} else {
  2515  			err = syscall.EINVAL
  2516  		}
  2517  	}
  2518  	return
  2519  }
  2520  
  2521  func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
  2522  	r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
  2523  	if r0 != 0 {
  2524  		neterr = syscall.Errno(r0)
  2525  	}
  2526  	return
  2527  }
  2528  
  2529  func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
  2530  	r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
  2531  	if r0 != 0 {
  2532  		neterr = syscall.Errno(r0)
  2533  	}
  2534  	return
  2535  }
  2536  
  2537  func NetApiBufferFree(buf *byte) (neterr error) {
  2538  	r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
  2539  	if r0 != 0 {
  2540  		neterr = syscall.Errno(r0)
  2541  	}
  2542  	return
  2543  }
  2544  
  2545  func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
  2546  	r1, _, e1 := syscall.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)
  2547  	if r1 == 0 {
  2548  		if e1 != 0 {
  2549  			err = errnoErr(e1)
  2550  		} else {
  2551  			err = syscall.EINVAL
  2552  		}
  2553  	}
  2554  	return
  2555  }
  2556  
  2557  func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
  2558  	r1, _, e1 := syscall.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)
  2559  	if r1 == 0 {
  2560  		if e1 != 0 {
  2561  			err = errnoErr(e1)
  2562  		} else {
  2563  			err = syscall.EINVAL
  2564  		}
  2565  	}
  2566  	return
  2567  }
  2568  
  2569  func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
  2570  	r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
  2571  	if r1 == 0 {
  2572  		if e1 != 0 {
  2573  			err = errnoErr(e1)
  2574  		} else {
  2575  			err = syscall.EINVAL
  2576  		}
  2577  	}
  2578  	return
  2579  }
  2580  
  2581  func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
  2582  	r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
  2583  	if r1 == 0 {
  2584  		if e1 != 0 {
  2585  			err = errnoErr(e1)
  2586  		} else {
  2587  			err = syscall.EINVAL
  2588  		}
  2589  	}
  2590  	return
  2591  }
  2592  
  2593  func GetLengthSid(sid *SID) (len uint32) {
  2594  	r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
  2595  	len = uint32(r0)
  2596  	return
  2597  }
  2598  
  2599  func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
  2600  	r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
  2601  	if r1 == 0 {
  2602  		if e1 != 0 {
  2603  			err = errnoErr(e1)
  2604  		} else {
  2605  			err = syscall.EINVAL
  2606  		}
  2607  	}
  2608  	return
  2609  }
  2610  
  2611  func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
  2612  	r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
  2613  	if r1 == 0 {
  2614  		if e1 != 0 {
  2615  			err = errnoErr(e1)
  2616  		} else {
  2617  			err = syscall.EINVAL
  2618  		}
  2619  	}
  2620  	return
  2621  }
  2622  
  2623  func FreeSid(sid *SID) (err error) {
  2624  	r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
  2625  	if r1 != 0 {
  2626  		if e1 != 0 {
  2627  			err = errnoErr(e1)
  2628  		} else {
  2629  			err = syscall.EINVAL
  2630  		}
  2631  	}
  2632  	return
  2633  }
  2634  
  2635  func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
  2636  	r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
  2637  	isEqual = r0 != 0
  2638  	return
  2639  }
  2640  
  2641  func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
  2642  	r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
  2643  	if r1 == 0 {
  2644  		if e1 != 0 {
  2645  			err = errnoErr(e1)
  2646  		} else {
  2647  			err = syscall.EINVAL
  2648  		}
  2649  	}
  2650  	return
  2651  }
  2652  
  2653  func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
  2654  	r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
  2655  	if r1 == 0 {
  2656  		if e1 != 0 {
  2657  			err = errnoErr(e1)
  2658  		} else {
  2659  			err = syscall.EINVAL
  2660  		}
  2661  	}
  2662  	return
  2663  }
  2664  
  2665  func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
  2666  	r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
  2667  	if r1 == 0 {
  2668  		if e1 != 0 {
  2669  			err = errnoErr(e1)
  2670  		} else {
  2671  			err = syscall.EINVAL
  2672  		}
  2673  	}
  2674  	return
  2675  }
  2676  
  2677  func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
  2678  	r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
  2679  	if r1 == 0 {
  2680  		if e1 != 0 {
  2681  			err = errnoErr(e1)
  2682  		} else {
  2683  			err = syscall.EINVAL
  2684  		}
  2685  	}
  2686  	return
  2687  }