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	moduserenv  = NewLazySystemDLL("userenv.dll")
42	modmswsock  = NewLazySystemDLL("mswsock.dll")
43	modcrypt32  = NewLazySystemDLL("crypt32.dll")
44	moduser32   = NewLazySystemDLL("user32.dll")
45	modole32    = NewLazySystemDLL("ole32.dll")
46	modntdll    = NewLazySystemDLL("ntdll.dll")
47	modws2_32   = NewLazySystemDLL("ws2_32.dll")
48	moddnsapi   = NewLazySystemDLL("dnsapi.dll")
49	modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
50	modsecur32  = NewLazySystemDLL("secur32.dll")
51	modnetapi32 = NewLazySystemDLL("netapi32.dll")
52	modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
53
54	procRegisterEventSourceW               = modadvapi32.NewProc("RegisterEventSourceW")
55	procDeregisterEventSource              = modadvapi32.NewProc("DeregisterEventSource")
56	procReportEventW                       = modadvapi32.NewProc("ReportEventW")
57	procOpenSCManagerW                     = modadvapi32.NewProc("OpenSCManagerW")
58	procCloseServiceHandle                 = modadvapi32.NewProc("CloseServiceHandle")
59	procCreateServiceW                     = modadvapi32.NewProc("CreateServiceW")
60	procOpenServiceW                       = modadvapi32.NewProc("OpenServiceW")
61	procDeleteService                      = modadvapi32.NewProc("DeleteService")
62	procStartServiceW                      = modadvapi32.NewProc("StartServiceW")
63	procQueryServiceStatus                 = modadvapi32.NewProc("QueryServiceStatus")
64	procQueryServiceLockStatusW            = modadvapi32.NewProc("QueryServiceLockStatusW")
65	procControlService                     = modadvapi32.NewProc("ControlService")
66	procStartServiceCtrlDispatcherW        = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
67	procSetServiceStatus                   = modadvapi32.NewProc("SetServiceStatus")
68	procChangeServiceConfigW               = modadvapi32.NewProc("ChangeServiceConfigW")
69	procQueryServiceConfigW                = modadvapi32.NewProc("QueryServiceConfigW")
70	procChangeServiceConfig2W              = modadvapi32.NewProc("ChangeServiceConfig2W")
71	procQueryServiceConfig2W               = modadvapi32.NewProc("QueryServiceConfig2W")
72	procEnumServicesStatusExW              = modadvapi32.NewProc("EnumServicesStatusExW")
73	procQueryServiceStatusEx               = modadvapi32.NewProc("QueryServiceStatusEx")
74	procNotifyServiceStatusChangeW         = modadvapi32.NewProc("NotifyServiceStatusChangeW")
75	procGetLastError                       = modkernel32.NewProc("GetLastError")
76	procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
77	procLoadLibraryExW                     = modkernel32.NewProc("LoadLibraryExW")
78	procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
79	procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
80	procGetVersion                         = modkernel32.NewProc("GetVersion")
81	procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
82	procExitProcess                        = modkernel32.NewProc("ExitProcess")
83	procIsWow64Process                     = modkernel32.NewProc("IsWow64Process")
84	procCreateFileW                        = modkernel32.NewProc("CreateFileW")
85	procReadFile                           = modkernel32.NewProc("ReadFile")
86	procWriteFile                          = modkernel32.NewProc("WriteFile")
87	procGetOverlappedResult                = modkernel32.NewProc("GetOverlappedResult")
88	procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
89	procCloseHandle                        = modkernel32.NewProc("CloseHandle")
90	procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
91	procSetStdHandle                       = modkernel32.NewProc("SetStdHandle")
92	procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
93	procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
94	procFindClose                          = modkernel32.NewProc("FindClose")
95	procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
96	procGetFileInformationByHandleEx       = modkernel32.NewProc("GetFileInformationByHandleEx")
97	procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
98	procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
99	procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
100	procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
101	procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
102	procMoveFileW                          = modkernel32.NewProc("MoveFileW")
103	procMoveFileExW                        = modkernel32.NewProc("MoveFileExW")
104	procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
105	procGetComputerNameExW                 = modkernel32.NewProc("GetComputerNameExW")
106	procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
107	procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
108	procGetSystemTimePreciseAsFileTime     = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
109	procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
110	procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
111	procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
112	procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
113	procCancelIo                           = modkernel32.NewProc("CancelIo")
114	procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
115	procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
116	procOpenProcess                        = modkernel32.NewProc("OpenProcess")
117	procShellExecuteW                      = modshell32.NewProc("ShellExecuteW")
118	procSHGetKnownFolderPath               = modshell32.NewProc("SHGetKnownFolderPath")
119	procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
120	procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
121	procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
122	procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
123	procGetCurrentThread                   = modkernel32.NewProc("GetCurrentThread")
124	procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
125	procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
126	procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
127	procWaitForMultipleObjects             = modkernel32.NewProc("WaitForMultipleObjects")
128	procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
129	procCreatePipe                         = modkernel32.NewProc("CreatePipe")
130	procGetFileType                        = modkernel32.NewProc("GetFileType")
131	procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
132	procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
133	procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
134	procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
135	procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
136	procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
137	procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
138	procCreateEnvironmentBlock             = moduserenv.NewProc("CreateEnvironmentBlock")
139	procDestroyEnvironmentBlock            = moduserenv.NewProc("DestroyEnvironmentBlock")
140	procGetTickCount64                     = modkernel32.NewProc("GetTickCount64")
141	procSetFileTime                        = modkernel32.NewProc("SetFileTime")
142	procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
143	procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
144	procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
145	procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
146	procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
147	procLocalFree                          = modkernel32.NewProc("LocalFree")
148	procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
149	procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
150	procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
151	procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
152	procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
153	procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
154	procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
155	procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
156	procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
157	procVirtualLock                        = modkernel32.NewProc("VirtualLock")
158	procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
159	procVirtualAlloc                       = modkernel32.NewProc("VirtualAlloc")
160	procVirtualFree                        = modkernel32.NewProc("VirtualFree")
161	procVirtualProtect                     = modkernel32.NewProc("VirtualProtect")
162	procTransmitFile                       = modmswsock.NewProc("TransmitFile")
163	procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
164	procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
165	procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
166	procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
167	procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
168	procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
169	procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
170	procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
171	procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
172	procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
173	procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
174	procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
175	procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
176	procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
177	procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
178	procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
179	procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
180	procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
181	procSetConsoleMode                     = modkernel32.NewProc("SetConsoleMode")
182	procGetConsoleScreenBufferInfo         = modkernel32.NewProc("GetConsoleScreenBufferInfo")
183	procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
184	procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
185	procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
186	procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
187	procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
188	procThread32First                      = modkernel32.NewProc("Thread32First")
189	procThread32Next                       = modkernel32.NewProc("Thread32Next")
190	procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
191	procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
192	procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
193	procGetCurrentThreadId                 = modkernel32.NewProc("GetCurrentThreadId")
194	procCreateEventW                       = modkernel32.NewProc("CreateEventW")
195	procCreateEventExW                     = modkernel32.NewProc("CreateEventExW")
196	procOpenEventW                         = modkernel32.NewProc("OpenEventW")
197	procSetEvent                           = modkernel32.NewProc("SetEvent")
198	procResetEvent                         = modkernel32.NewProc("ResetEvent")
199	procPulseEvent                         = modkernel32.NewProc("PulseEvent")
200	procSleepEx                            = modkernel32.NewProc("SleepEx")
201	procCreateJobObjectW                   = modkernel32.NewProc("CreateJobObjectW")
202	procAssignProcessToJobObject           = modkernel32.NewProc("AssignProcessToJobObject")
203	procTerminateJobObject                 = modkernel32.NewProc("TerminateJobObject")
204	procSetErrorMode                       = modkernel32.NewProc("SetErrorMode")
205	procResumeThread                       = modkernel32.NewProc("ResumeThread")
206	procSetPriorityClass                   = modkernel32.NewProc("SetPriorityClass")
207	procGetPriorityClass                   = modkernel32.NewProc("GetPriorityClass")
208	procSetInformationJobObject            = modkernel32.NewProc("SetInformationJobObject")
209	procGenerateConsoleCtrlEvent           = modkernel32.NewProc("GenerateConsoleCtrlEvent")
210	procGetProcessId                       = modkernel32.NewProc("GetProcessId")
211	procOpenThread                         = modkernel32.NewProc("OpenThread")
212	procDefineDosDeviceW                   = modkernel32.NewProc("DefineDosDeviceW")
213	procDeleteVolumeMountPointW            = modkernel32.NewProc("DeleteVolumeMountPointW")
214	procFindFirstVolumeW                   = modkernel32.NewProc("FindFirstVolumeW")
215	procFindFirstVolumeMountPointW         = modkernel32.NewProc("FindFirstVolumeMountPointW")
216	procFindNextVolumeW                    = modkernel32.NewProc("FindNextVolumeW")
217	procFindNextVolumeMountPointW          = modkernel32.NewProc("FindNextVolumeMountPointW")
218	procFindVolumeClose                    = modkernel32.NewProc("FindVolumeClose")
219	procFindVolumeMountPointClose          = modkernel32.NewProc("FindVolumeMountPointClose")
220	procGetDriveTypeW                      = modkernel32.NewProc("GetDriveTypeW")
221	procGetLogicalDrives                   = modkernel32.NewProc("GetLogicalDrives")
222	procGetLogicalDriveStringsW            = modkernel32.NewProc("GetLogicalDriveStringsW")
223	procGetVolumeInformationW              = modkernel32.NewProc("GetVolumeInformationW")
224	procGetVolumeInformationByHandleW      = modkernel32.NewProc("GetVolumeInformationByHandleW")
225	procGetVolumeNameForVolumeMountPointW  = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
226	procGetVolumePathNameW                 = modkernel32.NewProc("GetVolumePathNameW")
227	procGetVolumePathNamesForVolumeNameW   = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
228	procQueryDosDeviceW                    = modkernel32.NewProc("QueryDosDeviceW")
229	procSetVolumeLabelW                    = modkernel32.NewProc("SetVolumeLabelW")
230	procSetVolumeMountPointW               = modkernel32.NewProc("SetVolumeMountPointW")
231	procMessageBoxW                        = moduser32.NewProc("MessageBoxW")
232	procCLSIDFromString                    = modole32.NewProc("CLSIDFromString")
233	procStringFromGUID2                    = modole32.NewProc("StringFromGUID2")
234	procCoCreateGuid                       = modole32.NewProc("CoCreateGuid")
235	procCoTaskMemFree                      = modole32.NewProc("CoTaskMemFree")
236	procRtlGetVersion                      = modntdll.NewProc("RtlGetVersion")
237	procWSAStartup                         = modws2_32.NewProc("WSAStartup")
238	procWSACleanup                         = modws2_32.NewProc("WSACleanup")
239	procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
240	procsocket                             = modws2_32.NewProc("socket")
241	procsetsockopt                         = modws2_32.NewProc("setsockopt")
242	procgetsockopt                         = modws2_32.NewProc("getsockopt")
243	procbind                               = modws2_32.NewProc("bind")
244	procconnect                            = modws2_32.NewProc("connect")
245	procgetsockname                        = modws2_32.NewProc("getsockname")
246	procgetpeername                        = modws2_32.NewProc("getpeername")
247	proclisten                             = modws2_32.NewProc("listen")
248	procshutdown                           = modws2_32.NewProc("shutdown")
249	procclosesocket                        = modws2_32.NewProc("closesocket")
250	procAcceptEx                           = modmswsock.NewProc("AcceptEx")
251	procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
252	procWSARecv                            = modws2_32.NewProc("WSARecv")
253	procWSASend                            = modws2_32.NewProc("WSASend")
254	procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
255	procWSASendTo                          = modws2_32.NewProc("WSASendTo")
256	procgethostbyname                      = modws2_32.NewProc("gethostbyname")
257	procgetservbyname                      = modws2_32.NewProc("getservbyname")
258	procntohs                              = modws2_32.NewProc("ntohs")
259	procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
260	procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
261	procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
262	procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
263	procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
264	procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
265	procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
266	procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
267	procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
268	procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
269	procGetAdaptersAddresses               = modiphlpapi.NewProc("GetAdaptersAddresses")
270	procGetACP                             = modkernel32.NewProc("GetACP")
271	procMultiByteToWideChar                = modkernel32.NewProc("MultiByteToWideChar")
272	procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
273	procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
274	procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
275	procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
276	procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
277	procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
278	procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
279	procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
280	procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
281	procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
282	procCopySid                            = modadvapi32.NewProc("CopySid")
283	procAllocateAndInitializeSid           = modadvapi32.NewProc("AllocateAndInitializeSid")
284	procCreateWellKnownSid                 = modadvapi32.NewProc("CreateWellKnownSid")
285	procIsWellKnownSid                     = modadvapi32.NewProc("IsWellKnownSid")
286	procFreeSid                            = modadvapi32.NewProc("FreeSid")
287	procEqualSid                           = modadvapi32.NewProc("EqualSid")
288	procGetSidIdentifierAuthority          = modadvapi32.NewProc("GetSidIdentifierAuthority")
289	procGetSidSubAuthorityCount            = modadvapi32.NewProc("GetSidSubAuthorityCount")
290	procGetSidSubAuthority                 = modadvapi32.NewProc("GetSidSubAuthority")
291	procIsValidSid                         = modadvapi32.NewProc("IsValidSid")
292	procCheckTokenMembership               = modadvapi32.NewProc("CheckTokenMembership")
293	procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
294	procOpenThreadToken                    = modadvapi32.NewProc("OpenThreadToken")
295	procImpersonateSelf                    = modadvapi32.NewProc("ImpersonateSelf")
296	procRevertToSelf                       = modadvapi32.NewProc("RevertToSelf")
297	procSetThreadToken                     = modadvapi32.NewProc("SetThreadToken")
298	procLookupPrivilegeValueW              = modadvapi32.NewProc("LookupPrivilegeValueW")
299	procAdjustTokenPrivileges              = modadvapi32.NewProc("AdjustTokenPrivileges")
300	procAdjustTokenGroups                  = modadvapi32.NewProc("AdjustTokenGroups")
301	procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
302	procSetTokenInformation                = modadvapi32.NewProc("SetTokenInformation")
303	procDuplicateTokenEx                   = modadvapi32.NewProc("DuplicateTokenEx")
304	procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
305	procGetSystemDirectoryW                = modkernel32.NewProc("GetSystemDirectoryW")
306	procWTSQueryUserToken                  = modwtsapi32.NewProc("WTSQueryUserToken")
307	procWTSEnumerateSessionsW              = modwtsapi32.NewProc("WTSEnumerateSessionsW")
308	procWTSFreeMemory                      = modwtsapi32.NewProc("WTSFreeMemory")
309)
310
311func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
312	r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
313	handle = Handle(r0)
314	if handle == 0 {
315		if e1 != 0 {
316			err = errnoErr(e1)
317		} else {
318			err = syscall.EINVAL
319		}
320	}
321	return
322}
323
324func DeregisterEventSource(handle Handle) (err error) {
325	r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
326	if r1 == 0 {
327		if e1 != 0 {
328			err = errnoErr(e1)
329		} else {
330			err = syscall.EINVAL
331		}
332	}
333	return
334}
335
336func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
337	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)))
338	if r1 == 0 {
339		if e1 != 0 {
340			err = errnoErr(e1)
341		} else {
342			err = syscall.EINVAL
343		}
344	}
345	return
346}
347
348func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
349	r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
350	handle = Handle(r0)
351	if handle == 0 {
352		if e1 != 0 {
353			err = errnoErr(e1)
354		} else {
355			err = syscall.EINVAL
356		}
357	}
358	return
359}
360
361func CloseServiceHandle(handle Handle) (err error) {
362	r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
363	if r1 == 0 {
364		if e1 != 0 {
365			err = errnoErr(e1)
366		} else {
367			err = syscall.EINVAL
368		}
369	}
370	return
371}
372
373func 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) {
374	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)
375	handle = Handle(r0)
376	if handle == 0 {
377		if e1 != 0 {
378			err = errnoErr(e1)
379		} else {
380			err = syscall.EINVAL
381		}
382	}
383	return
384}
385
386func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
387	r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
388	handle = Handle(r0)
389	if handle == 0 {
390		if e1 != 0 {
391			err = errnoErr(e1)
392		} else {
393			err = syscall.EINVAL
394		}
395	}
396	return
397}
398
399func DeleteService(service Handle) (err error) {
400	r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
401	if r1 == 0 {
402		if e1 != 0 {
403			err = errnoErr(e1)
404		} else {
405			err = syscall.EINVAL
406		}
407	}
408	return
409}
410
411func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
412	r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
413	if r1 == 0 {
414		if e1 != 0 {
415			err = errnoErr(e1)
416		} else {
417			err = syscall.EINVAL
418		}
419	}
420	return
421}
422
423func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
424	r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
425	if r1 == 0 {
426		if e1 != 0 {
427			err = errnoErr(e1)
428		} else {
429			err = syscall.EINVAL
430		}
431	}
432	return
433}
434
435func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
436	r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
437	if r1 == 0 {
438		if e1 != 0 {
439			err = errnoErr(e1)
440		} else {
441			err = syscall.EINVAL
442		}
443	}
444	return
445}
446
447func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
448	r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
449	if r1 == 0 {
450		if e1 != 0 {
451			err = errnoErr(e1)
452		} else {
453			err = syscall.EINVAL
454		}
455	}
456	return
457}
458
459func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
460	r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
461	if r1 == 0 {
462		if e1 != 0 {
463			err = errnoErr(e1)
464		} else {
465			err = syscall.EINVAL
466		}
467	}
468	return
469}
470
471func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
472	r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
473	if r1 == 0 {
474		if e1 != 0 {
475			err = errnoErr(e1)
476		} else {
477			err = syscall.EINVAL
478		}
479	}
480	return
481}
482
483func 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) {
484	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)
485	if r1 == 0 {
486		if e1 != 0 {
487			err = errnoErr(e1)
488		} else {
489			err = syscall.EINVAL
490		}
491	}
492	return
493}
494
495func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
496	r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
497	if r1 == 0 {
498		if e1 != 0 {
499			err = errnoErr(e1)
500		} else {
501			err = syscall.EINVAL
502		}
503	}
504	return
505}
506
507func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
508	r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
509	if r1 == 0 {
510		if e1 != 0 {
511			err = errnoErr(e1)
512		} else {
513			err = syscall.EINVAL
514		}
515	}
516	return
517}
518
519func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
520	r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
521	if r1 == 0 {
522		if e1 != 0 {
523			err = errnoErr(e1)
524		} else {
525			err = syscall.EINVAL
526		}
527	}
528	return
529}
530
531func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {
532	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)
533	if r1 == 0 {
534		if e1 != 0 {
535			err = errnoErr(e1)
536		} else {
537			err = syscall.EINVAL
538		}
539	}
540	return
541}
542
543func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
544	r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
545	if r1 == 0 {
546		if e1 != 0 {
547			err = errnoErr(e1)
548		} else {
549			err = syscall.EINVAL
550		}
551	}
552	return
553}
554
555func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {
556	r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))
557	if r0 != 0 {
558		ret = syscall.Errno(r0)
559	}
560	return
561}
562
563func GetLastError() (lasterr error) {
564	r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
565	if r0 != 0 {
566		lasterr = syscall.Errno(r0)
567	}
568	return
569}
570
571func LoadLibrary(libname string) (handle Handle, err error) {
572	var _p0 *uint16
573	_p0, err = syscall.UTF16PtrFromString(libname)
574	if err != nil {
575		return
576	}
577	return _LoadLibrary(_p0)
578}
579
580func _LoadLibrary(libname *uint16) (handle Handle, err error) {
581	r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
582	handle = Handle(r0)
583	if handle == 0 {
584		if e1 != 0 {
585			err = errnoErr(e1)
586		} else {
587			err = syscall.EINVAL
588		}
589	}
590	return
591}
592
593func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
594	var _p0 *uint16
595	_p0, err = syscall.UTF16PtrFromString(libname)
596	if err != nil {
597		return
598	}
599	return _LoadLibraryEx(_p0, zero, flags)
600}
601
602func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
603	r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
604	handle = Handle(r0)
605	if handle == 0 {
606		if e1 != 0 {
607			err = errnoErr(e1)
608		} else {
609			err = syscall.EINVAL
610		}
611	}
612	return
613}
614
615func FreeLibrary(handle Handle) (err error) {
616	r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
617	if r1 == 0 {
618		if e1 != 0 {
619			err = errnoErr(e1)
620		} else {
621			err = syscall.EINVAL
622		}
623	}
624	return
625}
626
627func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
628	var _p0 *byte
629	_p0, err = syscall.BytePtrFromString(procname)
630	if err != nil {
631		return
632	}
633	return _GetProcAddress(module, _p0)
634}
635
636func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
637	r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
638	proc = uintptr(r0)
639	if proc == 0 {
640		if e1 != 0 {
641			err = errnoErr(e1)
642		} else {
643			err = syscall.EINVAL
644		}
645	}
646	return
647}
648
649func GetVersion() (ver uint32, err error) {
650	r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
651	ver = uint32(r0)
652	if ver == 0 {
653		if e1 != 0 {
654			err = errnoErr(e1)
655		} else {
656			err = syscall.EINVAL
657		}
658	}
659	return
660}
661
662func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
663	var _p0 *uint16
664	if len(buf) > 0 {
665		_p0 = &buf[0]
666	}
667	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)
668	n = uint32(r0)
669	if n == 0 {
670		if e1 != 0 {
671			err = errnoErr(e1)
672		} else {
673			err = syscall.EINVAL
674		}
675	}
676	return
677}
678
679func ExitProcess(exitcode uint32) {
680	syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
681	return
682}
683
684func IsWow64Process(handle Handle, isWow64 *bool) (err error) {
685	r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(isWow64)), 0)
686	if r1 == 0 {
687		if e1 != 0 {
688			err = errnoErr(e1)
689		} else {
690			err = syscall.EINVAL
691		}
692	}
693	return
694}
695
696func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {
697	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)
698	handle = Handle(r0)
699	if handle == InvalidHandle {
700		if e1 != 0 {
701			err = errnoErr(e1)
702		} else {
703			err = syscall.EINVAL
704		}
705	}
706	return
707}
708
709func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
710	var _p0 *byte
711	if len(buf) > 0 {
712		_p0 = &buf[0]
713	}
714	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)
715	if r1 == 0 {
716		if e1 != 0 {
717			err = errnoErr(e1)
718		} else {
719			err = syscall.EINVAL
720		}
721	}
722	return
723}
724
725func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
726	var _p0 *byte
727	if len(buf) > 0 {
728		_p0 = &buf[0]
729	}
730	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)
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 GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
742	var _p0 uint32
743	if wait {
744		_p0 = 1
745	} else {
746		_p0 = 0
747	}
748	r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)
749	if r1 == 0 {
750		if e1 != 0 {
751			err = errnoErr(e1)
752		} else {
753			err = syscall.EINVAL
754		}
755	}
756	return
757}
758
759func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
760	r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
761	newlowoffset = uint32(r0)
762	if newlowoffset == 0xffffffff {
763		if e1 != 0 {
764			err = errnoErr(e1)
765		} else {
766			err = syscall.EINVAL
767		}
768	}
769	return
770}
771
772func CloseHandle(handle Handle) (err error) {
773	r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
774	if r1 == 0 {
775		if e1 != 0 {
776			err = errnoErr(e1)
777		} else {
778			err = syscall.EINVAL
779		}
780	}
781	return
782}
783
784func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
785	r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
786	handle = Handle(r0)
787	if handle == InvalidHandle {
788		if e1 != 0 {
789			err = errnoErr(e1)
790		} else {
791			err = syscall.EINVAL
792		}
793	}
794	return
795}
796
797func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
798	r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
799	if r1 == 0 {
800		if e1 != 0 {
801			err = errnoErr(e1)
802		} else {
803			err = syscall.EINVAL
804		}
805	}
806	return
807}
808
809func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
810	r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
811	handle = Handle(r0)
812	if handle == InvalidHandle {
813		if e1 != 0 {
814			err = errnoErr(e1)
815		} else {
816			err = syscall.EINVAL
817		}
818	}
819	return
820}
821
822func findNextFile1(handle Handle, data *win32finddata1) (err error) {
823	r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
824	if r1 == 0 {
825		if e1 != 0 {
826			err = errnoErr(e1)
827		} else {
828			err = syscall.EINVAL
829		}
830	}
831	return
832}
833
834func FindClose(handle Handle) (err error) {
835	r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
836	if r1 == 0 {
837		if e1 != 0 {
838			err = errnoErr(e1)
839		} else {
840			err = syscall.EINVAL
841		}
842	}
843	return
844}
845
846func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
847	r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
848	if r1 == 0 {
849		if e1 != 0 {
850			err = errnoErr(e1)
851		} else {
852			err = syscall.EINVAL
853		}
854	}
855	return
856}
857
858func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {
859	r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)
860	if r1 == 0 {
861		if e1 != 0 {
862			err = errnoErr(e1)
863		} else {
864			err = syscall.EINVAL
865		}
866	}
867	return
868}
869
870func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
871	r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
872	n = uint32(r0)
873	if n == 0 {
874		if e1 != 0 {
875			err = errnoErr(e1)
876		} else {
877			err = syscall.EINVAL
878		}
879	}
880	return
881}
882
883func SetCurrentDirectory(path *uint16) (err error) {
884	r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
885	if r1 == 0 {
886		if e1 != 0 {
887			err = errnoErr(e1)
888		} else {
889			err = syscall.EINVAL
890		}
891	}
892	return
893}
894
895func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
896	r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
897	if r1 == 0 {
898		if e1 != 0 {
899			err = errnoErr(e1)
900		} else {
901			err = syscall.EINVAL
902		}
903	}
904	return
905}
906
907func RemoveDirectory(path *uint16) (err error) {
908	r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
909	if r1 == 0 {
910		if e1 != 0 {
911			err = errnoErr(e1)
912		} else {
913			err = syscall.EINVAL
914		}
915	}
916	return
917}
918
919func DeleteFile(path *uint16) (err error) {
920	r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
921	if r1 == 0 {
922		if e1 != 0 {
923			err = errnoErr(e1)
924		} else {
925			err = syscall.EINVAL
926		}
927	}
928	return
929}
930
931func MoveFile(from *uint16, to *uint16) (err error) {
932	r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
933	if r1 == 0 {
934		if e1 != 0 {
935			err = errnoErr(e1)
936		} else {
937			err = syscall.EINVAL
938		}
939	}
940	return
941}
942
943func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
944	r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
945	if r1 == 0 {
946		if e1 != 0 {
947			err = errnoErr(e1)
948		} else {
949			err = syscall.EINVAL
950		}
951	}
952	return
953}
954
955func GetComputerName(buf *uint16, n *uint32) (err error) {
956	r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
957	if r1 == 0 {
958		if e1 != 0 {
959			err = errnoErr(e1)
960		} else {
961			err = syscall.EINVAL
962		}
963	}
964	return
965}
966
967func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
968	r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
969	if r1 == 0 {
970		if e1 != 0 {
971			err = errnoErr(e1)
972		} else {
973			err = syscall.EINVAL
974		}
975	}
976	return
977}
978
979func SetEndOfFile(handle Handle) (err error) {
980	r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
981	if r1 == 0 {
982		if e1 != 0 {
983			err = errnoErr(e1)
984		} else {
985			err = syscall.EINVAL
986		}
987	}
988	return
989}
990
991func GetSystemTimeAsFileTime(time *Filetime) {
992	syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
993	return
994}
995
996func GetSystemTimePreciseAsFileTime(time *Filetime) {
997	syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
998	return
999}
1000
1001func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
1002	r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
1003	rc = uint32(r0)
1004	if rc == 0xffffffff {
1005		if e1 != 0 {
1006			err = errnoErr(e1)
1007		} else {
1008			err = syscall.EINVAL
1009		}
1010	}
1011	return
1012}
1013
1014func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
1015	r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
1016	handle = Handle(r0)
1017	if handle == 0 {
1018		if e1 != 0 {
1019			err = errnoErr(e1)
1020		} else {
1021			err = syscall.EINVAL
1022		}
1023	}
1024	return
1025}
1026
1027func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
1028	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
1029	if r1 == 0 {
1030		if e1 != 0 {
1031			err = errnoErr(e1)
1032		} else {
1033			err = syscall.EINVAL
1034		}
1035	}
1036	return
1037}
1038
1039func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
1040	r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
1041	if r1 == 0 {
1042		if e1 != 0 {
1043			err = errnoErr(e1)
1044		} else {
1045			err = syscall.EINVAL
1046		}
1047	}
1048	return
1049}
1050
1051func CancelIo(s Handle) (err error) {
1052	r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
1053	if r1 == 0 {
1054		if e1 != 0 {
1055			err = errnoErr(e1)
1056		} else {
1057			err = syscall.EINVAL
1058		}
1059	}
1060	return
1061}
1062
1063func CancelIoEx(s Handle, o *Overlapped) (err error) {
1064	r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
1065	if r1 == 0 {
1066		if e1 != 0 {
1067			err = errnoErr(e1)
1068		} else {
1069			err = syscall.EINVAL
1070		}
1071	}
1072	return
1073}
1074
1075func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
1076	var _p0 uint32
1077	if inheritHandles {
1078		_p0 = 1
1079	} else {
1080		_p0 = 0
1081	}
1082	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)
1083	if r1 == 0 {
1084		if e1 != 0 {
1085			err = errnoErr(e1)
1086		} else {
1087			err = syscall.EINVAL
1088		}
1089	}
1090	return
1091}
1092
1093func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {
1094	var _p0 uint32
1095	if inheritHandle {
1096		_p0 = 1
1097	} else {
1098		_p0 = 0
1099	}
1100	r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))
1101	handle = Handle(r0)
1102	if handle == 0 {
1103		if e1 != 0 {
1104			err = errnoErr(e1)
1105		} else {
1106			err = syscall.EINVAL
1107		}
1108	}
1109	return
1110}
1111
1112func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {
1113	r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))
1114	if r1 == 0 {
1115		if e1 != 0 {
1116			err = errnoErr(e1)
1117		} else {
1118			err = syscall.EINVAL
1119		}
1120	}
1121	return
1122}
1123
1124func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {
1125	r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)
1126	if r0 != 0 {
1127		ret = syscall.Errno(r0)
1128	}
1129	return
1130}
1131
1132func TerminateProcess(handle Handle, exitcode uint32) (err error) {
1133	r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
1134	if r1 == 0 {
1135		if e1 != 0 {
1136			err = errnoErr(e1)
1137		} else {
1138			err = syscall.EINVAL
1139		}
1140	}
1141	return
1142}
1143
1144func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
1145	r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
1146	if r1 == 0 {
1147		if e1 != 0 {
1148			err = errnoErr(e1)
1149		} else {
1150			err = syscall.EINVAL
1151		}
1152	}
1153	return
1154}
1155
1156func GetStartupInfo(startupInfo *StartupInfo) (err error) {
1157	r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
1158	if r1 == 0 {
1159		if e1 != 0 {
1160			err = errnoErr(e1)
1161		} else {
1162			err = syscall.EINVAL
1163		}
1164	}
1165	return
1166}
1167
1168func GetCurrentProcess() (pseudoHandle Handle, err error) {
1169	r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
1170	pseudoHandle = Handle(r0)
1171	if pseudoHandle == 0 {
1172		if e1 != 0 {
1173			err = errnoErr(e1)
1174		} else {
1175			err = syscall.EINVAL
1176		}
1177	}
1178	return
1179}
1180
1181func GetCurrentThread() (pseudoHandle Handle, err error) {
1182	r0, _, e1 := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0)
1183	pseudoHandle = Handle(r0)
1184	if pseudoHandle == 0 {
1185		if e1 != 0 {
1186			err = errnoErr(e1)
1187		} else {
1188			err = syscall.EINVAL
1189		}
1190	}
1191	return
1192}
1193
1194func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
1195	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)
1196	if r1 == 0 {
1197		if e1 != 0 {
1198			err = errnoErr(e1)
1199		} else {
1200			err = syscall.EINVAL
1201		}
1202	}
1203	return
1204}
1205
1206func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
1207	var _p0 uint32
1208	if bInheritHandle {
1209		_p0 = 1
1210	} else {
1211		_p0 = 0
1212	}
1213	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)
1214	if r1 == 0 {
1215		if e1 != 0 {
1216			err = errnoErr(e1)
1217		} else {
1218			err = syscall.EINVAL
1219		}
1220	}
1221	return
1222}
1223
1224func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
1225	r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
1226	event = uint32(r0)
1227	if event == 0xffffffff {
1228		if e1 != 0 {
1229			err = errnoErr(e1)
1230		} else {
1231			err = syscall.EINVAL
1232		}
1233	}
1234	return
1235}
1236
1237func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
1238	var _p0 uint32
1239	if waitAll {
1240		_p0 = 1
1241	} else {
1242		_p0 = 0
1243	}
1244	r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)
1245	event = uint32(r0)
1246	if event == 0xffffffff {
1247		if e1 != 0 {
1248			err = errnoErr(e1)
1249		} else {
1250			err = syscall.EINVAL
1251		}
1252	}
1253	return
1254}
1255
1256func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
1257	r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
1258	n = uint32(r0)
1259	if n == 0 {
1260		if e1 != 0 {
1261			err = errnoErr(e1)
1262		} else {
1263			err = syscall.EINVAL
1264		}
1265	}
1266	return
1267}
1268
1269func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
1270	r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
1271	if r1 == 0 {
1272		if e1 != 0 {
1273			err = errnoErr(e1)
1274		} else {
1275			err = syscall.EINVAL
1276		}
1277	}
1278	return
1279}
1280
1281func GetFileType(filehandle Handle) (n uint32, err error) {
1282	r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
1283	n = uint32(r0)
1284	if n == 0 {
1285		if e1 != 0 {
1286			err = errnoErr(e1)
1287		} else {
1288			err = syscall.EINVAL
1289		}
1290	}
1291	return
1292}
1293
1294func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
1295	r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
1296	if r1 == 0 {
1297		if e1 != 0 {
1298			err = errnoErr(e1)
1299		} else {
1300			err = syscall.EINVAL
1301		}
1302	}
1303	return
1304}
1305
1306func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
1307	r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
1308	if r1 == 0 {
1309		if e1 != 0 {
1310			err = errnoErr(e1)
1311		} else {
1312			err = syscall.EINVAL
1313		}
1314	}
1315	return
1316}
1317
1318func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
1319	r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
1320	if r1 == 0 {
1321		if e1 != 0 {
1322			err = errnoErr(e1)
1323		} else {
1324			err = syscall.EINVAL
1325		}
1326	}
1327	return
1328}
1329
1330func GetEnvironmentStrings() (envs *uint16, err error) {
1331	r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
1332	envs = (*uint16)(unsafe.Pointer(r0))
1333	if envs == nil {
1334		if e1 != 0 {
1335			err = errnoErr(e1)
1336		} else {
1337			err = syscall.EINVAL
1338		}
1339	}
1340	return
1341}
1342
1343func FreeEnvironmentStrings(envs *uint16) (err error) {
1344	r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
1345	if r1 == 0 {
1346		if e1 != 0 {
1347			err = errnoErr(e1)
1348		} else {
1349			err = syscall.EINVAL
1350		}
1351	}
1352	return
1353}
1354
1355func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
1356	r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
1357	n = uint32(r0)
1358	if n == 0 {
1359		if e1 != 0 {
1360			err = errnoErr(e1)
1361		} else {
1362			err = syscall.EINVAL
1363		}
1364	}
1365	return
1366}
1367
1368func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
1369	r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
1370	if r1 == 0 {
1371		if e1 != 0 {
1372			err = errnoErr(e1)
1373		} else {
1374			err = syscall.EINVAL
1375		}
1376	}
1377	return
1378}
1379
1380func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
1381	var _p0 uint32
1382	if inheritExisting {
1383		_p0 = 1
1384	} else {
1385		_p0 = 0
1386	}
1387	r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
1388	if r1 == 0 {
1389		if e1 != 0 {
1390			err = errnoErr(e1)
1391		} else {
1392			err = syscall.EINVAL
1393		}
1394	}
1395	return
1396}
1397
1398func DestroyEnvironmentBlock(block *uint16) (err error) {
1399	r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
1400	if r1 == 0 {
1401		if e1 != 0 {
1402			err = errnoErr(e1)
1403		} else {
1404			err = syscall.EINVAL
1405		}
1406	}
1407	return
1408}
1409
1410func getTickCount64() (ms uint64) {
1411	r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)
1412	ms = uint64(r0)
1413	return
1414}
1415
1416func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
1417	r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
1418	if r1 == 0 {
1419		if e1 != 0 {
1420			err = errnoErr(e1)
1421		} else {
1422			err = syscall.EINVAL
1423		}
1424	}
1425	return
1426}
1427
1428func GetFileAttributes(name *uint16) (attrs uint32, err error) {
1429	r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
1430	attrs = uint32(r0)
1431	if attrs == INVALID_FILE_ATTRIBUTES {
1432		if e1 != 0 {
1433			err = errnoErr(e1)
1434		} else {
1435			err = syscall.EINVAL
1436		}
1437	}
1438	return
1439}
1440
1441func SetFileAttributes(name *uint16, attrs uint32) (err error) {
1442	r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
1443	if r1 == 0 {
1444		if e1 != 0 {
1445			err = errnoErr(e1)
1446		} else {
1447			err = syscall.EINVAL
1448		}
1449	}
1450	return
1451}
1452
1453func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
1454	r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
1455	if r1 == 0 {
1456		if e1 != 0 {
1457			err = errnoErr(e1)
1458		} else {
1459			err = syscall.EINVAL
1460		}
1461	}
1462	return
1463}
1464
1465func GetCommandLine() (cmd *uint16) {
1466	r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
1467	cmd = (*uint16)(unsafe.Pointer(r0))
1468	return
1469}
1470
1471func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
1472	r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
1473	argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
1474	if argv == nil {
1475		if e1 != 0 {
1476			err = errnoErr(e1)
1477		} else {
1478			err = syscall.EINVAL
1479		}
1480	}
1481	return
1482}
1483
1484func LocalFree(hmem Handle) (handle Handle, err error) {
1485	r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
1486	handle = Handle(r0)
1487	if handle != 0 {
1488		if e1 != 0 {
1489			err = errnoErr(e1)
1490		} else {
1491			err = syscall.EINVAL
1492		}
1493	}
1494	return
1495}
1496
1497func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
1498	r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
1499	if r1 == 0 {
1500		if e1 != 0 {
1501			err = errnoErr(e1)
1502		} else {
1503			err = syscall.EINVAL
1504		}
1505	}
1506	return
1507}
1508
1509func FlushFileBuffers(handle Handle) (err error) {
1510	r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
1511	if r1 == 0 {
1512		if e1 != 0 {
1513			err = errnoErr(e1)
1514		} else {
1515			err = syscall.EINVAL
1516		}
1517	}
1518	return
1519}
1520
1521func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
1522	r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
1523	n = uint32(r0)
1524	if n == 0 {
1525		if e1 != 0 {
1526			err = errnoErr(e1)
1527		} else {
1528			err = syscall.EINVAL
1529		}
1530	}
1531	return
1532}
1533
1534func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
1535	r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
1536	n = uint32(r0)
1537	if n == 0 {
1538		if e1 != 0 {
1539			err = errnoErr(e1)
1540		} else {
1541			err = syscall.EINVAL
1542		}
1543	}
1544	return
1545}
1546
1547func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
1548	r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
1549	n = uint32(r0)
1550	if n == 0 {
1551		if e1 != 0 {
1552			err = errnoErr(e1)
1553		} else {
1554			err = syscall.EINVAL
1555		}
1556	}
1557	return
1558}
1559
1560func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
1561	r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
1562	handle = Handle(r0)
1563	if handle == 0 {
1564		if e1 != 0 {
1565			err = errnoErr(e1)
1566		} else {
1567			err = syscall.EINVAL
1568		}
1569	}
1570	return
1571}
1572
1573func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
1574	r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
1575	addr = uintptr(r0)
1576	if addr == 0 {
1577		if e1 != 0 {
1578			err = errnoErr(e1)
1579		} else {
1580			err = syscall.EINVAL
1581		}
1582	}
1583	return
1584}
1585
1586func UnmapViewOfFile(addr uintptr) (err error) {
1587	r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
1588	if r1 == 0 {
1589		if e1 != 0 {
1590			err = errnoErr(e1)
1591		} else {
1592			err = syscall.EINVAL
1593		}
1594	}
1595	return
1596}
1597
1598func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
1599	r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
1600	if r1 == 0 {
1601		if e1 != 0 {
1602			err = errnoErr(e1)
1603		} else {
1604			err = syscall.EINVAL
1605		}
1606	}
1607	return
1608}
1609
1610func VirtualLock(addr uintptr, length uintptr) (err error) {
1611	r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
1612	if r1 == 0 {
1613		if e1 != 0 {
1614			err = errnoErr(e1)
1615		} else {
1616			err = syscall.EINVAL
1617		}
1618	}
1619	return
1620}
1621
1622func VirtualUnlock(addr uintptr, length uintptr) (err error) {
1623	r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
1624	if r1 == 0 {
1625		if e1 != 0 {
1626			err = errnoErr(e1)
1627		} else {
1628			err = syscall.EINVAL
1629		}
1630	}
1631	return
1632}
1633
1634func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
1635	r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
1636	value = uintptr(r0)
1637	if value == 0 {
1638		if e1 != 0 {
1639			err = errnoErr(e1)
1640		} else {
1641			err = syscall.EINVAL
1642		}
1643	}
1644	return
1645}
1646
1647func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
1648	r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
1649	if r1 == 0 {
1650		if e1 != 0 {
1651			err = errnoErr(e1)
1652		} else {
1653			err = syscall.EINVAL
1654		}
1655	}
1656	return
1657}
1658
1659func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
1660	r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 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 TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
1672	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)
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 ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
1684	var _p0 uint32
1685	if watchSubTree {
1686		_p0 = 1
1687	} else {
1688		_p0 = 0
1689	}
1690	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)
1691	if r1 == 0 {
1692		if e1 != 0 {
1693			err = errnoErr(e1)
1694		} else {
1695			err = syscall.EINVAL
1696		}
1697	}
1698	return
1699}
1700
1701func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
1702	r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
1703	store = Handle(r0)
1704	if store == 0 {
1705		if e1 != 0 {
1706			err = errnoErr(e1)
1707		} else {
1708			err = syscall.EINVAL
1709		}
1710	}
1711	return
1712}
1713
1714func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
1715	r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
1716	handle = Handle(r0)
1717	if handle == InvalidHandle {
1718		if e1 != 0 {
1719			err = errnoErr(e1)
1720		} else {
1721			err = syscall.EINVAL
1722		}
1723	}
1724	return
1725}
1726
1727func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
1728	r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
1729	context = (*CertContext)(unsafe.Pointer(r0))
1730	if context == nil {
1731		if e1 != 0 {
1732			err = errnoErr(e1)
1733		} else {
1734			err = syscall.EINVAL
1735		}
1736	}
1737	return
1738}
1739
1740func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
1741	r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
1742	if r1 == 0 {
1743		if e1 != 0 {
1744			err = errnoErr(e1)
1745		} else {
1746			err = syscall.EINVAL
1747		}
1748	}
1749	return
1750}
1751
1752func CertCloseStore(store Handle, flags uint32) (err error) {
1753	r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
1754	if r1 == 0 {
1755		if e1 != 0 {
1756			err = errnoErr(e1)
1757		} else {
1758			err = syscall.EINVAL
1759		}
1760	}
1761	return
1762}
1763
1764func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
1765	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)
1766	if r1 == 0 {
1767		if e1 != 0 {
1768			err = errnoErr(e1)
1769		} else {
1770			err = syscall.EINVAL
1771		}
1772	}
1773	return
1774}
1775
1776func CertFreeCertificateChain(ctx *CertChainContext) {
1777	syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
1778	return
1779}
1780
1781func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
1782	r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
1783	context = (*CertContext)(unsafe.Pointer(r0))
1784	if context == nil {
1785		if e1 != 0 {
1786			err = errnoErr(e1)
1787		} else {
1788			err = syscall.EINVAL
1789		}
1790	}
1791	return
1792}
1793
1794func CertFreeCertificateContext(ctx *CertContext) (err error) {
1795	r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
1796	if r1 == 0 {
1797		if e1 != 0 {
1798			err = errnoErr(e1)
1799		} else {
1800			err = syscall.EINVAL
1801		}
1802	}
1803	return
1804}
1805
1806func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
1807	r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
1808	if r1 == 0 {
1809		if e1 != 0 {
1810			err = errnoErr(e1)
1811		} else {
1812			err = syscall.EINVAL
1813		}
1814	}
1815	return
1816}
1817
1818func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
1819	r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
1820	if r0 != 0 {
1821		regerrno = syscall.Errno(r0)
1822	}
1823	return
1824}
1825
1826func RegCloseKey(key Handle) (regerrno error) {
1827	r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
1828	if r0 != 0 {
1829		regerrno = syscall.Errno(r0)
1830	}
1831	return
1832}
1833
1834func 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) {
1835	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)))
1836	if r0 != 0 {
1837		regerrno = syscall.Errno(r0)
1838	}
1839	return
1840}
1841
1842func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
1843	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)
1844	if r0 != 0 {
1845		regerrno = syscall.Errno(r0)
1846	}
1847	return
1848}
1849
1850func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
1851	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)))
1852	if r0 != 0 {
1853		regerrno = syscall.Errno(r0)
1854	}
1855	return
1856}
1857
1858func GetCurrentProcessId() (pid uint32) {
1859	r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
1860	pid = uint32(r0)
1861	return
1862}
1863
1864func GetConsoleMode(console Handle, mode *uint32) (err error) {
1865	r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
1866	if r1 == 0 {
1867		if e1 != 0 {
1868			err = errnoErr(e1)
1869		} else {
1870			err = syscall.EINVAL
1871		}
1872	}
1873	return
1874}
1875
1876func SetConsoleMode(console Handle, mode uint32) (err error) {
1877	r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
1878	if r1 == 0 {
1879		if e1 != 0 {
1880			err = errnoErr(e1)
1881		} else {
1882			err = syscall.EINVAL
1883		}
1884	}
1885	return
1886}
1887
1888func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
1889	r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
1890	if r1 == 0 {
1891		if e1 != 0 {
1892			err = errnoErr(e1)
1893		} else {
1894			err = syscall.EINVAL
1895		}
1896	}
1897	return
1898}
1899
1900func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
1901	r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
1902	if r1 == 0 {
1903		if e1 != 0 {
1904			err = errnoErr(e1)
1905		} else {
1906			err = syscall.EINVAL
1907		}
1908	}
1909	return
1910}
1911
1912func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
1913	r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
1914	if r1 == 0 {
1915		if e1 != 0 {
1916			err = errnoErr(e1)
1917		} else {
1918			err = syscall.EINVAL
1919		}
1920	}
1921	return
1922}
1923
1924func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
1925	r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
1926	handle = Handle(r0)
1927	if handle == InvalidHandle {
1928		if e1 != 0 {
1929			err = errnoErr(e1)
1930		} else {
1931			err = syscall.EINVAL
1932		}
1933	}
1934	return
1935}
1936
1937func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
1938	r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
1939	if r1 == 0 {
1940		if e1 != 0 {
1941			err = errnoErr(e1)
1942		} else {
1943			err = syscall.EINVAL
1944		}
1945	}
1946	return
1947}
1948
1949func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
1950	r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
1951	if r1 == 0 {
1952		if e1 != 0 {
1953			err = errnoErr(e1)
1954		} else {
1955			err = syscall.EINVAL
1956		}
1957	}
1958	return
1959}
1960
1961func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
1962	r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
1963	if r1 == 0 {
1964		if e1 != 0 {
1965			err = errnoErr(e1)
1966		} else {
1967			err = syscall.EINVAL
1968		}
1969	}
1970	return
1971}
1972
1973func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
1974	r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
1975	if r1 == 0 {
1976		if e1 != 0 {
1977			err = errnoErr(e1)
1978		} else {
1979			err = syscall.EINVAL
1980		}
1981	}
1982	return
1983}
1984
1985func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
1986	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)
1987	if r1 == 0 {
1988		if e1 != 0 {
1989			err = errnoErr(e1)
1990		} else {
1991			err = syscall.EINVAL
1992		}
1993	}
1994	return
1995}
1996
1997func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
1998	r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
1999	if r1&0xff == 0 {
2000		if e1 != 0 {
2001			err = errnoErr(e1)
2002		} else {
2003			err = syscall.EINVAL
2004		}
2005	}
2006	return
2007}
2008
2009func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
2010	r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
2011	if r1&0xff == 0 {
2012		if e1 != 0 {
2013			err = errnoErr(e1)
2014		} else {
2015			err = syscall.EINVAL
2016		}
2017	}
2018	return
2019}
2020
2021func GetCurrentThreadId() (id uint32) {
2022	r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
2023	id = uint32(r0)
2024	return
2025}
2026
2027func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
2028	r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
2029	handle = Handle(r0)
2030	if handle == 0 {
2031		if e1 != 0 {
2032			err = errnoErr(e1)
2033		} else {
2034			err = syscall.EINVAL
2035		}
2036	}
2037	return
2038}
2039
2040func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
2041	r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
2042	handle = Handle(r0)
2043	if handle == 0 {
2044		if e1 != 0 {
2045			err = errnoErr(e1)
2046		} else {
2047			err = syscall.EINVAL
2048		}
2049	}
2050	return
2051}
2052
2053func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
2054	var _p0 uint32
2055	if inheritHandle {
2056		_p0 = 1
2057	} else {
2058		_p0 = 0
2059	}
2060	r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
2061	handle = Handle(r0)
2062	if handle == 0 {
2063		if e1 != 0 {
2064			err = errnoErr(e1)
2065		} else {
2066			err = syscall.EINVAL
2067		}
2068	}
2069	return
2070}
2071
2072func SetEvent(event Handle) (err error) {
2073	r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
2074	if r1 == 0 {
2075		if e1 != 0 {
2076			err = errnoErr(e1)
2077		} else {
2078			err = syscall.EINVAL
2079		}
2080	}
2081	return
2082}
2083
2084func ResetEvent(event Handle) (err error) {
2085	r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
2086	if r1 == 0 {
2087		if e1 != 0 {
2088			err = errnoErr(e1)
2089		} else {
2090			err = syscall.EINVAL
2091		}
2092	}
2093	return
2094}
2095
2096func PulseEvent(event Handle) (err error) {
2097	r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
2098	if r1 == 0 {
2099		if e1 != 0 {
2100			err = errnoErr(e1)
2101		} else {
2102			err = syscall.EINVAL
2103		}
2104	}
2105	return
2106}
2107
2108func SleepEx(milliseconds uint32, alertable bool) (ret uint32) {
2109	var _p0 uint32
2110	if alertable {
2111		_p0 = 1
2112	} else {
2113		_p0 = 0
2114	}
2115	r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)
2116	ret = uint32(r0)
2117	return
2118}
2119
2120func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {
2121	r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)
2122	handle = Handle(r0)
2123	if handle == 0 {
2124		if e1 != 0 {
2125			err = errnoErr(e1)
2126		} else {
2127			err = syscall.EINVAL
2128		}
2129	}
2130	return
2131}
2132
2133func AssignProcessToJobObject(job Handle, process Handle) (err error) {
2134	r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)
2135	if r1 == 0 {
2136		if e1 != 0 {
2137			err = errnoErr(e1)
2138		} else {
2139			err = syscall.EINVAL
2140		}
2141	}
2142	return
2143}
2144
2145func TerminateJobObject(job Handle, exitCode uint32) (err error) {
2146	r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)
2147	if r1 == 0 {
2148		if e1 != 0 {
2149			err = errnoErr(e1)
2150		} else {
2151			err = syscall.EINVAL
2152		}
2153	}
2154	return
2155}
2156
2157func SetErrorMode(mode uint32) (ret uint32) {
2158	r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)
2159	ret = uint32(r0)
2160	return
2161}
2162
2163func ResumeThread(thread Handle) (ret uint32, err error) {
2164	r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)
2165	ret = uint32(r0)
2166	if ret == 0xffffffff {
2167		if e1 != 0 {
2168			err = errnoErr(e1)
2169		} else {
2170			err = syscall.EINVAL
2171		}
2172	}
2173	return
2174}
2175
2176func SetPriorityClass(process Handle, priorityClass uint32) (err error) {
2177	r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)
2178	if r1 == 0 {
2179		if e1 != 0 {
2180			err = errnoErr(e1)
2181		} else {
2182			err = syscall.EINVAL
2183		}
2184	}
2185	return
2186}
2187
2188func GetPriorityClass(process Handle) (ret uint32, err error) {
2189	r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)
2190	ret = uint32(r0)
2191	if ret == 0 {
2192		if e1 != 0 {
2193			err = errnoErr(e1)
2194		} else {
2195			err = syscall.EINVAL
2196		}
2197	}
2198	return
2199}
2200
2201func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {
2202	r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)
2203	ret = int(r0)
2204	if ret == 0 {
2205		if e1 != 0 {
2206			err = errnoErr(e1)
2207		} else {
2208			err = syscall.EINVAL
2209		}
2210	}
2211	return
2212}
2213
2214func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {
2215	r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)
2216	if r1 == 0 {
2217		if e1 != 0 {
2218			err = errnoErr(e1)
2219		} else {
2220			err = syscall.EINVAL
2221		}
2222	}
2223	return
2224}
2225
2226func GetProcessId(process Handle) (id uint32, err error) {
2227	r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)
2228	id = uint32(r0)
2229	if id == 0 {
2230		if e1 != 0 {
2231			err = errnoErr(e1)
2232		} else {
2233			err = syscall.EINVAL
2234		}
2235	}
2236	return
2237}
2238
2239func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {
2240	var _p0 uint32
2241	if inheritHandle {
2242		_p0 = 1
2243	} else {
2244		_p0 = 0
2245	}
2246	r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))
2247	handle = Handle(r0)
2248	if handle == 0 {
2249		if e1 != 0 {
2250			err = errnoErr(e1)
2251		} else {
2252			err = syscall.EINVAL
2253		}
2254	}
2255	return
2256}
2257
2258func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
2259	r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
2260	if r1 == 0 {
2261		if e1 != 0 {
2262			err = errnoErr(e1)
2263		} else {
2264			err = syscall.EINVAL
2265		}
2266	}
2267	return
2268}
2269
2270func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
2271	r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
2272	if r1 == 0 {
2273		if e1 != 0 {
2274			err = errnoErr(e1)
2275		} else {
2276			err = syscall.EINVAL
2277		}
2278	}
2279	return
2280}
2281
2282func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
2283	r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
2284	handle = Handle(r0)
2285	if handle == InvalidHandle {
2286		if e1 != 0 {
2287			err = errnoErr(e1)
2288		} else {
2289			err = syscall.EINVAL
2290		}
2291	}
2292	return
2293}
2294
2295func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
2296	r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
2297	handle = Handle(r0)
2298	if handle == InvalidHandle {
2299		if e1 != 0 {
2300			err = errnoErr(e1)
2301		} else {
2302			err = syscall.EINVAL
2303		}
2304	}
2305	return
2306}
2307
2308func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
2309	r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
2310	if r1 == 0 {
2311		if e1 != 0 {
2312			err = errnoErr(e1)
2313		} else {
2314			err = syscall.EINVAL
2315		}
2316	}
2317	return
2318}
2319
2320func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
2321	r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
2322	if r1 == 0 {
2323		if e1 != 0 {
2324			err = errnoErr(e1)
2325		} else {
2326			err = syscall.EINVAL
2327		}
2328	}
2329	return
2330}
2331
2332func FindVolumeClose(findVolume Handle) (err error) {
2333	r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
2334	if r1 == 0 {
2335		if e1 != 0 {
2336			err = errnoErr(e1)
2337		} else {
2338			err = syscall.EINVAL
2339		}
2340	}
2341	return
2342}
2343
2344func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
2345	r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
2346	if r1 == 0 {
2347		if e1 != 0 {
2348			err = errnoErr(e1)
2349		} else {
2350			err = syscall.EINVAL
2351		}
2352	}
2353	return
2354}
2355
2356func GetDriveType(rootPathName *uint16) (driveType uint32) {
2357	r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
2358	driveType = uint32(r0)
2359	return
2360}
2361
2362func GetLogicalDrives() (drivesBitMask uint32, err error) {
2363	r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
2364	drivesBitMask = uint32(r0)
2365	if drivesBitMask == 0 {
2366		if e1 != 0 {
2367			err = errnoErr(e1)
2368		} else {
2369			err = syscall.EINVAL
2370		}
2371	}
2372	return
2373}
2374
2375func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
2376	r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
2377	n = uint32(r0)
2378	if n == 0 {
2379		if e1 != 0 {
2380			err = errnoErr(e1)
2381		} else {
2382			err = syscall.EINVAL
2383		}
2384	}
2385	return
2386}
2387
2388func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
2389	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)
2390	if r1 == 0 {
2391		if e1 != 0 {
2392			err = errnoErr(e1)
2393		} else {
2394			err = syscall.EINVAL
2395		}
2396	}
2397	return
2398}
2399
2400func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
2401	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)
2402	if r1 == 0 {
2403		if e1 != 0 {
2404			err = errnoErr(e1)
2405		} else {
2406			err = syscall.EINVAL
2407		}
2408	}
2409	return
2410}
2411
2412func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
2413	r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
2414	if r1 == 0 {
2415		if e1 != 0 {
2416			err = errnoErr(e1)
2417		} else {
2418			err = syscall.EINVAL
2419		}
2420	}
2421	return
2422}
2423
2424func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
2425	r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
2426	if r1 == 0 {
2427		if e1 != 0 {
2428			err = errnoErr(e1)
2429		} else {
2430			err = syscall.EINVAL
2431		}
2432	}
2433	return
2434}
2435
2436func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
2437	r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
2438	if r1 == 0 {
2439		if e1 != 0 {
2440			err = errnoErr(e1)
2441		} else {
2442			err = syscall.EINVAL
2443		}
2444	}
2445	return
2446}
2447
2448func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
2449	r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
2450	n = uint32(r0)
2451	if n == 0 {
2452		if e1 != 0 {
2453			err = errnoErr(e1)
2454		} else {
2455			err = syscall.EINVAL
2456		}
2457	}
2458	return
2459}
2460
2461func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
2462	r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
2463	if r1 == 0 {
2464		if e1 != 0 {
2465			err = errnoErr(e1)
2466		} else {
2467			err = syscall.EINVAL
2468		}
2469	}
2470	return
2471}
2472
2473func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
2474	r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
2475	if r1 == 0 {
2476		if e1 != 0 {
2477			err = errnoErr(e1)
2478		} else {
2479			err = syscall.EINVAL
2480		}
2481	}
2482	return
2483}
2484
2485func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
2486	r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
2487	ret = int32(r0)
2488	if ret == 0 {
2489		if e1 != 0 {
2490			err = errnoErr(e1)
2491		} else {
2492			err = syscall.EINVAL
2493		}
2494	}
2495	return
2496}
2497
2498func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {
2499	r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)
2500	if r0 != 0 {
2501		ret = syscall.Errno(r0)
2502	}
2503	return
2504}
2505
2506func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
2507	r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))
2508	chars = int32(r0)
2509	return
2510}
2511
2512func coCreateGuid(pguid *GUID) (ret error) {
2513	r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)
2514	if r0 != 0 {
2515		ret = syscall.Errno(r0)
2516	}
2517	return
2518}
2519
2520func CoTaskMemFree(address unsafe.Pointer) {
2521	syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)
2522	return
2523}
2524
2525func rtlGetVersion(info *OsVersionInfoEx) (ret error) {
2526	r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
2527	if r0 != 0 {
2528		ret = syscall.Errno(r0)
2529	}
2530	return
2531}
2532
2533func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
2534	r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
2535	if r0 != 0 {
2536		sockerr = syscall.Errno(r0)
2537	}
2538	return
2539}
2540
2541func WSACleanup() (err error) {
2542	r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
2543	if r1 == socket_error {
2544		if e1 != 0 {
2545			err = errnoErr(e1)
2546		} else {
2547			err = syscall.EINVAL
2548		}
2549	}
2550	return
2551}
2552
2553func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
2554	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))
2555	if r1 == socket_error {
2556		if e1 != 0 {
2557			err = errnoErr(e1)
2558		} else {
2559			err = syscall.EINVAL
2560		}
2561	}
2562	return
2563}
2564
2565func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
2566	r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
2567	handle = Handle(r0)
2568	if handle == InvalidHandle {
2569		if e1 != 0 {
2570			err = errnoErr(e1)
2571		} else {
2572			err = syscall.EINVAL
2573		}
2574	}
2575	return
2576}
2577
2578func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
2579	r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
2580	if r1 == socket_error {
2581		if e1 != 0 {
2582			err = errnoErr(e1)
2583		} else {
2584			err = syscall.EINVAL
2585		}
2586	}
2587	return
2588}
2589
2590func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
2591	r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
2592	if r1 == socket_error {
2593		if e1 != 0 {
2594			err = errnoErr(e1)
2595		} else {
2596			err = syscall.EINVAL
2597		}
2598	}
2599	return
2600}
2601
2602func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
2603	r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
2604	if r1 == socket_error {
2605		if e1 != 0 {
2606			err = errnoErr(e1)
2607		} else {
2608			err = syscall.EINVAL
2609		}
2610	}
2611	return
2612}
2613
2614func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
2615	r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
2616	if r1 == socket_error {
2617		if e1 != 0 {
2618			err = errnoErr(e1)
2619		} else {
2620			err = syscall.EINVAL
2621		}
2622	}
2623	return
2624}
2625
2626func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
2627	r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
2628	if r1 == socket_error {
2629		if e1 != 0 {
2630			err = errnoErr(e1)
2631		} else {
2632			err = syscall.EINVAL
2633		}
2634	}
2635	return
2636}
2637
2638func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
2639	r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
2640	if r1 == socket_error {
2641		if e1 != 0 {
2642			err = errnoErr(e1)
2643		} else {
2644			err = syscall.EINVAL
2645		}
2646	}
2647	return
2648}
2649
2650func listen(s Handle, backlog int32) (err error) {
2651	r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
2652	if r1 == socket_error {
2653		if e1 != 0 {
2654			err = errnoErr(e1)
2655		} else {
2656			err = syscall.EINVAL
2657		}
2658	}
2659	return
2660}
2661
2662func shutdown(s Handle, how int32) (err error) {
2663	r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
2664	if r1 == socket_error {
2665		if e1 != 0 {
2666			err = errnoErr(e1)
2667		} else {
2668			err = syscall.EINVAL
2669		}
2670	}
2671	return
2672}
2673
2674func Closesocket(s Handle) (err error) {
2675	r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
2676	if r1 == socket_error {
2677		if e1 != 0 {
2678			err = errnoErr(e1)
2679		} else {
2680			err = syscall.EINVAL
2681		}
2682	}
2683	return
2684}
2685
2686func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
2687	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)
2688	if r1 == 0 {
2689		if e1 != 0 {
2690			err = errnoErr(e1)
2691		} else {
2692			err = syscall.EINVAL
2693		}
2694	}
2695	return
2696}
2697
2698func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
2699	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)
2700	return
2701}
2702
2703func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
2704	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)
2705	if r1 == socket_error {
2706		if e1 != 0 {
2707			err = errnoErr(e1)
2708		} else {
2709			err = syscall.EINVAL
2710		}
2711	}
2712	return
2713}
2714
2715func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
2716	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)
2717	if r1 == socket_error {
2718		if e1 != 0 {
2719			err = errnoErr(e1)
2720		} else {
2721			err = syscall.EINVAL
2722		}
2723	}
2724	return
2725}
2726
2727func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
2728	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)))
2729	if r1 == socket_error {
2730		if e1 != 0 {
2731			err = errnoErr(e1)
2732		} else {
2733			err = syscall.EINVAL
2734		}
2735	}
2736	return
2737}
2738
2739func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
2740	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)))
2741	if r1 == socket_error {
2742		if e1 != 0 {
2743			err = errnoErr(e1)
2744		} else {
2745			err = syscall.EINVAL
2746		}
2747	}
2748	return
2749}
2750
2751func GetHostByName(name string) (h *Hostent, err error) {
2752	var _p0 *byte
2753	_p0, err = syscall.BytePtrFromString(name)
2754	if err != nil {
2755		return
2756	}
2757	return _GetHostByName(_p0)
2758}
2759
2760func _GetHostByName(name *byte) (h *Hostent, err error) {
2761	r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
2762	h = (*Hostent)(unsafe.Pointer(r0))
2763	if h == nil {
2764		if e1 != 0 {
2765			err = errnoErr(e1)
2766		} else {
2767			err = syscall.EINVAL
2768		}
2769	}
2770	return
2771}
2772
2773func GetServByName(name string, proto string) (s *Servent, err error) {
2774	var _p0 *byte
2775	_p0, err = syscall.BytePtrFromString(name)
2776	if err != nil {
2777		return
2778	}
2779	var _p1 *byte
2780	_p1, err = syscall.BytePtrFromString(proto)
2781	if err != nil {
2782		return
2783	}
2784	return _GetServByName(_p0, _p1)
2785}
2786
2787func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
2788	r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
2789	s = (*Servent)(unsafe.Pointer(r0))
2790	if s == nil {
2791		if e1 != 0 {
2792			err = errnoErr(e1)
2793		} else {
2794			err = syscall.EINVAL
2795		}
2796	}
2797	return
2798}
2799
2800func Ntohs(netshort uint16) (u uint16) {
2801	r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
2802	u = uint16(r0)
2803	return
2804}
2805
2806func GetProtoByName(name string) (p *Protoent, err error) {
2807	var _p0 *byte
2808	_p0, err = syscall.BytePtrFromString(name)
2809	if err != nil {
2810		return
2811	}
2812	return _GetProtoByName(_p0)
2813}
2814
2815func _GetProtoByName(name *byte) (p *Protoent, err error) {
2816	r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
2817	p = (*Protoent)(unsafe.Pointer(r0))
2818	if p == nil {
2819		if e1 != 0 {
2820			err = errnoErr(e1)
2821		} else {
2822			err = syscall.EINVAL
2823		}
2824	}
2825	return
2826}
2827
2828func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
2829	var _p0 *uint16
2830	_p0, status = syscall.UTF16PtrFromString(name)
2831	if status != nil {
2832		return
2833	}
2834	return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
2835}
2836
2837func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
2838	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)))
2839	if r0 != 0 {
2840		status = syscall.Errno(r0)
2841	}
2842	return
2843}
2844
2845func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
2846	syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
2847	return
2848}
2849
2850func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
2851	r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
2852	same = r0 != 0
2853	return
2854}
2855
2856func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
2857	r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
2858	if r0 != 0 {
2859		sockerr = syscall.Errno(r0)
2860	}
2861	return
2862}
2863
2864func FreeAddrInfoW(addrinfo *AddrinfoW) {
2865	syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
2866	return
2867}
2868
2869func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
2870	r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
2871	if r0 != 0 {
2872		errcode = syscall.Errno(r0)
2873	}
2874	return
2875}
2876
2877func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
2878	r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
2879	if r0 != 0 {
2880		errcode = syscall.Errno(r0)
2881	}
2882	return
2883}
2884
2885func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
2886	r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
2887	if r1 == 0 {
2888		if e1 != 0 {
2889			err = errnoErr(e1)
2890		} else {
2891			err = syscall.EINVAL
2892		}
2893	}
2894	return
2895}
2896
2897func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
2898	r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
2899	n = int32(r0)
2900	if n == -1 {
2901		if e1 != 0 {
2902			err = errnoErr(e1)
2903		} else {
2904			err = syscall.EINVAL
2905		}
2906	}
2907	return
2908}
2909
2910func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
2911	r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
2912	if r0 != 0 {
2913		errcode = syscall.Errno(r0)
2914	}
2915	return
2916}
2917
2918func GetACP() (acp uint32) {
2919	r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
2920	acp = uint32(r0)
2921	return
2922}
2923
2924func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
2925	r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
2926	nwrite = int32(r0)
2927	if nwrite == 0 {
2928		if e1 != 0 {
2929			err = errnoErr(e1)
2930		} else {
2931			err = syscall.EINVAL
2932		}
2933	}
2934	return
2935}
2936
2937func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
2938	r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
2939	if r1&0xff == 0 {
2940		if e1 != 0 {
2941			err = errnoErr(e1)
2942		} else {
2943			err = syscall.EINVAL
2944		}
2945	}
2946	return
2947}
2948
2949func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
2950	r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
2951	if r1&0xff == 0 {
2952		if e1 != 0 {
2953			err = errnoErr(e1)
2954		} else {
2955			err = syscall.EINVAL
2956		}
2957	}
2958	return
2959}
2960
2961func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
2962	r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
2963	if r0 != 0 {
2964		neterr = syscall.Errno(r0)
2965	}
2966	return
2967}
2968
2969func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
2970	r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
2971	if r0 != 0 {
2972		neterr = syscall.Errno(r0)
2973	}
2974	return
2975}
2976
2977func NetApiBufferFree(buf *byte) (neterr error) {
2978	r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
2979	if r0 != 0 {
2980		neterr = syscall.Errno(r0)
2981	}
2982	return
2983}
2984
2985func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
2986	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)
2987	if r1 == 0 {
2988		if e1 != 0 {
2989			err = errnoErr(e1)
2990		} else {
2991			err = syscall.EINVAL
2992		}
2993	}
2994	return
2995}
2996
2997func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
2998	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)
2999	if r1 == 0 {
3000		if e1 != 0 {
3001			err = errnoErr(e1)
3002		} else {
3003			err = syscall.EINVAL
3004		}
3005	}
3006	return
3007}
3008
3009func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
3010	r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
3011	if r1 == 0 {
3012		if e1 != 0 {
3013			err = errnoErr(e1)
3014		} else {
3015			err = syscall.EINVAL
3016		}
3017	}
3018	return
3019}
3020
3021func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
3022	r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
3023	if r1 == 0 {
3024		if e1 != 0 {
3025			err = errnoErr(e1)
3026		} else {
3027			err = syscall.EINVAL
3028		}
3029	}
3030	return
3031}
3032
3033func GetLengthSid(sid *SID) (len uint32) {
3034	r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
3035	len = uint32(r0)
3036	return
3037}
3038
3039func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
3040	r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
3041	if r1 == 0 {
3042		if e1 != 0 {
3043			err = errnoErr(e1)
3044		} else {
3045			err = syscall.EINVAL
3046		}
3047	}
3048	return
3049}
3050
3051func 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) {
3052	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)
3053	if r1 == 0 {
3054		if e1 != 0 {
3055			err = errnoErr(e1)
3056		} else {
3057			err = syscall.EINVAL
3058		}
3059	}
3060	return
3061}
3062
3063func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {
3064	r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)
3065	if r1 == 0 {
3066		if e1 != 0 {
3067			err = errnoErr(e1)
3068		} else {
3069			err = syscall.EINVAL
3070		}
3071	}
3072	return
3073}
3074
3075func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {
3076	r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)
3077	isWellKnown = r0 != 0
3078	return
3079}
3080
3081func FreeSid(sid *SID) (err error) {
3082	r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
3083	if r1 != 0 {
3084		if e1 != 0 {
3085			err = errnoErr(e1)
3086		} else {
3087			err = syscall.EINVAL
3088		}
3089	}
3090	return
3091}
3092
3093func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
3094	r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
3095	isEqual = r0 != 0
3096	return
3097}
3098
3099func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {
3100	r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
3101	authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))
3102	return
3103}
3104
3105func getSidSubAuthorityCount(sid *SID) (count *uint8) {
3106	r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
3107	count = (*uint8)(unsafe.Pointer(r0))
3108	return
3109}
3110
3111func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {
3112	r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)
3113	subAuthority = (*uint32)(unsafe.Pointer(r0))
3114	return
3115}
3116
3117func isValidSid(sid *SID) (isValid bool) {
3118	r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
3119	isValid = r0 != 0
3120	return
3121}
3122
3123func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
3124	r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
3125	if r1 == 0 {
3126		if e1 != 0 {
3127			err = errnoErr(e1)
3128		} else {
3129			err = syscall.EINVAL
3130		}
3131	}
3132	return
3133}
3134
3135func OpenProcessToken(process Handle, access uint32, token *Token) (err error) {
3136	r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))
3137	if r1 == 0 {
3138		if e1 != 0 {
3139			err = errnoErr(e1)
3140		} else {
3141			err = syscall.EINVAL
3142		}
3143	}
3144	return
3145}
3146
3147func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {
3148	var _p0 uint32
3149	if openAsSelf {
3150		_p0 = 1
3151	} else {
3152		_p0 = 0
3153	}
3154	r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
3155	if r1 == 0 {
3156		if e1 != 0 {
3157			err = errnoErr(e1)
3158		} else {
3159			err = syscall.EINVAL
3160		}
3161	}
3162	return
3163}
3164
3165func ImpersonateSelf(impersonationlevel uint32) (err error) {
3166	r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
3167	if r1 == 0 {
3168		if e1 != 0 {
3169			err = errnoErr(e1)
3170		} else {
3171			err = syscall.EINVAL
3172		}
3173	}
3174	return
3175}
3176
3177func RevertToSelf() (err error) {
3178	r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
3179	if r1 == 0 {
3180		if e1 != 0 {
3181			err = errnoErr(e1)
3182		} else {
3183			err = syscall.EINVAL
3184		}
3185	}
3186	return
3187}
3188
3189func SetThreadToken(thread *Handle, token Token) (err error) {
3190	r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)
3191	if r1 == 0 {
3192		if e1 != 0 {
3193			err = errnoErr(e1)
3194		} else {
3195			err = syscall.EINVAL
3196		}
3197	}
3198	return
3199}
3200
3201func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
3202	r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
3203	if r1 == 0 {
3204		if e1 != 0 {
3205			err = errnoErr(e1)
3206		} else {
3207			err = syscall.EINVAL
3208		}
3209	}
3210	return
3211}
3212
3213func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {
3214	var _p0 uint32
3215	if disableAllPrivileges {
3216		_p0 = 1
3217	} else {
3218		_p0 = 0
3219	}
3220	r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
3221	if r1 == 0 {
3222		if e1 != 0 {
3223			err = errnoErr(e1)
3224		} else {
3225			err = syscall.EINVAL
3226		}
3227	}
3228	return
3229}
3230
3231func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
3232	var _p0 uint32
3233	if resetToDefault {
3234		_p0 = 1
3235	} else {
3236		_p0 = 0
3237	}
3238	r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
3239	if r1 == 0 {
3240		if e1 != 0 {
3241			err = errnoErr(e1)
3242		} else {
3243			err = syscall.EINVAL
3244		}
3245	}
3246	return
3247}
3248
3249func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
3250	r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
3251	if r1 == 0 {
3252		if e1 != 0 {
3253			err = errnoErr(e1)
3254		} else {
3255			err = syscall.EINVAL
3256		}
3257	}
3258	return
3259}
3260
3261func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {
3262	r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)
3263	if r1 == 0 {
3264		if e1 != 0 {
3265			err = errnoErr(e1)
3266		} else {
3267			err = syscall.EINVAL
3268		}
3269	}
3270	return
3271}
3272
3273func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {
3274	r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))
3275	if r1 == 0 {
3276		if e1 != 0 {
3277			err = errnoErr(e1)
3278		} else {
3279			err = syscall.EINVAL
3280		}
3281	}
3282	return
3283}
3284
3285func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
3286	r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
3287	if r1 == 0 {
3288		if e1 != 0 {
3289			err = errnoErr(e1)
3290		} else {
3291			err = syscall.EINVAL
3292		}
3293	}
3294	return
3295}
3296
3297func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
3298	r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
3299	len = uint32(r0)
3300	if len == 0 {
3301		if e1 != 0 {
3302			err = errnoErr(e1)
3303		} else {
3304			err = syscall.EINVAL
3305		}
3306	}
3307	return
3308}
3309
3310func WTSQueryUserToken(session uint32, token *Token) (err error) {
3311	r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)
3312	if r1 == 0 {
3313		if e1 != 0 {
3314			err = errnoErr(e1)
3315		} else {
3316			err = syscall.EINVAL
3317		}
3318	}
3319	return
3320}
3321
3322func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {
3323	r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)
3324	if r1 == 0 {
3325		if e1 != 0 {
3326			err = errnoErr(e1)
3327		} else {
3328			err = syscall.EINVAL
3329		}
3330	}
3331	return
3332}
3333
3334func WTSFreeMemory(ptr uintptr) {
3335	syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
3336	return
3337}
3338