zsyscall_windows.go

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