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	errERROR_EINVAL     error = syscall.EINVAL
21)
22
23// errnoErr returns common boxed Errno values, to prevent
24// allocations at runtime.
25func errnoErr(e syscall.Errno) error {
26	switch e {
27	case 0:
28		return errERROR_EINVAL
29	case errnoERROR_IO_PENDING:
30		return errERROR_IO_PENDING
31	}
32	// TODO: add more here, after collecting data on the common
33	// error values see on Windows. (perhaps when running
34	// all.bat?)
35	return e
36}
37
38var (
39	modCfgMgr32 = NewLazySystemDLL("CfgMgr32.dll")
40	modadvapi32 = NewLazySystemDLL("advapi32.dll")
41	modcrypt32  = NewLazySystemDLL("crypt32.dll")
42	moddnsapi   = NewLazySystemDLL("dnsapi.dll")
43	modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
44	modkernel32 = NewLazySystemDLL("kernel32.dll")
45	modmswsock  = NewLazySystemDLL("mswsock.dll")
46	modnetapi32 = NewLazySystemDLL("netapi32.dll")
47	modntdll    = NewLazySystemDLL("ntdll.dll")
48	modole32    = NewLazySystemDLL("ole32.dll")
49	modpsapi    = NewLazySystemDLL("psapi.dll")
50	modsechost  = NewLazySystemDLL("sechost.dll")
51	modsecur32  = NewLazySystemDLL("secur32.dll")
52	modsetupapi = NewLazySystemDLL("setupapi.dll")
53	modshell32  = NewLazySystemDLL("shell32.dll")
54	moduser32   = NewLazySystemDLL("user32.dll")
55	moduserenv  = NewLazySystemDLL("userenv.dll")
56	modversion  = NewLazySystemDLL("version.dll")
57	modwintrust = NewLazySystemDLL("wintrust.dll")
58	modws2_32   = NewLazySystemDLL("ws2_32.dll")
59	modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
60
61	procCM_Get_DevNode_Status                                = modCfgMgr32.NewProc("CM_Get_DevNode_Status")
62	procCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc("CM_Get_Device_Interface_ListW")
63	procCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc("CM_Get_Device_Interface_List_SizeW")
64	procCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc("CM_MapCrToWin32Err")
65	procAdjustTokenGroups                                    = modadvapi32.NewProc("AdjustTokenGroups")
66	procAdjustTokenPrivileges                                = modadvapi32.NewProc("AdjustTokenPrivileges")
67	procAllocateAndInitializeSid                             = modadvapi32.NewProc("AllocateAndInitializeSid")
68	procBuildSecurityDescriptorW                             = modadvapi32.NewProc("BuildSecurityDescriptorW")
69	procChangeServiceConfig2W                                = modadvapi32.NewProc("ChangeServiceConfig2W")
70	procChangeServiceConfigW                                 = modadvapi32.NewProc("ChangeServiceConfigW")
71	procCheckTokenMembership                                 = modadvapi32.NewProc("CheckTokenMembership")
72	procCloseServiceHandle                                   = modadvapi32.NewProc("CloseServiceHandle")
73	procControlService                                       = modadvapi32.NewProc("ControlService")
74	procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
75	procConvertSidToStringSidW                               = modadvapi32.NewProc("ConvertSidToStringSidW")
76	procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
77	procConvertStringSidToSidW                               = modadvapi32.NewProc("ConvertStringSidToSidW")
78	procCopySid                                              = modadvapi32.NewProc("CopySid")
79	procCreateProcessAsUserW                                 = modadvapi32.NewProc("CreateProcessAsUserW")
80	procCreateServiceW                                       = modadvapi32.NewProc("CreateServiceW")
81	procCreateWellKnownSid                                   = modadvapi32.NewProc("CreateWellKnownSid")
82	procCryptAcquireContextW                                 = modadvapi32.NewProc("CryptAcquireContextW")
83	procCryptGenRandom                                       = modadvapi32.NewProc("CryptGenRandom")
84	procCryptReleaseContext                                  = modadvapi32.NewProc("CryptReleaseContext")
85	procDeleteService                                        = modadvapi32.NewProc("DeleteService")
86	procDeregisterEventSource                                = modadvapi32.NewProc("DeregisterEventSource")
87	procDuplicateTokenEx                                     = modadvapi32.NewProc("DuplicateTokenEx")
88	procEnumServicesStatusExW                                = modadvapi32.NewProc("EnumServicesStatusExW")
89	procEqualSid                                             = modadvapi32.NewProc("EqualSid")
90	procFreeSid                                              = modadvapi32.NewProc("FreeSid")
91	procGetLengthSid                                         = modadvapi32.NewProc("GetLengthSid")
92	procGetNamedSecurityInfoW                                = modadvapi32.NewProc("GetNamedSecurityInfoW")
93	procGetSecurityDescriptorControl                         = modadvapi32.NewProc("GetSecurityDescriptorControl")
94	procGetSecurityDescriptorDacl                            = modadvapi32.NewProc("GetSecurityDescriptorDacl")
95	procGetSecurityDescriptorGroup                           = modadvapi32.NewProc("GetSecurityDescriptorGroup")
96	procGetSecurityDescriptorLength                          = modadvapi32.NewProc("GetSecurityDescriptorLength")
97	procGetSecurityDescriptorOwner                           = modadvapi32.NewProc("GetSecurityDescriptorOwner")
98	procGetSecurityDescriptorRMControl                       = modadvapi32.NewProc("GetSecurityDescriptorRMControl")
99	procGetSecurityDescriptorSacl                            = modadvapi32.NewProc("GetSecurityDescriptorSacl")
100	procGetSecurityInfo                                      = modadvapi32.NewProc("GetSecurityInfo")
101	procGetSidIdentifierAuthority                            = modadvapi32.NewProc("GetSidIdentifierAuthority")
102	procGetSidSubAuthority                                   = modadvapi32.NewProc("GetSidSubAuthority")
103	procGetSidSubAuthorityCount                              = modadvapi32.NewProc("GetSidSubAuthorityCount")
104	procGetTokenInformation                                  = modadvapi32.NewProc("GetTokenInformation")
105	procImpersonateSelf                                      = modadvapi32.NewProc("ImpersonateSelf")
106	procInitializeSecurityDescriptor                         = modadvapi32.NewProc("InitializeSecurityDescriptor")
107	procInitiateSystemShutdownExW                            = modadvapi32.NewProc("InitiateSystemShutdownExW")
108	procIsTokenRestricted                                    = modadvapi32.NewProc("IsTokenRestricted")
109	procIsValidSecurityDescriptor                            = modadvapi32.NewProc("IsValidSecurityDescriptor")
110	procIsValidSid                                           = modadvapi32.NewProc("IsValidSid")
111	procIsWellKnownSid                                       = modadvapi32.NewProc("IsWellKnownSid")
112	procLookupAccountNameW                                   = modadvapi32.NewProc("LookupAccountNameW")
113	procLookupAccountSidW                                    = modadvapi32.NewProc("LookupAccountSidW")
114	procLookupPrivilegeValueW                                = modadvapi32.NewProc("LookupPrivilegeValueW")
115	procMakeAbsoluteSD                                       = modadvapi32.NewProc("MakeAbsoluteSD")
116	procMakeSelfRelativeSD                                   = modadvapi32.NewProc("MakeSelfRelativeSD")
117	procNotifyServiceStatusChangeW                           = modadvapi32.NewProc("NotifyServiceStatusChangeW")
118	procOpenProcessToken                                     = modadvapi32.NewProc("OpenProcessToken")
119	procOpenSCManagerW                                       = modadvapi32.NewProc("OpenSCManagerW")
120	procOpenServiceW                                         = modadvapi32.NewProc("OpenServiceW")
121	procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken")
122	procQueryServiceConfig2W                                 = modadvapi32.NewProc("QueryServiceConfig2W")
123	procQueryServiceConfigW                                  = modadvapi32.NewProc("QueryServiceConfigW")
124	procQueryServiceDynamicInformation                       = modadvapi32.NewProc("QueryServiceDynamicInformation")
125	procQueryServiceLockStatusW                              = modadvapi32.NewProc("QueryServiceLockStatusW")
126	procQueryServiceStatus                                   = modadvapi32.NewProc("QueryServiceStatus")
127	procQueryServiceStatusEx                                 = modadvapi32.NewProc("QueryServiceStatusEx")
128	procRegCloseKey                                          = modadvapi32.NewProc("RegCloseKey")
129	procRegEnumKeyExW                                        = modadvapi32.NewProc("RegEnumKeyExW")
130	procRegNotifyChangeKeyValue                              = modadvapi32.NewProc("RegNotifyChangeKeyValue")
131	procRegOpenKeyExW                                        = modadvapi32.NewProc("RegOpenKeyExW")
132	procRegQueryInfoKeyW                                     = modadvapi32.NewProc("RegQueryInfoKeyW")
133	procRegQueryValueExW                                     = modadvapi32.NewProc("RegQueryValueExW")
134	procRegisterEventSourceW                                 = modadvapi32.NewProc("RegisterEventSourceW")
135	procRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW")
136	procReportEventW                                         = modadvapi32.NewProc("ReportEventW")
137	procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf")
138	procSetEntriesInAclW                                     = modadvapi32.NewProc("SetEntriesInAclW")
139	procSetKernelObjectSecurity                              = modadvapi32.NewProc("SetKernelObjectSecurity")
140	procSetNamedSecurityInfoW                                = modadvapi32.NewProc("SetNamedSecurityInfoW")
141	procSetSecurityDescriptorControl                         = modadvapi32.NewProc("SetSecurityDescriptorControl")
142	procSetSecurityDescriptorDacl                            = modadvapi32.NewProc("SetSecurityDescriptorDacl")
143	procSetSecurityDescriptorGroup                           = modadvapi32.NewProc("SetSecurityDescriptorGroup")
144	procSetSecurityDescriptorOwner                           = modadvapi32.NewProc("SetSecurityDescriptorOwner")
145	procSetSecurityDescriptorRMControl                       = modadvapi32.NewProc("SetSecurityDescriptorRMControl")
146	procSetSecurityDescriptorSacl                            = modadvapi32.NewProc("SetSecurityDescriptorSacl")
147	procSetSecurityInfo                                      = modadvapi32.NewProc("SetSecurityInfo")
148	procSetServiceStatus                                     = modadvapi32.NewProc("SetServiceStatus")
149	procSetThreadToken                                       = modadvapi32.NewProc("SetThreadToken")
150	procSetTokenInformation                                  = modadvapi32.NewProc("SetTokenInformation")
151	procStartServiceCtrlDispatcherW                          = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
152	procStartServiceW                                        = modadvapi32.NewProc("StartServiceW")
153	procCertAddCertificateContextToStore                     = modcrypt32.NewProc("CertAddCertificateContextToStore")
154	procCertCloseStore                                       = modcrypt32.NewProc("CertCloseStore")
155	procCertCreateCertificateContext                         = modcrypt32.NewProc("CertCreateCertificateContext")
156	procCertDeleteCertificateFromStore                       = modcrypt32.NewProc("CertDeleteCertificateFromStore")
157	procCertDuplicateCertificateContext                      = modcrypt32.NewProc("CertDuplicateCertificateContext")
158	procCertEnumCertificatesInStore                          = modcrypt32.NewProc("CertEnumCertificatesInStore")
159	procCertFindCertificateInStore                           = modcrypt32.NewProc("CertFindCertificateInStore")
160	procCertFindChainInStore                                 = modcrypt32.NewProc("CertFindChainInStore")
161	procCertFindExtension                                    = modcrypt32.NewProc("CertFindExtension")
162	procCertFreeCertificateChain                             = modcrypt32.NewProc("CertFreeCertificateChain")
163	procCertFreeCertificateContext                           = modcrypt32.NewProc("CertFreeCertificateContext")
164	procCertGetCertificateChain                              = modcrypt32.NewProc("CertGetCertificateChain")
165	procCertGetNameStringW                                   = modcrypt32.NewProc("CertGetNameStringW")
166	procCertOpenStore                                        = modcrypt32.NewProc("CertOpenStore")
167	procCertOpenSystemStoreW                                 = modcrypt32.NewProc("CertOpenSystemStoreW")
168	procCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
169	procCryptAcquireCertificatePrivateKey                    = modcrypt32.NewProc("CryptAcquireCertificatePrivateKey")
170	procCryptDecodeObject                                    = modcrypt32.NewProc("CryptDecodeObject")
171	procCryptProtectData                                     = modcrypt32.NewProc("CryptProtectData")
172	procCryptQueryObject                                     = modcrypt32.NewProc("CryptQueryObject")
173	procCryptUnprotectData                                   = modcrypt32.NewProc("CryptUnprotectData")
174	procPFXImportCertStore                                   = modcrypt32.NewProc("PFXImportCertStore")
175	procDnsNameCompare_W                                     = moddnsapi.NewProc("DnsNameCompare_W")
176	procDnsQuery_W                                           = moddnsapi.NewProc("DnsQuery_W")
177	procDnsRecordListFree                                    = moddnsapi.NewProc("DnsRecordListFree")
178	procGetAdaptersAddresses                                 = modiphlpapi.NewProc("GetAdaptersAddresses")
179	procGetAdaptersInfo                                      = modiphlpapi.NewProc("GetAdaptersInfo")
180	procGetIfEntry                                           = modiphlpapi.NewProc("GetIfEntry")
181	procAssignProcessToJobObject                             = modkernel32.NewProc("AssignProcessToJobObject")
182	procCancelIo                                             = modkernel32.NewProc("CancelIo")
183	procCancelIoEx                                           = modkernel32.NewProc("CancelIoEx")
184	procCloseHandle                                          = modkernel32.NewProc("CloseHandle")
185	procConnectNamedPipe                                     = modkernel32.NewProc("ConnectNamedPipe")
186	procCreateDirectoryW                                     = modkernel32.NewProc("CreateDirectoryW")
187	procCreateEventExW                                       = modkernel32.NewProc("CreateEventExW")
188	procCreateEventW                                         = modkernel32.NewProc("CreateEventW")
189	procCreateFileMappingW                                   = modkernel32.NewProc("CreateFileMappingW")
190	procCreateFileW                                          = modkernel32.NewProc("CreateFileW")
191	procCreateHardLinkW                                      = modkernel32.NewProc("CreateHardLinkW")
192	procCreateIoCompletionPort                               = modkernel32.NewProc("CreateIoCompletionPort")
193	procCreateJobObjectW                                     = modkernel32.NewProc("CreateJobObjectW")
194	procCreateMutexExW                                       = modkernel32.NewProc("CreateMutexExW")
195	procCreateMutexW                                         = modkernel32.NewProc("CreateMutexW")
196	procCreateNamedPipeW                                     = modkernel32.NewProc("CreateNamedPipeW")
197	procCreatePipe                                           = modkernel32.NewProc("CreatePipe")
198	procCreateProcessW                                       = modkernel32.NewProc("CreateProcessW")
199	procCreateSymbolicLinkW                                  = modkernel32.NewProc("CreateSymbolicLinkW")
200	procCreateToolhelp32Snapshot                             = modkernel32.NewProc("CreateToolhelp32Snapshot")
201	procDefineDosDeviceW                                     = modkernel32.NewProc("DefineDosDeviceW")
202	procDeleteFileW                                          = modkernel32.NewProc("DeleteFileW")
203	procDeleteProcThreadAttributeList                        = modkernel32.NewProc("DeleteProcThreadAttributeList")
204	procDeleteVolumeMountPointW                              = modkernel32.NewProc("DeleteVolumeMountPointW")
205	procDeviceIoControl                                      = modkernel32.NewProc("DeviceIoControl")
206	procDuplicateHandle                                      = modkernel32.NewProc("DuplicateHandle")
207	procExitProcess                                          = modkernel32.NewProc("ExitProcess")
208	procExpandEnvironmentStringsW                            = modkernel32.NewProc("ExpandEnvironmentStringsW")
209	procFindClose                                            = modkernel32.NewProc("FindClose")
210	procFindCloseChangeNotification                          = modkernel32.NewProc("FindCloseChangeNotification")
211	procFindFirstChangeNotificationW                         = modkernel32.NewProc("FindFirstChangeNotificationW")
212	procFindFirstFileW                                       = modkernel32.NewProc("FindFirstFileW")
213	procFindFirstVolumeMountPointW                           = modkernel32.NewProc("FindFirstVolumeMountPointW")
214	procFindFirstVolumeW                                     = modkernel32.NewProc("FindFirstVolumeW")
215	procFindNextChangeNotification                           = modkernel32.NewProc("FindNextChangeNotification")
216	procFindNextFileW                                        = modkernel32.NewProc("FindNextFileW")
217	procFindNextVolumeMountPointW                            = modkernel32.NewProc("FindNextVolumeMountPointW")
218	procFindNextVolumeW                                      = modkernel32.NewProc("FindNextVolumeW")
219	procFindResourceW                                        = modkernel32.NewProc("FindResourceW")
220	procFindVolumeClose                                      = modkernel32.NewProc("FindVolumeClose")
221	procFindVolumeMountPointClose                            = modkernel32.NewProc("FindVolumeMountPointClose")
222	procFlushFileBuffers                                     = modkernel32.NewProc("FlushFileBuffers")
223	procFlushViewOfFile                                      = modkernel32.NewProc("FlushViewOfFile")
224	procFormatMessageW                                       = modkernel32.NewProc("FormatMessageW")
225	procFreeEnvironmentStringsW                              = modkernel32.NewProc("FreeEnvironmentStringsW")
226	procFreeLibrary                                          = modkernel32.NewProc("FreeLibrary")
227	procGenerateConsoleCtrlEvent                             = modkernel32.NewProc("GenerateConsoleCtrlEvent")
228	procGetACP                                               = modkernel32.NewProc("GetACP")
229	procGetActiveProcessorCount                              = modkernel32.NewProc("GetActiveProcessorCount")
230	procGetCommTimeouts                                      = modkernel32.NewProc("GetCommTimeouts")
231	procGetCommandLineW                                      = modkernel32.NewProc("GetCommandLineW")
232	procGetComputerNameExW                                   = modkernel32.NewProc("GetComputerNameExW")
233	procGetComputerNameW                                     = modkernel32.NewProc("GetComputerNameW")
234	procGetConsoleMode                                       = modkernel32.NewProc("GetConsoleMode")
235	procGetConsoleScreenBufferInfo                           = modkernel32.NewProc("GetConsoleScreenBufferInfo")
236	procGetCurrentDirectoryW                                 = modkernel32.NewProc("GetCurrentDirectoryW")
237	procGetCurrentProcessId                                  = modkernel32.NewProc("GetCurrentProcessId")
238	procGetCurrentThreadId                                   = modkernel32.NewProc("GetCurrentThreadId")
239	procGetDiskFreeSpaceExW                                  = modkernel32.NewProc("GetDiskFreeSpaceExW")
240	procGetDriveTypeW                                        = modkernel32.NewProc("GetDriveTypeW")
241	procGetEnvironmentStringsW                               = modkernel32.NewProc("GetEnvironmentStringsW")
242	procGetEnvironmentVariableW                              = modkernel32.NewProc("GetEnvironmentVariableW")
243	procGetExitCodeProcess                                   = modkernel32.NewProc("GetExitCodeProcess")
244	procGetFileAttributesExW                                 = modkernel32.NewProc("GetFileAttributesExW")
245	procGetFileAttributesW                                   = modkernel32.NewProc("GetFileAttributesW")
246	procGetFileInformationByHandle                           = modkernel32.NewProc("GetFileInformationByHandle")
247	procGetFileInformationByHandleEx                         = modkernel32.NewProc("GetFileInformationByHandleEx")
248	procGetFileType                                          = modkernel32.NewProc("GetFileType")
249	procGetFinalPathNameByHandleW                            = modkernel32.NewProc("GetFinalPathNameByHandleW")
250	procGetFullPathNameW                                     = modkernel32.NewProc("GetFullPathNameW")
251	procGetLastError                                         = modkernel32.NewProc("GetLastError")
252	procGetLogicalDriveStringsW                              = modkernel32.NewProc("GetLogicalDriveStringsW")
253	procGetLogicalDrives                                     = modkernel32.NewProc("GetLogicalDrives")
254	procGetLongPathNameW                                     = modkernel32.NewProc("GetLongPathNameW")
255	procGetMaximumProcessorCount                             = modkernel32.NewProc("GetMaximumProcessorCount")
256	procGetModuleFileNameW                                   = modkernel32.NewProc("GetModuleFileNameW")
257	procGetModuleHandleExW                                   = modkernel32.NewProc("GetModuleHandleExW")
258	procGetNamedPipeHandleStateW                             = modkernel32.NewProc("GetNamedPipeHandleStateW")
259	procGetNamedPipeInfo                                     = modkernel32.NewProc("GetNamedPipeInfo")
260	procGetOverlappedResult                                  = modkernel32.NewProc("GetOverlappedResult")
261	procGetPriorityClass                                     = modkernel32.NewProc("GetPriorityClass")
262	procGetProcAddress                                       = modkernel32.NewProc("GetProcAddress")
263	procGetProcessId                                         = modkernel32.NewProc("GetProcessId")
264	procGetProcessPreferredUILanguages                       = modkernel32.NewProc("GetProcessPreferredUILanguages")
265	procGetProcessShutdownParameters                         = modkernel32.NewProc("GetProcessShutdownParameters")
266	procGetProcessTimes                                      = modkernel32.NewProc("GetProcessTimes")
267	procGetProcessWorkingSetSizeEx                           = modkernel32.NewProc("GetProcessWorkingSetSizeEx")
268	procGetQueuedCompletionStatus                            = modkernel32.NewProc("GetQueuedCompletionStatus")
269	procGetShortPathNameW                                    = modkernel32.NewProc("GetShortPathNameW")
270	procGetStartupInfoW                                      = modkernel32.NewProc("GetStartupInfoW")
271	procGetStdHandle                                         = modkernel32.NewProc("GetStdHandle")
272	procGetSystemDirectoryW                                  = modkernel32.NewProc("GetSystemDirectoryW")
273	procGetSystemPreferredUILanguages                        = modkernel32.NewProc("GetSystemPreferredUILanguages")
274	procGetSystemTimeAsFileTime                              = modkernel32.NewProc("GetSystemTimeAsFileTime")
275	procGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
276	procGetSystemWindowsDirectoryW                           = modkernel32.NewProc("GetSystemWindowsDirectoryW")
277	procGetTempPathW                                         = modkernel32.NewProc("GetTempPathW")
278	procGetThreadPreferredUILanguages                        = modkernel32.NewProc("GetThreadPreferredUILanguages")
279	procGetTickCount64                                       = modkernel32.NewProc("GetTickCount64")
280	procGetTimeZoneInformation                               = modkernel32.NewProc("GetTimeZoneInformation")
281	procGetUserPreferredUILanguages                          = modkernel32.NewProc("GetUserPreferredUILanguages")
282	procGetVersion                                           = modkernel32.NewProc("GetVersion")
283	procGetVolumeInformationByHandleW                        = modkernel32.NewProc("GetVolumeInformationByHandleW")
284	procGetVolumeInformationW                                = modkernel32.NewProc("GetVolumeInformationW")
285	procGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
286	procGetVolumePathNameW                                   = modkernel32.NewProc("GetVolumePathNameW")
287	procGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
288	procGetWindowsDirectoryW                                 = modkernel32.NewProc("GetWindowsDirectoryW")
289	procInitializeProcThreadAttributeList                    = modkernel32.NewProc("InitializeProcThreadAttributeList")
290	procIsWow64Process                                       = modkernel32.NewProc("IsWow64Process")
291	procIsWow64Process2                                      = modkernel32.NewProc("IsWow64Process2")
292	procLoadLibraryExW                                       = modkernel32.NewProc("LoadLibraryExW")
293	procLoadLibraryW                                         = modkernel32.NewProc("LoadLibraryW")
294	procLoadResource                                         = modkernel32.NewProc("LoadResource")
295	procLocalAlloc                                           = modkernel32.NewProc("LocalAlloc")
296	procLocalFree                                            = modkernel32.NewProc("LocalFree")
297	procLockFileEx                                           = modkernel32.NewProc("LockFileEx")
298	procLockResource                                         = modkernel32.NewProc("LockResource")
299	procMapViewOfFile                                        = modkernel32.NewProc("MapViewOfFile")
300	procModule32FirstW                                       = modkernel32.NewProc("Module32FirstW")
301	procModule32NextW                                        = modkernel32.NewProc("Module32NextW")
302	procMoveFileExW                                          = modkernel32.NewProc("MoveFileExW")
303	procMoveFileW                                            = modkernel32.NewProc("MoveFileW")
304	procMultiByteToWideChar                                  = modkernel32.NewProc("MultiByteToWideChar")
305	procOpenEventW                                           = modkernel32.NewProc("OpenEventW")
306	procOpenMutexW                                           = modkernel32.NewProc("OpenMutexW")
307	procOpenProcess                                          = modkernel32.NewProc("OpenProcess")
308	procOpenThread                                           = modkernel32.NewProc("OpenThread")
309	procPostQueuedCompletionStatus                           = modkernel32.NewProc("PostQueuedCompletionStatus")
310	procProcess32FirstW                                      = modkernel32.NewProc("Process32FirstW")
311	procProcess32NextW                                       = modkernel32.NewProc("Process32NextW")
312	procProcessIdToSessionId                                 = modkernel32.NewProc("ProcessIdToSessionId")
313	procPulseEvent                                           = modkernel32.NewProc("PulseEvent")
314	procQueryDosDeviceW                                      = modkernel32.NewProc("QueryDosDeviceW")
315	procQueryFullProcessImageNameW                           = modkernel32.NewProc("QueryFullProcessImageNameW")
316	procQueryInformationJobObject                            = modkernel32.NewProc("QueryInformationJobObject")
317	procReadConsoleW                                         = modkernel32.NewProc("ReadConsoleW")
318	procReadDirectoryChangesW                                = modkernel32.NewProc("ReadDirectoryChangesW")
319	procReadFile                                             = modkernel32.NewProc("ReadFile")
320	procReadProcessMemory                                    = modkernel32.NewProc("ReadProcessMemory")
321	procReleaseMutex                                         = modkernel32.NewProc("ReleaseMutex")
322	procRemoveDirectoryW                                     = modkernel32.NewProc("RemoveDirectoryW")
323	procResetEvent                                           = modkernel32.NewProc("ResetEvent")
324	procResumeThread                                         = modkernel32.NewProc("ResumeThread")
325	procSetCommTimeouts                                      = modkernel32.NewProc("SetCommTimeouts")
326	procSetConsoleCursorPosition                             = modkernel32.NewProc("SetConsoleCursorPosition")
327	procSetConsoleMode                                       = modkernel32.NewProc("SetConsoleMode")
328	procSetCurrentDirectoryW                                 = modkernel32.NewProc("SetCurrentDirectoryW")
329	procSetDefaultDllDirectories                             = modkernel32.NewProc("SetDefaultDllDirectories")
330	procSetDllDirectoryW                                     = modkernel32.NewProc("SetDllDirectoryW")
331	procSetEndOfFile                                         = modkernel32.NewProc("SetEndOfFile")
332	procSetEnvironmentVariableW                              = modkernel32.NewProc("SetEnvironmentVariableW")
333	procSetErrorMode                                         = modkernel32.NewProc("SetErrorMode")
334	procSetEvent                                             = modkernel32.NewProc("SetEvent")
335	procSetFileAttributesW                                   = modkernel32.NewProc("SetFileAttributesW")
336	procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes")
337	procSetFileInformationByHandle                           = modkernel32.NewProc("SetFileInformationByHandle")
338	procSetFilePointer                                       = modkernel32.NewProc("SetFilePointer")
339	procSetFileTime                                          = modkernel32.NewProc("SetFileTime")
340	procSetHandleInformation                                 = modkernel32.NewProc("SetHandleInformation")
341	procSetInformationJobObject                              = modkernel32.NewProc("SetInformationJobObject")
342	procSetNamedPipeHandleState                              = modkernel32.NewProc("SetNamedPipeHandleState")
343	procSetPriorityClass                                     = modkernel32.NewProc("SetPriorityClass")
344	procSetProcessPriorityBoost                              = modkernel32.NewProc("SetProcessPriorityBoost")
345	procSetProcessShutdownParameters                         = modkernel32.NewProc("SetProcessShutdownParameters")
346	procSetProcessWorkingSetSizeEx                           = modkernel32.NewProc("SetProcessWorkingSetSizeEx")
347	procSetStdHandle                                         = modkernel32.NewProc("SetStdHandle")
348	procSetVolumeLabelW                                      = modkernel32.NewProc("SetVolumeLabelW")
349	procSetVolumeMountPointW                                 = modkernel32.NewProc("SetVolumeMountPointW")
350	procSizeofResource                                       = modkernel32.NewProc("SizeofResource")
351	procSleepEx                                              = modkernel32.NewProc("SleepEx")
352	procTerminateJobObject                                   = modkernel32.NewProc("TerminateJobObject")
353	procTerminateProcess                                     = modkernel32.NewProc("TerminateProcess")
354	procThread32First                                        = modkernel32.NewProc("Thread32First")
355	procThread32Next                                         = modkernel32.NewProc("Thread32Next")
356	procUnlockFileEx                                         = modkernel32.NewProc("UnlockFileEx")
357	procUnmapViewOfFile                                      = modkernel32.NewProc("UnmapViewOfFile")
358	procUpdateProcThreadAttribute                            = modkernel32.NewProc("UpdateProcThreadAttribute")
359	procVirtualAlloc                                         = modkernel32.NewProc("VirtualAlloc")
360	procVirtualFree                                          = modkernel32.NewProc("VirtualFree")
361	procVirtualLock                                          = modkernel32.NewProc("VirtualLock")
362	procVirtualProtect                                       = modkernel32.NewProc("VirtualProtect")
363	procVirtualProtectEx                                     = modkernel32.NewProc("VirtualProtectEx")
364	procVirtualQuery                                         = modkernel32.NewProc("VirtualQuery")
365	procVirtualQueryEx                                       = modkernel32.NewProc("VirtualQueryEx")
366	procVirtualUnlock                                        = modkernel32.NewProc("VirtualUnlock")
367	procWTSGetActiveConsoleSessionId                         = modkernel32.NewProc("WTSGetActiveConsoleSessionId")
368	procWaitForMultipleObjects                               = modkernel32.NewProc("WaitForMultipleObjects")
369	procWaitForSingleObject                                  = modkernel32.NewProc("WaitForSingleObject")
370	procWriteConsoleW                                        = modkernel32.NewProc("WriteConsoleW")
371	procWriteFile                                            = modkernel32.NewProc("WriteFile")
372	procWriteProcessMemory                                   = modkernel32.NewProc("WriteProcessMemory")
373	procAcceptEx                                             = modmswsock.NewProc("AcceptEx")
374	procGetAcceptExSockaddrs                                 = modmswsock.NewProc("GetAcceptExSockaddrs")
375	procTransmitFile                                         = modmswsock.NewProc("TransmitFile")
376	procNetApiBufferFree                                     = modnetapi32.NewProc("NetApiBufferFree")
377	procNetGetJoinInformation                                = modnetapi32.NewProc("NetGetJoinInformation")
378	procNetUserGetInfo                                       = modnetapi32.NewProc("NetUserGetInfo")
379	procNtCreateFile                                         = modntdll.NewProc("NtCreateFile")
380	procNtCreateNamedPipeFile                                = modntdll.NewProc("NtCreateNamedPipeFile")
381	procNtQueryInformationProcess                            = modntdll.NewProc("NtQueryInformationProcess")
382	procNtQuerySystemInformation                             = modntdll.NewProc("NtQuerySystemInformation")
383	procNtSetInformationFile                                 = modntdll.NewProc("NtSetInformationFile")
384	procNtSetInformationProcess                              = modntdll.NewProc("NtSetInformationProcess")
385	procNtSetSystemInformation                               = modntdll.NewProc("NtSetSystemInformation")
386	procRtlAddFunctionTable                                  = modntdll.NewProc("RtlAddFunctionTable")
387	procRtlDefaultNpAcl                                      = modntdll.NewProc("RtlDefaultNpAcl")
388	procRtlDeleteFunctionTable                               = modntdll.NewProc("RtlDeleteFunctionTable")
389	procRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus")
390	procRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus")
391	procRtlGetCurrentPeb                                     = modntdll.NewProc("RtlGetCurrentPeb")
392	procRtlGetNtVersionNumbers                               = modntdll.NewProc("RtlGetNtVersionNumbers")
393	procRtlGetVersion                                        = modntdll.NewProc("RtlGetVersion")
394	procRtlInitString                                        = modntdll.NewProc("RtlInitString")
395	procRtlInitUnicodeString                                 = modntdll.NewProc("RtlInitUnicodeString")
396	procRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb")
397	procCLSIDFromString                                      = modole32.NewProc("CLSIDFromString")
398	procCoCreateGuid                                         = modole32.NewProc("CoCreateGuid")
399	procCoGetObject                                          = modole32.NewProc("CoGetObject")
400	procCoInitializeEx                                       = modole32.NewProc("CoInitializeEx")
401	procCoTaskMemFree                                        = modole32.NewProc("CoTaskMemFree")
402	procCoUninitialize                                       = modole32.NewProc("CoUninitialize")
403	procStringFromGUID2                                      = modole32.NewProc("StringFromGUID2")
404	procEnumProcessModules                                   = modpsapi.NewProc("EnumProcessModules")
405	procEnumProcessModulesEx                                 = modpsapi.NewProc("EnumProcessModulesEx")
406	procEnumProcesses                                        = modpsapi.NewProc("EnumProcesses")
407	procGetModuleBaseNameW                                   = modpsapi.NewProc("GetModuleBaseNameW")
408	procGetModuleFileNameExW                                 = modpsapi.NewProc("GetModuleFileNameExW")
409	procGetModuleInformation                                 = modpsapi.NewProc("GetModuleInformation")
410	procSubscribeServiceChangeNotifications                  = modsechost.NewProc("SubscribeServiceChangeNotifications")
411	procUnsubscribeServiceChangeNotifications                = modsechost.NewProc("UnsubscribeServiceChangeNotifications")
412	procGetUserNameExW                                       = modsecur32.NewProc("GetUserNameExW")
413	procTranslateNameW                                       = modsecur32.NewProc("TranslateNameW")
414	procSetupDiBuildDriverInfoList                           = modsetupapi.NewProc("SetupDiBuildDriverInfoList")
415	procSetupDiCallClassInstaller                            = modsetupapi.NewProc("SetupDiCallClassInstaller")
416	procSetupDiCancelDriverInfoSearch                        = modsetupapi.NewProc("SetupDiCancelDriverInfoSearch")
417	procSetupDiClassGuidsFromNameExW                         = modsetupapi.NewProc("SetupDiClassGuidsFromNameExW")
418	procSetupDiClassNameFromGuidExW                          = modsetupapi.NewProc("SetupDiClassNameFromGuidExW")
419	procSetupDiCreateDeviceInfoListExW                       = modsetupapi.NewProc("SetupDiCreateDeviceInfoListExW")
420	procSetupDiCreateDeviceInfoW                             = modsetupapi.NewProc("SetupDiCreateDeviceInfoW")
421	procSetupDiDestroyDeviceInfoList                         = modsetupapi.NewProc("SetupDiDestroyDeviceInfoList")
422	procSetupDiDestroyDriverInfoList                         = modsetupapi.NewProc("SetupDiDestroyDriverInfoList")
423	procSetupDiEnumDeviceInfo                                = modsetupapi.NewProc("SetupDiEnumDeviceInfo")
424	procSetupDiEnumDriverInfoW                               = modsetupapi.NewProc("SetupDiEnumDriverInfoW")
425	procSetupDiGetClassDevsExW                               = modsetupapi.NewProc("SetupDiGetClassDevsExW")
426	procSetupDiGetClassInstallParamsW                        = modsetupapi.NewProc("SetupDiGetClassInstallParamsW")
427	procSetupDiGetDeviceInfoListDetailW                      = modsetupapi.NewProc("SetupDiGetDeviceInfoListDetailW")
428	procSetupDiGetDeviceInstallParamsW                       = modsetupapi.NewProc("SetupDiGetDeviceInstallParamsW")
429	procSetupDiGetDeviceInstanceIdW                          = modsetupapi.NewProc("SetupDiGetDeviceInstanceIdW")
430	procSetupDiGetDevicePropertyW                            = modsetupapi.NewProc("SetupDiGetDevicePropertyW")
431	procSetupDiGetDeviceRegistryPropertyW                    = modsetupapi.NewProc("SetupDiGetDeviceRegistryPropertyW")
432	procSetupDiGetDriverInfoDetailW                          = modsetupapi.NewProc("SetupDiGetDriverInfoDetailW")
433	procSetupDiGetSelectedDevice                             = modsetupapi.NewProc("SetupDiGetSelectedDevice")
434	procSetupDiGetSelectedDriverW                            = modsetupapi.NewProc("SetupDiGetSelectedDriverW")
435	procSetupDiOpenDevRegKey                                 = modsetupapi.NewProc("SetupDiOpenDevRegKey")
436	procSetupDiSetClassInstallParamsW                        = modsetupapi.NewProc("SetupDiSetClassInstallParamsW")
437	procSetupDiSetDeviceInstallParamsW                       = modsetupapi.NewProc("SetupDiSetDeviceInstallParamsW")
438	procSetupDiSetDeviceRegistryPropertyW                    = modsetupapi.NewProc("SetupDiSetDeviceRegistryPropertyW")
439	procSetupDiSetSelectedDevice                             = modsetupapi.NewProc("SetupDiSetSelectedDevice")
440	procSetupDiSetSelectedDriverW                            = modsetupapi.NewProc("SetupDiSetSelectedDriverW")
441	procSetupUninstallOEMInfW                                = modsetupapi.NewProc("SetupUninstallOEMInfW")
442	procCommandLineToArgvW                                   = modshell32.NewProc("CommandLineToArgvW")
443	procSHGetKnownFolderPath                                 = modshell32.NewProc("SHGetKnownFolderPath")
444	procShellExecuteW                                        = modshell32.NewProc("ShellExecuteW")
445	procExitWindowsEx                                        = moduser32.NewProc("ExitWindowsEx")
446	procGetShellWindow                                       = moduser32.NewProc("GetShellWindow")
447	procGetWindowThreadProcessId                             = moduser32.NewProc("GetWindowThreadProcessId")
448	procMessageBoxW                                          = moduser32.NewProc("MessageBoxW")
449	procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock")
450	procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock")
451	procGetUserProfileDirectoryW                             = moduserenv.NewProc("GetUserProfileDirectoryW")
452	procGetFileVersionInfoSizeW                              = modversion.NewProc("GetFileVersionInfoSizeW")
453	procGetFileVersionInfoW                                  = modversion.NewProc("GetFileVersionInfoW")
454	procVerQueryValueW                                       = modversion.NewProc("VerQueryValueW")
455	procWinVerifyTrustEx                                     = modwintrust.NewProc("WinVerifyTrustEx")
456	procFreeAddrInfoW                                        = modws2_32.NewProc("FreeAddrInfoW")
457	procGetAddrInfoW                                         = modws2_32.NewProc("GetAddrInfoW")
458	procWSACleanup                                           = modws2_32.NewProc("WSACleanup")
459	procWSAEnumProtocolsW                                    = modws2_32.NewProc("WSAEnumProtocolsW")
460	procWSAGetOverlappedResult                               = modws2_32.NewProc("WSAGetOverlappedResult")
461	procWSAIoctl                                             = modws2_32.NewProc("WSAIoctl")
462	procWSARecv                                              = modws2_32.NewProc("WSARecv")
463	procWSARecvFrom                                          = modws2_32.NewProc("WSARecvFrom")
464	procWSASend                                              = modws2_32.NewProc("WSASend")
465	procWSASendTo                                            = modws2_32.NewProc("WSASendTo")
466	procWSASocketW                                           = modws2_32.NewProc("WSASocketW")
467	procWSAStartup                                           = modws2_32.NewProc("WSAStartup")
468	procbind                                                 = modws2_32.NewProc("bind")
469	procclosesocket                                          = modws2_32.NewProc("closesocket")
470	procconnect                                              = modws2_32.NewProc("connect")
471	procgethostbyname                                        = modws2_32.NewProc("gethostbyname")
472	procgetpeername                                          = modws2_32.NewProc("getpeername")
473	procgetprotobyname                                       = modws2_32.NewProc("getprotobyname")
474	procgetservbyname                                        = modws2_32.NewProc("getservbyname")
475	procgetsockname                                          = modws2_32.NewProc("getsockname")
476	procgetsockopt                                           = modws2_32.NewProc("getsockopt")
477	proclisten                                               = modws2_32.NewProc("listen")
478	procntohs                                                = modws2_32.NewProc("ntohs")
479	procrecvfrom                                             = modws2_32.NewProc("recvfrom")
480	procsendto                                               = modws2_32.NewProc("sendto")
481	procsetsockopt                                           = modws2_32.NewProc("setsockopt")
482	procshutdown                                             = modws2_32.NewProc("shutdown")
483	procsocket                                               = modws2_32.NewProc("socket")
484	procWTSEnumerateSessionsW                                = modwtsapi32.NewProc("WTSEnumerateSessionsW")
485	procWTSFreeMemory                                        = modwtsapi32.NewProc("WTSFreeMemory")
486	procWTSQueryUserToken                                    = modwtsapi32.NewProc("WTSQueryUserToken")
487)
488
489func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {
490	r0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0)
491	ret = CONFIGRET(r0)
492	return
493}
494
495func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {
496	r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0)
497	ret = CONFIGRET(r0)
498	return
499}
500
501func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {
502	r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0)
503	ret = CONFIGRET(r0)
504	return
505}
506
507func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {
508	r0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0)
509	ret = Errno(r0)
510	return
511}
512
513func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
514	var _p0 uint32
515	if resetToDefault {
516		_p0 = 1
517	}
518	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)))
519	if r1 == 0 {
520		err = errnoErr(e1)
521	}
522	return
523}
524
525func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {
526	var _p0 uint32
527	if disableAllPrivileges {
528		_p0 = 1
529	}
530	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)))
531	if r1 == 0 {
532		err = errnoErr(e1)
533	}
534	return
535}
536
537func 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) {
538	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)
539	if r1 == 0 {
540		err = errnoErr(e1)
541	}
542	return
543}
544
545func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {
546	r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))
547	if r0 != 0 {
548		ret = syscall.Errno(r0)
549	}
550	return
551}
552
553func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
554	r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
555	if r1 == 0 {
556		err = errnoErr(e1)
557	}
558	return
559}
560
561func 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) {
562	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)
563	if r1 == 0 {
564		err = errnoErr(e1)
565	}
566	return
567}
568
569func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
570	r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
571	if r1 == 0 {
572		err = errnoErr(e1)
573	}
574	return
575}
576
577func CloseServiceHandle(handle Handle) (err error) {
578	r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
579	if r1 == 0 {
580		err = errnoErr(e1)
581	}
582	return
583}
584
585func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
586	r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
587	if r1 == 0 {
588		err = errnoErr(e1)
589	}
590	return
591}
592
593func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {
594	r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)
595	if r1 == 0 {
596		err = errnoErr(e1)
597	}
598	return
599}
600
601func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
602	r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
603	if r1 == 0 {
604		err = errnoErr(e1)
605	}
606	return
607}
608
609func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
610	var _p0 *uint16
611	_p0, err = syscall.UTF16PtrFromString(str)
612	if err != nil {
613		return
614	}
615	return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
616}
617
618func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
619	r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
620	if r1 == 0 {
621		err = errnoErr(e1)
622	}
623	return
624}
625
626func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
627	r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
628	if r1 == 0 {
629		err = errnoErr(e1)
630	}
631	return
632}
633
634func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
635	r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
636	if r1 == 0 {
637		err = errnoErr(e1)
638	}
639	return
640}
641
642func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
643	var _p0 uint32
644	if inheritHandles {
645		_p0 = 1
646	}
647	r1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), 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)
648	if r1 == 0 {
649		err = errnoErr(e1)
650	}
651	return
652}
653
654func 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) {
655	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)
656	handle = Handle(r0)
657	if handle == 0 {
658		err = errnoErr(e1)
659	}
660	return
661}
662
663func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {
664	r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)
665	if r1 == 0 {
666		err = errnoErr(e1)
667	}
668	return
669}
670
671func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
672	r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
673	if r1 == 0 {
674		err = errnoErr(e1)
675	}
676	return
677}
678
679func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
680	r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
681	if r1 == 0 {
682		err = errnoErr(e1)
683	}
684	return
685}
686
687func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
688	r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
689	if r1 == 0 {
690		err = errnoErr(e1)
691	}
692	return
693}
694
695func DeleteService(service Handle) (err error) {
696	r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
697	if r1 == 0 {
698		err = errnoErr(e1)
699	}
700	return
701}
702
703func DeregisterEventSource(handle Handle) (err error) {
704	r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
705	if r1 == 0 {
706		err = errnoErr(e1)
707	}
708	return
709}
710
711func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {
712	r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))
713	if r1 == 0 {
714		err = errnoErr(e1)
715	}
716	return
717}
718
719func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {
720	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)
721	if r1 == 0 {
722		err = errnoErr(e1)
723	}
724	return
725}
726
727func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
728	r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
729	isEqual = r0 != 0
730	return
731}
732
733func FreeSid(sid *SID) (err error) {
734	r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
735	if r1 != 0 {
736		err = errnoErr(e1)
737	}
738	return
739}
740
741func GetLengthSid(sid *SID) (len uint32) {
742	r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
743	len = uint32(r0)
744	return
745}
746
747func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
748	var _p0 *uint16
749	_p0, ret = syscall.UTF16PtrFromString(objectName)
750	if ret != nil {
751		return
752	}
753	return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)
754}
755
756func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
757	r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
758	if r0 != 0 {
759		ret = syscall.Errno(r0)
760	}
761	return
762}
763
764func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {
765	r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))
766	if r1 == 0 {
767		err = errnoErr(e1)
768	}
769	return
770}
771
772func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {
773	var _p0 uint32
774	if *daclPresent {
775		_p0 = 1
776	}
777	var _p1 uint32
778	if *daclDefaulted {
779		_p1 = 1
780	}
781	r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
782	*daclPresent = _p0 != 0
783	*daclDefaulted = _p1 != 0
784	if r1 == 0 {
785		err = errnoErr(e1)
786	}
787	return
788}
789
790func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {
791	var _p0 uint32
792	if *groupDefaulted {
793		_p0 = 1
794	}
795	r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))
796	*groupDefaulted = _p0 != 0
797	if r1 == 0 {
798		err = errnoErr(e1)
799	}
800	return
801}
802
803func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {
804	r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
805	len = uint32(r0)
806	return
807}
808
809func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {
810	var _p0 uint32
811	if *ownerDefaulted {
812		_p0 = 1
813	}
814	r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))
815	*ownerDefaulted = _p0 != 0
816	if r1 == 0 {
817		err = errnoErr(e1)
818	}
819	return
820}
821
822func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {
823	r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
824	if r0 != 0 {
825		ret = syscall.Errno(r0)
826	}
827	return
828}
829
830func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {
831	var _p0 uint32
832	if *saclPresent {
833		_p0 = 1
834	}
835	var _p1 uint32
836	if *saclDefaulted {
837		_p1 = 1
838	}
839	r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
840	*saclPresent = _p0 != 0
841	*saclDefaulted = _p1 != 0
842	if r1 == 0 {
843		err = errnoErr(e1)
844	}
845	return
846}
847
848func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
849	r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
850	if r0 != 0 {
851		ret = syscall.Errno(r0)
852	}
853	return
854}
855
856func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {
857	r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
858	authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))
859	return
860}
861
862func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {
863	r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)
864	subAuthority = (*uint32)(unsafe.Pointer(r0))
865	return
866}
867
868func getSidSubAuthorityCount(sid *SID) (count *uint8) {
869	r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
870	count = (*uint8)(unsafe.Pointer(r0))
871	return
872}
873
874func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
875	r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
876	if r1 == 0 {
877		err = errnoErr(e1)
878	}
879	return
880}
881
882func ImpersonateSelf(impersonationlevel uint32) (err error) {
883	r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
884	if r1 == 0 {
885		err = errnoErr(e1)
886	}
887	return
888}
889
890func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {
891	r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)
892	if r1 == 0 {
893		err = errnoErr(e1)
894	}
895	return
896}
897
898func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {
899	var _p0 uint32
900	if forceAppsClosed {
901		_p0 = 1
902	}
903	var _p1 uint32
904	if rebootAfterShutdown {
905		_p1 = 1
906	}
907	r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))
908	if r1 == 0 {
909		err = errnoErr(e1)
910	}
911	return
912}
913
914func isTokenRestricted(tokenHandle Token) (ret bool, err error) {
915	r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0)
916	ret = r0 != 0
917	if !ret {
918		err = errnoErr(e1)
919	}
920	return
921}
922
923func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {
924	r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
925	isValid = r0 != 0
926	return
927}
928
929func isValidSid(sid *SID) (isValid bool) {
930	r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
931	isValid = r0 != 0
932	return
933}
934
935func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {
936	r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)
937	isWellKnown = r0 != 0
938	return
939}
940
941func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
942	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)
943	if r1 == 0 {
944		err = errnoErr(e1)
945	}
946	return
947}
948
949func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
950	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)
951	if r1 == 0 {
952		err = errnoErr(e1)
953	}
954	return
955}
956
957func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
958	r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
959	if r1 == 0 {
960		err = errnoErr(e1)
961	}
962	return
963}
964
965func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {
966	r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0)
967	if r1 == 0 {
968		err = errnoErr(e1)
969	}
970	return
971}
972
973func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {
974	r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))
975	if r1 == 0 {
976		err = errnoErr(e1)
977	}
978	return
979}
980
981func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {
982	r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))
983	if r0 != 0 {
984		ret = syscall.Errno(r0)
985	}
986	return
987}
988
989func OpenProcessToken(process Handle, access uint32, token *Token) (err error) {
990	r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))
991	if r1 == 0 {
992		err = errnoErr(e1)
993	}
994	return
995}
996
997func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
998	r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
999	handle = Handle(r0)
1000	if handle == 0 {
1001		err = errnoErr(e1)
1002	}
1003	return
1004}
1005
1006func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
1007	r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
1008	handle = Handle(r0)
1009	if handle == 0 {
1010		err = errnoErr(e1)
1011	}
1012	return
1013}
1014
1015func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {
1016	var _p0 uint32
1017	if openAsSelf {
1018		_p0 = 1
1019	}
1020	r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
1021	if r1 == 0 {
1022		err = errnoErr(e1)
1023	}
1024	return
1025}
1026
1027func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
1028	r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
1029	if r1 == 0 {
1030		err = errnoErr(e1)
1031	}
1032	return
1033}
1034
1035func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
1036	r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
1037	if r1 == 0 {
1038		err = errnoErr(e1)
1039	}
1040	return
1041}
1042
1043func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {
1044	err = procQueryServiceDynamicInformation.Find()
1045	if err != nil {
1046		return
1047	}
1048	r1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))
1049	if r1 == 0 {
1050		err = errnoErr(e1)
1051	}
1052	return
1053}
1054
1055func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
1056	r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
1057	if r1 == 0 {
1058		err = errnoErr(e1)
1059	}
1060	return
1061}
1062
1063func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
1064	r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
1065	if r1 == 0 {
1066		err = errnoErr(e1)
1067	}
1068	return
1069}
1070
1071func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
1072	r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
1073	if r1 == 0 {
1074		err = errnoErr(e1)
1075	}
1076	return
1077}
1078
1079func RegCloseKey(key Handle) (regerrno error) {
1080	r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
1081	if r0 != 0 {
1082		regerrno = syscall.Errno(r0)
1083	}
1084	return
1085}
1086
1087func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
1088	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)
1089	if r0 != 0 {
1090		regerrno = syscall.Errno(r0)
1091	}
1092	return
1093}
1094
1095func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) {
1096	var _p0 uint32
1097	if watchSubtree {
1098		_p0 = 1
1099	}
1100	var _p1 uint32
1101	if asynchronous {
1102		_p1 = 1
1103	}
1104	r0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0)
1105	if r0 != 0 {
1106		regerrno = syscall.Errno(r0)
1107	}
1108	return
1109}
1110
1111func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
1112	r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
1113	if r0 != 0 {
1114		regerrno = syscall.Errno(r0)
1115	}
1116	return
1117}
1118
1119func 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) {
1120	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)))
1121	if r0 != 0 {
1122		regerrno = syscall.Errno(r0)
1123	}
1124	return
1125}
1126
1127func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
1128	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)))
1129	if r0 != 0 {
1130		regerrno = syscall.Errno(r0)
1131	}
1132	return
1133}
1134
1135func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
1136	r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
1137	handle = Handle(r0)
1138	if handle == 0 {
1139		err = errnoErr(e1)
1140	}
1141	return
1142}
1143
1144func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {
1145	r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))
1146	handle = Handle(r0)
1147	if handle == 0 {
1148		err = errnoErr(e1)
1149	}
1150	return
1151}
1152
1153func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
1154	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)))
1155	if r1 == 0 {
1156		err = errnoErr(e1)
1157	}
1158	return
1159}
1160
1161func RevertToSelf() (err error) {
1162	r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
1163	if r1 == 0 {
1164		err = errnoErr(e1)
1165	}
1166	return
1167}
1168
1169func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {
1170	r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)
1171	if r0 != 0 {
1172		ret = syscall.Errno(r0)
1173	}
1174	return
1175}
1176
1177func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {
1178	r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))
1179	if r1 == 0 {
1180		err = errnoErr(e1)
1181	}
1182	return
1183}
1184
1185func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
1186	var _p0 *uint16
1187	_p0, ret = syscall.UTF16PtrFromString(objectName)
1188	if ret != nil {
1189		return
1190	}
1191	return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)
1192}
1193
1194func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
1195	r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
1196	if r0 != 0 {
1197		ret = syscall.Errno(r0)
1198	}
1199	return
1200}
1201
1202func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {
1203	r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))
1204	if r1 == 0 {
1205		err = errnoErr(e1)
1206	}
1207	return
1208}
1209
1210func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {
1211	var _p0 uint32
1212	if daclPresent {
1213		_p0 = 1
1214	}
1215	var _p1 uint32
1216	if daclDefaulted {
1217		_p1 = 1
1218	}
1219	r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)
1220	if r1 == 0 {
1221		err = errnoErr(e1)
1222	}
1223	return
1224}
1225
1226func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {
1227	var _p0 uint32
1228	if groupDefaulted {
1229		_p0 = 1
1230	}
1231	r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))
1232	if r1 == 0 {
1233		err = errnoErr(e1)
1234	}
1235	return
1236}
1237
1238func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {
1239	var _p0 uint32
1240	if ownerDefaulted {
1241		_p0 = 1
1242	}
1243	r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))
1244	if r1 == 0 {
1245		err = errnoErr(e1)
1246	}
1247	return
1248}
1249
1250func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {
1251	syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
1252	return
1253}
1254
1255func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {
1256	var _p0 uint32
1257	if saclPresent {
1258		_p0 = 1
1259	}
1260	var _p1 uint32
1261	if saclDefaulted {
1262		_p1 = 1
1263	}
1264	r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)
1265	if r1 == 0 {
1266		err = errnoErr(e1)
1267	}
1268	return
1269}
1270
1271func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
1272	r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
1273	if r0 != 0 {
1274		ret = syscall.Errno(r0)
1275	}
1276	return
1277}
1278
1279func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
1280	r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
1281	if r1 == 0 {
1282		err = errnoErr(e1)
1283	}
1284	return
1285}
1286
1287func SetThreadToken(thread *Handle, token Token) (err error) {
1288	r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)
1289	if r1 == 0 {
1290		err = errnoErr(e1)
1291	}
1292	return
1293}
1294
1295func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {
1296	r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)
1297	if r1 == 0 {
1298		err = errnoErr(e1)
1299	}
1300	return
1301}
1302
1303func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
1304	r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
1305	if r1 == 0 {
1306		err = errnoErr(e1)
1307	}
1308	return
1309}
1310
1311func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
1312	r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
1313	if r1 == 0 {
1314		err = errnoErr(e1)
1315	}
1316	return
1317}
1318
1319func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
1320	r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
1321	if r1 == 0 {
1322		err = errnoErr(e1)
1323	}
1324	return
1325}
1326
1327func CertCloseStore(store Handle, flags uint32) (err error) {
1328	r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
1329	if r1 == 0 {
1330		err = errnoErr(e1)
1331	}
1332	return
1333}
1334
1335func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
1336	r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
1337	context = (*CertContext)(unsafe.Pointer(r0))
1338	if context == nil {
1339		err = errnoErr(e1)
1340	}
1341	return
1342}
1343
1344func CertDeleteCertificateFromStore(certContext *CertContext) (err error) {
1345	r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)
1346	if r1 == 0 {
1347		err = errnoErr(e1)
1348	}
1349	return
1350}
1351
1352func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) {
1353	r0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)
1354	dupContext = (*CertContext)(unsafe.Pointer(r0))
1355	return
1356}
1357
1358func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
1359	r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
1360	context = (*CertContext)(unsafe.Pointer(r0))
1361	if context == nil {
1362		err = errnoErr(e1)
1363	}
1364	return
1365}
1366
1367func CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) {
1368	r0, _, e1 := syscall.Syscall6(procCertFindCertificateInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext)))
1369	cert = (*CertContext)(unsafe.Pointer(r0))
1370	if cert == nil {
1371		err = errnoErr(e1)
1372	}
1373	return
1374}
1375
1376func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) {
1377	r0, _, e1 := syscall.Syscall6(procCertFindChainInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext)))
1378	certchain = (*CertChainContext)(unsafe.Pointer(r0))
1379	if certchain == nil {
1380		err = errnoErr(e1)
1381	}
1382	return
1383}
1384
1385func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {
1386	r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))
1387	ret = (*CertExtension)(unsafe.Pointer(r0))
1388	return
1389}
1390
1391func CertFreeCertificateChain(ctx *CertChainContext) {
1392	syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
1393	return
1394}
1395
1396func CertFreeCertificateContext(ctx *CertContext) (err error) {
1397	r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
1398	if r1 == 0 {
1399		err = errnoErr(e1)
1400	}
1401	return
1402}
1403
1404func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
1405	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)
1406	if r1 == 0 {
1407		err = errnoErr(e1)
1408	}
1409	return
1410}
1411
1412func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {
1413	r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))
1414	chars = uint32(r0)
1415	return
1416}
1417
1418func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
1419	r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
1420	handle = Handle(r0)
1421	if handle == 0 {
1422		err = errnoErr(e1)
1423	}
1424	return
1425}
1426
1427func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
1428	r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
1429	store = Handle(r0)
1430	if store == 0 {
1431		err = errnoErr(e1)
1432	}
1433	return
1434}
1435
1436func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
1437	r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
1438	if r1 == 0 {
1439		err = errnoErr(e1)
1440	}
1441	return
1442}
1443
1444func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) {
1445	var _p0 uint32
1446	if *callerFreeProvOrNCryptKey {
1447		_p0 = 1
1448	}
1449	r1, _, e1 := syscall.Syscall6(procCryptAcquireCertificatePrivateKey.Addr(), 6, uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0)))
1450	*callerFreeProvOrNCryptKey = _p0 != 0
1451	if r1 == 0 {
1452		err = errnoErr(e1)
1453	}
1454	return
1455}
1456
1457func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {
1458	r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0)
1459	if r1 == 0 {
1460		err = errnoErr(e1)
1461	}
1462	return
1463}
1464
1465func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
1466	r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
1467	if r1 == 0 {
1468		err = errnoErr(e1)
1469	}
1470	return
1471}
1472
1473func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {
1474	r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0)
1475	if r1 == 0 {
1476		err = errnoErr(e1)
1477	}
1478	return
1479}
1480
1481func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
1482	r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
1483	if r1 == 0 {
1484		err = errnoErr(e1)
1485	}
1486	return
1487}
1488
1489func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
1490	r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
1491	store = Handle(r0)
1492	if store == 0 {
1493		err = errnoErr(e1)
1494	}
1495	return
1496}
1497
1498func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
1499	r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
1500	same = r0 != 0
1501	return
1502}
1503
1504func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
1505	var _p0 *uint16
1506	_p0, status = syscall.UTF16PtrFromString(name)
1507	if status != nil {
1508		return
1509	}
1510	return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
1511}
1512
1513func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
1514	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)))
1515	if r0 != 0 {
1516		status = syscall.Errno(r0)
1517	}
1518	return
1519}
1520
1521func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
1522	syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
1523	return
1524}
1525
1526func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
1527	r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
1528	if r0 != 0 {
1529		errcode = syscall.Errno(r0)
1530	}
1531	return
1532}
1533
1534func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
1535	r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
1536	if r0 != 0 {
1537		errcode = syscall.Errno(r0)
1538	}
1539	return
1540}
1541
1542func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
1543	r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
1544	if r0 != 0 {
1545		errcode = syscall.Errno(r0)
1546	}
1547	return
1548}
1549
1550func AssignProcessToJobObject(job Handle, process Handle) (err error) {
1551	r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)
1552	if r1 == 0 {
1553		err = errnoErr(e1)
1554	}
1555	return
1556}
1557
1558func CancelIo(s Handle) (err error) {
1559	r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
1560	if r1 == 0 {
1561		err = errnoErr(e1)
1562	}
1563	return
1564}
1565
1566func CancelIoEx(s Handle, o *Overlapped) (err error) {
1567	r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
1568	if r1 == 0 {
1569		err = errnoErr(e1)
1570	}
1571	return
1572}
1573
1574func CloseHandle(handle Handle) (err error) {
1575	r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
1576	if r1 == 0 {
1577		err = errnoErr(e1)
1578	}
1579	return
1580}
1581
1582func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) {
1583	r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0)
1584	if r1 == 0 {
1585		err = errnoErr(e1)
1586	}
1587	return
1588}
1589
1590func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
1591	r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
1592	if r1 == 0 {
1593		err = errnoErr(e1)
1594	}
1595	return
1596}
1597
1598func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
1599	r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
1600	handle = Handle(r0)
1601	if handle == 0 || e1 == ERROR_ALREADY_EXISTS {
1602		err = errnoErr(e1)
1603	}
1604	return
1605}
1606
1607func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
1608	r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
1609	handle = Handle(r0)
1610	if handle == 0 || e1 == ERROR_ALREADY_EXISTS {
1611		err = errnoErr(e1)
1612	}
1613	return
1614}
1615
1616func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
1617	r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
1618	handle = Handle(r0)
1619	if handle == 0 || e1 == ERROR_ALREADY_EXISTS {
1620		err = errnoErr(e1)
1621	}
1622	return
1623}
1624
1625func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {
1626	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)
1627	handle = Handle(r0)
1628	if handle == InvalidHandle {
1629		err = errnoErr(e1)
1630	}
1631	return
1632}
1633
1634func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
1635	r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
1636	if r1&0xff == 0 {
1637		err = errnoErr(e1)
1638	}
1639	return
1640}
1641
1642func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) {
1643	r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
1644	handle = Handle(r0)
1645	if handle == 0 {
1646		err = errnoErr(e1)
1647	}
1648	return
1649}
1650
1651func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {
1652	r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)
1653	handle = Handle(r0)
1654	if handle == 0 {
1655		err = errnoErr(e1)
1656	}
1657	return
1658}
1659
1660func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
1661	r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
1662	handle = Handle(r0)
1663	if handle == 0 || e1 == ERROR_ALREADY_EXISTS {
1664		err = errnoErr(e1)
1665	}
1666	return
1667}
1668
1669func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {
1670	var _p0 uint32
1671	if initialOwner {
1672		_p0 = 1
1673	}
1674	r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))
1675	handle = Handle(r0)
1676	if handle == 0 || e1 == ERROR_ALREADY_EXISTS {
1677		err = errnoErr(e1)
1678	}
1679	return
1680}
1681
1682func CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) {
1683	r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0)
1684	handle = Handle(r0)
1685	if handle == InvalidHandle {
1686		err = errnoErr(e1)
1687	}
1688	return
1689}
1690
1691func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
1692	r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
1693	if r1 == 0 {
1694		err = errnoErr(e1)
1695	}
1696	return
1697}
1698
1699func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
1700	var _p0 uint32
1701	if inheritHandles {
1702		_p0 = 1
1703	}
1704	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)
1705	if r1 == 0 {
1706		err = errnoErr(e1)
1707	}
1708	return
1709}
1710
1711func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
1712	r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
1713	if r1&0xff == 0 {
1714		err = errnoErr(e1)
1715	}
1716	return
1717}
1718
1719func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
1720	r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
1721	handle = Handle(r0)
1722	if handle == InvalidHandle {
1723		err = errnoErr(e1)
1724	}
1725	return
1726}
1727
1728func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
1729	r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
1730	if r1 == 0 {
1731		err = errnoErr(e1)
1732	}
1733	return
1734}
1735
1736func DeleteFile(path *uint16) (err error) {
1737	r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
1738	if r1 == 0 {
1739		err = errnoErr(e1)
1740	}
1741	return
1742}
1743
1744func deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) {
1745	syscall.Syscall(procDeleteProcThreadAttributeList.Addr(), 1, uintptr(unsafe.Pointer(attrlist)), 0, 0)
1746	return
1747}
1748
1749func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
1750	r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
1751	if r1 == 0 {
1752		err = errnoErr(e1)
1753	}
1754	return
1755}
1756
1757func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
1758	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)
1759	if r1 == 0 {
1760		err = errnoErr(e1)
1761	}
1762	return
1763}
1764
1765func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
1766	var _p0 uint32
1767	if bInheritHandle {
1768		_p0 = 1
1769	}
1770	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)
1771	if r1 == 0 {
1772		err = errnoErr(e1)
1773	}
1774	return
1775}
1776
1777func ExitProcess(exitcode uint32) {
1778	syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
1779	return
1780}
1781
1782func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
1783	r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
1784	n = uint32(r0)
1785	if n == 0 {
1786		err = errnoErr(e1)
1787	}
1788	return
1789}
1790
1791func FindClose(handle Handle) (err error) {
1792	r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
1793	if r1 == 0 {
1794		err = errnoErr(e1)
1795	}
1796	return
1797}
1798
1799func FindCloseChangeNotification(handle Handle) (err error) {
1800	r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
1801	if r1 == 0 {
1802		err = errnoErr(e1)
1803	}
1804	return
1805}
1806
1807func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
1808	var _p0 *uint16
1809	_p0, err = syscall.UTF16PtrFromString(path)
1810	if err != nil {
1811		return
1812	}
1813	return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)
1814}
1815
1816func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
1817	var _p1 uint32
1818	if watchSubtree {
1819		_p1 = 1
1820	}
1821	r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))
1822	handle = Handle(r0)
1823	if handle == InvalidHandle {
1824		err = errnoErr(e1)
1825	}
1826	return
1827}
1828
1829func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
1830	r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
1831	handle = Handle(r0)
1832	if handle == InvalidHandle {
1833		err = errnoErr(e1)
1834	}
1835	return
1836}
1837
1838func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
1839	r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
1840	handle = Handle(r0)
1841	if handle == InvalidHandle {
1842		err = errnoErr(e1)
1843	}
1844	return
1845}
1846
1847func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
1848	r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
1849	handle = Handle(r0)
1850	if handle == InvalidHandle {
1851		err = errnoErr(e1)
1852	}
1853	return
1854}
1855
1856func FindNextChangeNotification(handle Handle) (err error) {
1857	r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
1858	if r1 == 0 {
1859		err = errnoErr(e1)
1860	}
1861	return
1862}
1863
1864func findNextFile1(handle Handle, data *win32finddata1) (err error) {
1865	r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
1866	if r1 == 0 {
1867		err = errnoErr(e1)
1868	}
1869	return
1870}
1871
1872func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
1873	r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
1874	if r1 == 0 {
1875		err = errnoErr(e1)
1876	}
1877	return
1878}
1879
1880func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
1881	r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
1882	if r1 == 0 {
1883		err = errnoErr(e1)
1884	}
1885	return
1886}
1887
1888func findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) {
1889	r0, _, e1 := syscall.Syscall(procFindResourceW.Addr(), 3, uintptr(module), uintptr(name), uintptr(resType))
1890	resInfo = Handle(r0)
1891	if resInfo == 0 {
1892		err = errnoErr(e1)
1893	}
1894	return
1895}
1896
1897func FindVolumeClose(findVolume Handle) (err error) {
1898	r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
1899	if r1 == 0 {
1900		err = errnoErr(e1)
1901	}
1902	return
1903}
1904
1905func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
1906	r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
1907	if r1 == 0 {
1908		err = errnoErr(e1)
1909	}
1910	return
1911}
1912
1913func FlushFileBuffers(handle Handle) (err error) {
1914	r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
1915	if r1 == 0 {
1916		err = errnoErr(e1)
1917	}
1918	return
1919}
1920
1921func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
1922	r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
1923	if r1 == 0 {
1924		err = errnoErr(e1)
1925	}
1926	return
1927}
1928
1929func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
1930	var _p0 *uint16
1931	if len(buf) > 0 {
1932		_p0 = &buf[0]
1933	}
1934	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)
1935	n = uint32(r0)
1936	if n == 0 {
1937		err = errnoErr(e1)
1938	}
1939	return
1940}
1941
1942func FreeEnvironmentStrings(envs *uint16) (err error) {
1943	r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
1944	if r1 == 0 {
1945		err = errnoErr(e1)
1946	}
1947	return
1948}
1949
1950func FreeLibrary(handle Handle) (err error) {
1951	r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
1952	if r1 == 0 {
1953		err = errnoErr(e1)
1954	}
1955	return
1956}
1957
1958func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {
1959	r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)
1960	if r1 == 0 {
1961		err = errnoErr(e1)
1962	}
1963	return
1964}
1965
1966func GetACP() (acp uint32) {
1967	r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
1968	acp = uint32(r0)
1969	return
1970}
1971
1972func GetActiveProcessorCount(groupNumber uint16) (ret uint32) {
1973	r0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
1974	ret = uint32(r0)
1975	return
1976}
1977
1978func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
1979	r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
1980	if r1 == 0 {
1981		err = errnoErr(e1)
1982	}
1983	return
1984}
1985
1986func GetCommandLine() (cmd *uint16) {
1987	r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
1988	cmd = (*uint16)(unsafe.Pointer(r0))
1989	return
1990}
1991
1992func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
1993	r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
1994	if r1 == 0 {
1995		err = errnoErr(e1)
1996	}
1997	return
1998}
1999
2000func GetComputerName(buf *uint16, n *uint32) (err error) {
2001	r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
2002	if r1 == 0 {
2003		err = errnoErr(e1)
2004	}
2005	return
2006}
2007
2008func GetConsoleMode(console Handle, mode *uint32) (err error) {
2009	r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
2010	if r1 == 0 {
2011		err = errnoErr(e1)
2012	}
2013	return
2014}
2015
2016func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
2017	r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
2018	if r1 == 0 {
2019		err = errnoErr(e1)
2020	}
2021	return
2022}
2023
2024func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
2025	r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
2026	n = uint32(r0)
2027	if n == 0 {
2028		err = errnoErr(e1)
2029	}
2030	return
2031}
2032
2033func GetCurrentProcessId() (pid uint32) {
2034	r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
2035	pid = uint32(r0)
2036	return
2037}
2038
2039func GetCurrentThreadId() (id uint32) {
2040	r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
2041	id = uint32(r0)
2042	return
2043}
2044
2045func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {
2046	r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)
2047	if r1 == 0 {
2048		err = errnoErr(e1)
2049	}
2050	return
2051}
2052
2053func GetDriveType(rootPathName *uint16) (driveType uint32) {
2054	r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
2055	driveType = uint32(r0)
2056	return
2057}
2058
2059func GetEnvironmentStrings() (envs *uint16, err error) {
2060	r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
2061	envs = (*uint16)(unsafe.Pointer(r0))
2062	if envs == nil {
2063		err = errnoErr(e1)
2064	}
2065	return
2066}
2067
2068func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
2069	r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
2070	n = uint32(r0)
2071	if n == 0 {
2072		err = errnoErr(e1)
2073	}
2074	return
2075}
2076
2077func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
2078	r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
2079	if r1 == 0 {
2080		err = errnoErr(e1)
2081	}
2082	return
2083}
2084
2085func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
2086	r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
2087	if r1 == 0 {
2088		err = errnoErr(e1)
2089	}
2090	return
2091}
2092
2093func GetFileAttributes(name *uint16) (attrs uint32, err error) {
2094	r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
2095	attrs = uint32(r0)
2096	if attrs == INVALID_FILE_ATTRIBUTES {
2097		err = errnoErr(e1)
2098	}
2099	return
2100}
2101
2102func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
2103	r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
2104	if r1 == 0 {
2105		err = errnoErr(e1)
2106	}
2107	return
2108}
2109
2110func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {
2111	r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)
2112	if r1 == 0 {
2113		err = errnoErr(e1)
2114	}
2115	return
2116}
2117
2118func GetFileType(filehandle Handle) (n uint32, err error) {
2119	r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
2120	n = uint32(r0)
2121	if n == 0 {
2122		err = errnoErr(e1)
2123	}
2124	return
2125}
2126
2127func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
2128	r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
2129	n = uint32(r0)
2130	if n == 0 {
2131		err = errnoErr(e1)
2132	}
2133	return
2134}
2135
2136func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
2137	r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
2138	n = uint32(r0)
2139	if n == 0 {
2140		err = errnoErr(e1)
2141	}
2142	return
2143}
2144
2145func GetLastError() (lasterr error) {
2146	r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
2147	if r0 != 0 {
2148		lasterr = syscall.Errno(r0)
2149	}
2150	return
2151}
2152
2153func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
2154	r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
2155	n = uint32(r0)
2156	if n == 0 {
2157		err = errnoErr(e1)
2158	}
2159	return
2160}
2161
2162func GetLogicalDrives() (drivesBitMask uint32, err error) {
2163	r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
2164	drivesBitMask = uint32(r0)
2165	if drivesBitMask == 0 {
2166		err = errnoErr(e1)
2167	}
2168	return
2169}
2170
2171func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
2172	r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
2173	n = uint32(r0)
2174	if n == 0 {
2175		err = errnoErr(e1)
2176	}
2177	return
2178}
2179
2180func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {
2181	r0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
2182	ret = uint32(r0)
2183	return
2184}
2185
2186func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
2187	r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
2188	n = uint32(r0)
2189	if n == 0 {
2190		err = errnoErr(e1)
2191	}
2192	return
2193}
2194
2195func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {
2196	r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))
2197	if r1 == 0 {
2198		err = errnoErr(e1)
2199	}
2200	return
2201}
2202
2203func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {
2204	r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
2205	if r1 == 0 {
2206		err = errnoErr(e1)
2207	}
2208	return
2209}
2210
2211func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {
2212	r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0)
2213	if r1 == 0 {
2214		err = errnoErr(e1)
2215	}
2216	return
2217}
2218
2219func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
2220	var _p0 uint32
2221	if wait {
2222		_p0 = 1
2223	}
2224	r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)
2225	if r1 == 0 {
2226		err = errnoErr(e1)
2227	}
2228	return
2229}
2230
2231func GetPriorityClass(process Handle) (ret uint32, err error) {
2232	r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)
2233	ret = uint32(r0)
2234	if ret == 0 {
2235		err = errnoErr(e1)
2236	}
2237	return
2238}
2239
2240func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
2241	var _p0 *byte
2242	_p0, err = syscall.BytePtrFromString(procname)
2243	if err != nil {
2244		return
2245	}
2246	return _GetProcAddress(module, _p0)
2247}
2248
2249func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
2250	r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
2251	proc = uintptr(r0)
2252	if proc == 0 {
2253		err = errnoErr(e1)
2254	}
2255	return
2256}
2257
2258func GetProcessId(process Handle) (id uint32, err error) {
2259	r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)
2260	id = uint32(r0)
2261	if id == 0 {
2262		err = errnoErr(e1)
2263	}
2264	return
2265}
2266
2267func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
2268	r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
2269	if r1 == 0 {
2270		err = errnoErr(e1)
2271	}
2272	return
2273}
2274
2275func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {
2276	r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0)
2277	if r1 == 0 {
2278		err = errnoErr(e1)
2279	}
2280	return
2281}
2282
2283func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
2284	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)
2285	if r1 == 0 {
2286		err = errnoErr(e1)
2287	}
2288	return
2289}
2290
2291func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {
2292	syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0)
2293	return
2294}
2295
2296func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) {
2297	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
2298	if r1 == 0 {
2299		err = errnoErr(e1)
2300	}
2301	return
2302}
2303
2304func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
2305	r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
2306	n = uint32(r0)
2307	if n == 0 {
2308		err = errnoErr(e1)
2309	}
2310	return
2311}
2312
2313func GetStartupInfo(startupInfo *StartupInfo) (err error) {
2314	r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
2315	if r1 == 0 {
2316		err = errnoErr(e1)
2317	}
2318	return
2319}
2320
2321func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
2322	r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
2323	handle = Handle(r0)
2324	if handle == InvalidHandle {
2325		err = errnoErr(e1)
2326	}
2327	return
2328}
2329
2330func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
2331	r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
2332	len = uint32(r0)
2333	if len == 0 {
2334		err = errnoErr(e1)
2335	}
2336	return
2337}
2338
2339func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
2340	r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
2341	if r1 == 0 {
2342		err = errnoErr(e1)
2343	}
2344	return
2345}
2346
2347func GetSystemTimeAsFileTime(time *Filetime) {
2348	syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
2349	return
2350}
2351
2352func GetSystemTimePreciseAsFileTime(time *Filetime) {
2353	syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
2354	return
2355}
2356
2357func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
2358	r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
2359	len = uint32(r0)
2360	if len == 0 {
2361		err = errnoErr(e1)
2362	}
2363	return
2364}
2365
2366func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
2367	r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
2368	n = uint32(r0)
2369	if n == 0 {
2370		err = errnoErr(e1)
2371	}
2372	return
2373}
2374
2375func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
2376	r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
2377	if r1 == 0 {
2378		err = errnoErr(e1)
2379	}
2380	return
2381}
2382
2383func getTickCount64() (ms uint64) {
2384	r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)
2385	ms = uint64(r0)
2386	return
2387}
2388
2389func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
2390	r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
2391	rc = uint32(r0)
2392	if rc == 0xffffffff {
2393		err = errnoErr(e1)
2394	}
2395	return
2396}
2397
2398func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
2399	r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
2400	if r1 == 0 {
2401		err = errnoErr(e1)
2402	}
2403	return
2404}
2405
2406func GetVersion() (ver uint32, err error) {
2407	r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
2408	ver = uint32(r0)
2409	if ver == 0 {
2410		err = errnoErr(e1)
2411	}
2412	return
2413}
2414
2415func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
2416	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)
2417	if r1 == 0 {
2418		err = errnoErr(e1)
2419	}
2420	return
2421}
2422
2423func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
2424	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)
2425	if r1 == 0 {
2426		err = errnoErr(e1)
2427	}
2428	return
2429}
2430
2431func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
2432	r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
2433	if r1 == 0 {
2434		err = errnoErr(e1)
2435	}
2436	return
2437}
2438
2439func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
2440	r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
2441	if r1 == 0 {
2442		err = errnoErr(e1)
2443	}
2444	return
2445}
2446
2447func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
2448	r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
2449	if r1 == 0 {
2450		err = errnoErr(e1)
2451	}
2452	return
2453}
2454
2455func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
2456	r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
2457	len = uint32(r0)
2458	if len == 0 {
2459		err = errnoErr(e1)
2460	}
2461	return
2462}
2463
2464func initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) {
2465	r1, _, e1 := syscall.Syscall6(procInitializeProcThreadAttributeList.Addr(), 4, uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)), 0, 0)
2466	if r1 == 0 {
2467		err = errnoErr(e1)
2468	}
2469	return
2470}
2471
2472func IsWow64Process(handle Handle, isWow64 *bool) (err error) {
2473	var _p0 uint32
2474	if *isWow64 {
2475		_p0 = 1
2476	}
2477	r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)
2478	*isWow64 = _p0 != 0
2479	if r1 == 0 {
2480		err = errnoErr(e1)
2481	}
2482	return
2483}
2484
2485func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {
2486	err = procIsWow64Process2.Find()
2487	if err != nil {
2488		return
2489	}
2490	r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))
2491	if r1 == 0 {
2492		err = errnoErr(e1)
2493	}
2494	return
2495}
2496
2497func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
2498	var _p0 *uint16
2499	_p0, err = syscall.UTF16PtrFromString(libname)
2500	if err != nil {
2501		return
2502	}
2503	return _LoadLibraryEx(_p0, zero, flags)
2504}
2505
2506func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
2507	r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
2508	handle = Handle(r0)
2509	if handle == 0 {
2510		err = errnoErr(e1)
2511	}
2512	return
2513}
2514
2515func LoadLibrary(libname string) (handle Handle, err error) {
2516	var _p0 *uint16
2517	_p0, err = syscall.UTF16PtrFromString(libname)
2518	if err != nil {
2519		return
2520	}
2521	return _LoadLibrary(_p0)
2522}
2523
2524func _LoadLibrary(libname *uint16) (handle Handle, err error) {
2525	r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
2526	handle = Handle(r0)
2527	if handle == 0 {
2528		err = errnoErr(e1)
2529	}
2530	return
2531}
2532
2533func LoadResource(module Handle, resInfo Handle) (resData Handle, err error) {
2534	r0, _, e1 := syscall.Syscall(procLoadResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0)
2535	resData = Handle(r0)
2536	if resData == 0 {
2537		err = errnoErr(e1)
2538	}
2539	return
2540}
2541
2542func LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) {
2543	r0, _, e1 := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(length), 0)
2544	ptr = uintptr(r0)
2545	if ptr == 0 {
2546		err = errnoErr(e1)
2547	}
2548	return
2549}
2550
2551func LocalFree(hmem Handle) (handle Handle, err error) {
2552	r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
2553	handle = Handle(r0)
2554	if handle != 0 {
2555		err = errnoErr(e1)
2556	}
2557	return
2558}
2559
2560func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
2561	r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
2562	if r1 == 0 {
2563		err = errnoErr(e1)
2564	}
2565	return
2566}
2567
2568func LockResource(resData Handle) (addr uintptr, err error) {
2569	r0, _, e1 := syscall.Syscall(procLockResource.Addr(), 1, uintptr(resData), 0, 0)
2570	addr = uintptr(r0)
2571	if addr == 0 {
2572		err = errnoErr(e1)
2573	}
2574	return
2575}
2576
2577func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
2578	r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
2579	addr = uintptr(r0)
2580	if addr == 0 {
2581		err = errnoErr(e1)
2582	}
2583	return
2584}
2585
2586func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
2587	r1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
2588	if r1 == 0 {
2589		err = errnoErr(e1)
2590	}
2591	return
2592}
2593
2594func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
2595	r1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
2596	if r1 == 0 {
2597		err = errnoErr(e1)
2598	}
2599	return
2600}
2601
2602func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
2603	r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
2604	if r1 == 0 {
2605		err = errnoErr(e1)
2606	}
2607	return
2608}
2609
2610func MoveFile(from *uint16, to *uint16) (err error) {
2611	r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
2612	if r1 == 0 {
2613		err = errnoErr(e1)
2614	}
2615	return
2616}
2617
2618func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
2619	r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
2620	nwrite = int32(r0)
2621	if nwrite == 0 {
2622		err = errnoErr(e1)
2623	}
2624	return
2625}
2626
2627func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
2628	var _p0 uint32
2629	if inheritHandle {
2630		_p0 = 1
2631	}
2632	r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
2633	handle = Handle(r0)
2634	if handle == 0 {
2635		err = errnoErr(e1)
2636	}
2637	return
2638}
2639
2640func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
2641	var _p0 uint32
2642	if inheritHandle {
2643		_p0 = 1
2644	}
2645	r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
2646	handle = Handle(r0)
2647	if handle == 0 {
2648		err = errnoErr(e1)
2649	}
2650	return
2651}
2652
2653func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {
2654	var _p0 uint32
2655	if inheritHandle {
2656		_p0 = 1
2657	}
2658	r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))
2659	handle = Handle(r0)
2660	if handle == 0 {
2661		err = errnoErr(e1)
2662	}
2663	return
2664}
2665
2666func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {
2667	var _p0 uint32
2668	if inheritHandle {
2669		_p0 = 1
2670	}
2671	r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))
2672	handle = Handle(r0)
2673	if handle == 0 {
2674		err = errnoErr(e1)
2675	}
2676	return
2677}
2678
2679func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) {
2680	r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
2681	if r1 == 0 {
2682		err = errnoErr(e1)
2683	}
2684	return
2685}
2686
2687func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
2688	r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
2689	if r1 == 0 {
2690		err = errnoErr(e1)
2691	}
2692	return
2693}
2694
2695func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
2696	r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
2697	if r1 == 0 {
2698		err = errnoErr(e1)
2699	}
2700	return
2701}
2702
2703func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {
2704	r1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0)
2705	if r1 == 0 {
2706		err = errnoErr(e1)
2707	}
2708	return
2709}
2710
2711func PulseEvent(event Handle) (err error) {
2712	r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
2713	if r1 == 0 {
2714		err = errnoErr(e1)
2715	}
2716	return
2717}
2718
2719func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
2720	r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
2721	n = uint32(r0)
2722	if n == 0 {
2723		err = errnoErr(e1)
2724	}
2725	return
2726}
2727
2728func QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) {
2729	r1, _, e1 := syscall.Syscall6(procQueryFullProcessImageNameW.Addr(), 4, uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)), 0, 0)
2730	if r1 == 0 {
2731		err = errnoErr(e1)
2732	}
2733	return
2734}
2735
2736func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {
2737	r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0)
2738	if r1 == 0 {
2739		err = errnoErr(e1)
2740	}
2741	return
2742}
2743
2744func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
2745	r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
2746	if r1 == 0 {
2747		err = errnoErr(e1)
2748	}
2749	return
2750}
2751
2752func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
2753	var _p0 uint32
2754	if watchSubTree {
2755		_p0 = 1
2756	}
2757	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)
2758	if r1 == 0 {
2759		err = errnoErr(e1)
2760	}
2761	return
2762}
2763
2764func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
2765	var _p0 *byte
2766	if len(buf) > 0 {
2767		_p0 = &buf[0]
2768	}
2769	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)
2770	if r1 == 0 {
2771		err = errnoErr(e1)
2772	}
2773	return
2774}
2775
2776func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {
2777	r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0)
2778	if r1 == 0 {
2779		err = errnoErr(e1)
2780	}
2781	return
2782}
2783
2784func ReleaseMutex(mutex Handle) (err error) {
2785	r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
2786	if r1 == 0 {
2787		err = errnoErr(e1)
2788	}
2789	return
2790}
2791
2792func RemoveDirectory(path *uint16) (err error) {
2793	r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
2794	if r1 == 0 {
2795		err = errnoErr(e1)
2796	}
2797	return
2798}
2799
2800func ResetEvent(event Handle) (err error) {
2801	r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
2802	if r1 == 0 {
2803		err = errnoErr(e1)
2804	}
2805	return
2806}
2807
2808func ResumeThread(thread Handle) (ret uint32, err error) {
2809	r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)
2810	ret = uint32(r0)
2811	if ret == 0xffffffff {
2812		err = errnoErr(e1)
2813	}
2814	return
2815}
2816
2817func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
2818	r1, _, e1 := syscall.Syscall(procSetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
2819	if r1 == 0 {
2820		err = errnoErr(e1)
2821	}
2822	return
2823}
2824
2825func setConsoleCursorPosition(console Handle, position uint32) (err error) {
2826	r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0)
2827	if r1 == 0 {
2828		err = errnoErr(e1)
2829	}
2830	return
2831}
2832
2833func SetConsoleMode(console Handle, mode uint32) (err error) {
2834	r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
2835	if r1 == 0 {
2836		err = errnoErr(e1)
2837	}
2838	return
2839}
2840
2841func SetCurrentDirectory(path *uint16) (err error) {
2842	r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
2843	if r1 == 0 {
2844		err = errnoErr(e1)
2845	}
2846	return
2847}
2848
2849func SetDefaultDllDirectories(directoryFlags uint32) (err error) {
2850	r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0)
2851	if r1 == 0 {
2852		err = errnoErr(e1)
2853	}
2854	return
2855}
2856
2857func SetDllDirectory(path string) (err error) {
2858	var _p0 *uint16
2859	_p0, err = syscall.UTF16PtrFromString(path)
2860	if err != nil {
2861		return
2862	}
2863	return _SetDllDirectory(_p0)
2864}
2865
2866func _SetDllDirectory(path *uint16) (err error) {
2867	r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
2868	if r1 == 0 {
2869		err = errnoErr(e1)
2870	}
2871	return
2872}
2873
2874func SetEndOfFile(handle Handle) (err error) {
2875	r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
2876	if r1 == 0 {
2877		err = errnoErr(e1)
2878	}
2879	return
2880}
2881
2882func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
2883	r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
2884	if r1 == 0 {
2885		err = errnoErr(e1)
2886	}
2887	return
2888}
2889
2890func SetErrorMode(mode uint32) (ret uint32) {
2891	r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)
2892	ret = uint32(r0)
2893	return
2894}
2895
2896func SetEvent(event Handle) (err error) {
2897	r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
2898	if r1 == 0 {
2899		err = errnoErr(e1)
2900	}
2901	return
2902}
2903
2904func SetFileAttributes(name *uint16, attrs uint32) (err error) {
2905	r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
2906	if r1 == 0 {
2907		err = errnoErr(e1)
2908	}
2909	return
2910}
2911
2912func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
2913	r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
2914	if r1 == 0 {
2915		err = errnoErr(e1)
2916	}
2917	return
2918}
2919
2920func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {
2921	r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0)
2922	if r1 == 0 {
2923		err = errnoErr(e1)
2924	}
2925	return
2926}
2927
2928func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
2929	r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
2930	newlowoffset = uint32(r0)
2931	if newlowoffset == 0xffffffff {
2932		err = errnoErr(e1)
2933	}
2934	return
2935}
2936
2937func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
2938	r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
2939	if r1 == 0 {
2940		err = errnoErr(e1)
2941	}
2942	return
2943}
2944
2945func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
2946	r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
2947	if r1 == 0 {
2948		err = errnoErr(e1)
2949	}
2950	return
2951}
2952
2953func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {
2954	r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)
2955	ret = int(r0)
2956	if ret == 0 {
2957		err = errnoErr(e1)
2958	}
2959	return
2960}
2961
2962func SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) {
2963	r1, _, e1 := syscall.Syscall6(procSetNamedPipeHandleState.Addr(), 4, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), 0, 0)
2964	if r1 == 0 {
2965		err = errnoErr(e1)
2966	}
2967	return
2968}
2969
2970func SetPriorityClass(process Handle, priorityClass uint32) (err error) {
2971	r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)
2972	if r1 == 0 {
2973		err = errnoErr(e1)
2974	}
2975	return
2976}
2977
2978func SetProcessPriorityBoost(process Handle, disable bool) (err error) {
2979	var _p0 uint32
2980	if disable {
2981		_p0 = 1
2982	}
2983	r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)
2984	if r1 == 0 {
2985		err = errnoErr(e1)
2986	}
2987	return
2988}
2989
2990func SetProcessShutdownParameters(level uint32, flags uint32) (err error) {
2991	r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)
2992	if r1 == 0 {
2993		err = errnoErr(e1)
2994	}
2995	return
2996}
2997
2998func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {
2999	r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0)
3000	if r1 == 0 {
3001		err = errnoErr(e1)
3002	}
3003	return
3004}
3005
3006func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
3007	r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
3008	if r1 == 0 {
3009		err = errnoErr(e1)
3010	}
3011	return
3012}
3013
3014func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
3015	r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
3016	if r1 == 0 {
3017		err = errnoErr(e1)
3018	}
3019	return
3020}
3021
3022func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
3023	r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
3024	if r1 == 0 {
3025		err = errnoErr(e1)
3026	}
3027	return
3028}
3029
3030func SizeofResource(module Handle, resInfo Handle) (size uint32, err error) {
3031	r0, _, e1 := syscall.Syscall(procSizeofResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0)
3032	size = uint32(r0)
3033	if size == 0 {
3034		err = errnoErr(e1)
3035	}
3036	return
3037}
3038
3039func SleepEx(milliseconds uint32, alertable bool) (ret uint32) {
3040	var _p0 uint32
3041	if alertable {
3042		_p0 = 1
3043	}
3044	r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)
3045	ret = uint32(r0)
3046	return
3047}
3048
3049func TerminateJobObject(job Handle, exitCode uint32) (err error) {
3050	r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)
3051	if r1 == 0 {
3052		err = errnoErr(e1)
3053	}
3054	return
3055}
3056
3057func TerminateProcess(handle Handle, exitcode uint32) (err error) {
3058	r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
3059	if r1 == 0 {
3060		err = errnoErr(e1)
3061	}
3062	return
3063}
3064
3065func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
3066	r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
3067	if r1 == 0 {
3068		err = errnoErr(e1)
3069	}
3070	return
3071}
3072
3073func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
3074	r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
3075	if r1 == 0 {
3076		err = errnoErr(e1)
3077	}
3078	return
3079}
3080
3081func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
3082	r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
3083	if r1 == 0 {
3084		err = errnoErr(e1)
3085	}
3086	return
3087}
3088
3089func UnmapViewOfFile(addr uintptr) (err error) {
3090	r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
3091	if r1 == 0 {
3092		err = errnoErr(e1)
3093	}
3094	return
3095}
3096
3097func updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) {
3098	r1, _, e1 := syscall.Syscall9(procUpdateProcThreadAttribute.Addr(), 7, uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)), 0, 0)
3099	if r1 == 0 {
3100		err = errnoErr(e1)
3101	}
3102	return
3103}
3104
3105func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
3106	r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
3107	value = uintptr(r0)
3108	if value == 0 {
3109		err = errnoErr(e1)
3110	}
3111	return
3112}
3113
3114func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
3115	r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
3116	if r1 == 0 {
3117		err = errnoErr(e1)
3118	}
3119	return
3120}
3121
3122func VirtualLock(addr uintptr, length uintptr) (err error) {
3123	r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
3124	if r1 == 0 {
3125		err = errnoErr(e1)
3126	}
3127	return
3128}
3129
3130func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
3131	r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)
3132	if r1 == 0 {
3133		err = errnoErr(e1)
3134	}
3135	return
3136}
3137
3138func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {
3139	r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0)
3140	if r1 == 0 {
3141		err = errnoErr(e1)
3142	}
3143	return
3144}
3145
3146func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
3147	r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))
3148	if r1 == 0 {
3149		err = errnoErr(e1)
3150	}
3151	return
3152}
3153
3154func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
3155	r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0)
3156	if r1 == 0 {
3157		err = errnoErr(e1)
3158	}
3159	return
3160}
3161
3162func VirtualUnlock(addr uintptr, length uintptr) (err error) {
3163	r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
3164	if r1 == 0 {
3165		err = errnoErr(e1)
3166	}
3167	return
3168}
3169
3170func WTSGetActiveConsoleSessionId() (sessionID uint32) {
3171	r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0)
3172	sessionID = uint32(r0)
3173	return
3174}
3175
3176func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
3177	var _p0 uint32
3178	if waitAll {
3179		_p0 = 1
3180	}
3181	r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)
3182	event = uint32(r0)
3183	if event == 0xffffffff {
3184		err = errnoErr(e1)
3185	}
3186	return
3187}
3188
3189func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
3190	r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
3191	event = uint32(r0)
3192	if event == 0xffffffff {
3193		err = errnoErr(e1)
3194	}
3195	return
3196}
3197
3198func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
3199	r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
3200	if r1 == 0 {
3201		err = errnoErr(e1)
3202	}
3203	return
3204}
3205
3206func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
3207	var _p0 *byte
3208	if len(buf) > 0 {
3209		_p0 = &buf[0]
3210	}
3211	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)
3212	if r1 == 0 {
3213		err = errnoErr(e1)
3214	}
3215	return
3216}
3217
3218func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {
3219	r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0)
3220	if r1 == 0 {
3221		err = errnoErr(e1)
3222	}
3223	return
3224}
3225
3226func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
3227	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)
3228	if r1 == 0 {
3229		err = errnoErr(e1)
3230	}
3231	return
3232}
3233
3234func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
3235	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)
3236	return
3237}
3238
3239func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
3240	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)
3241	if r1 == 0 {
3242		err = errnoErr(e1)
3243	}
3244	return
3245}
3246
3247func NetApiBufferFree(buf *byte) (neterr error) {
3248	r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
3249	if r0 != 0 {
3250		neterr = syscall.Errno(r0)
3251	}
3252	return
3253}
3254
3255func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
3256	r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
3257	if r0 != 0 {
3258		neterr = syscall.Errno(r0)
3259	}
3260	return
3261}
3262
3263func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
3264	r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
3265	if r0 != 0 {
3266		neterr = syscall.Errno(r0)
3267	}
3268	return
3269}
3270
3271func NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) {
3272	r0, _, _ := syscall.Syscall12(procNtCreateFile.Addr(), 11, uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength), 0)
3273	if r0 != 0 {
3274		ntstatus = NTStatus(r0)
3275	}
3276	return
3277}
3278
3279func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) {
3280	r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0)
3281	if r0 != 0 {
3282		ntstatus = NTStatus(r0)
3283	}
3284	return
3285}
3286
3287func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) {
3288	r0, _, _ := syscall.Syscall6(procNtQueryInformationProcess.Addr(), 5, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)), 0)
3289	if r0 != 0 {
3290		ntstatus = NTStatus(r0)
3291	}
3292	return
3293}
3294
3295func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {
3296	r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0)
3297	if r0 != 0 {
3298		ntstatus = NTStatus(r0)
3299	}
3300	return
3301}
3302
3303func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {
3304	r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0)
3305	if r0 != 0 {
3306		ntstatus = NTStatus(r0)
3307	}
3308	return
3309}
3310
3311func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {
3312	r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0)
3313	if r0 != 0 {
3314		ntstatus = NTStatus(r0)
3315	}
3316	return
3317}
3318
3319func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {
3320	r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))
3321	if r0 != 0 {
3322		ntstatus = NTStatus(r0)
3323	}
3324	return
3325}
3326
3327func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {
3328	r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))
3329	ret = r0 != 0
3330	return
3331}
3332
3333func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
3334	r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)
3335	if r0 != 0 {
3336		ntstatus = NTStatus(r0)
3337	}
3338	return
3339}
3340
3341func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {
3342	r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0)
3343	ret = r0 != 0
3344	return
3345}
3346
3347func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {
3348	r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)
3349	if r0 != 0 {
3350		ntstatus = NTStatus(r0)
3351	}
3352	return
3353}
3354
3355func RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {
3356	r0, _, _ := syscall.Syscall6(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)
3357	if r0 != 0 {
3358		ntstatus = NTStatus(r0)
3359	}
3360	return
3361}
3362
3363func RtlGetCurrentPeb() (peb *PEB) {
3364	r0, _, _ := syscall.Syscall(procRtlGetCurrentPeb.Addr(), 0, 0, 0, 0)
3365	peb = (*PEB)(unsafe.Pointer(r0))
3366	return
3367}
3368
3369func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {
3370	syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))
3371	return
3372}
3373
3374func rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) {
3375	r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
3376	if r0 != 0 {
3377		ntstatus = NTStatus(r0)
3378	}
3379	return
3380}
3381
3382func RtlInitString(destinationString *NTString, sourceString *byte) {
3383	syscall.Syscall(procRtlInitString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0)
3384	return
3385}
3386
3387func RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) {
3388	syscall.Syscall(procRtlInitUnicodeString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0)
3389	return
3390}
3391
3392func rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) {
3393	r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(ntstatus), 0, 0)
3394	ret = syscall.Errno(r0)
3395	return
3396}
3397
3398func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {
3399	r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)
3400	if r0 != 0 {
3401		ret = syscall.Errno(r0)
3402	}
3403	return
3404}
3405
3406func coCreateGuid(pguid *GUID) (ret error) {
3407	r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)
3408	if r0 != 0 {
3409		ret = syscall.Errno(r0)
3410	}
3411	return
3412}
3413
3414func CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) {
3415	r0, _, _ := syscall.Syscall6(procCoGetObject.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)), 0, 0)
3416	if r0 != 0 {
3417		ret = syscall.Errno(r0)
3418	}
3419	return
3420}
3421
3422func CoInitializeEx(reserved uintptr, coInit uint32) (ret error) {
3423	r0, _, _ := syscall.Syscall(procCoInitializeEx.Addr(), 2, uintptr(reserved), uintptr(coInit), 0)
3424	if r0 != 0 {
3425		ret = syscall.Errno(r0)
3426	}
3427	return
3428}
3429
3430func CoTaskMemFree(address unsafe.Pointer) {
3431	syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)
3432	return
3433}
3434
3435func CoUninitialize() {
3436	syscall.Syscall(procCoUninitialize.Addr(), 0, 0, 0, 0)
3437	return
3438}
3439
3440func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
3441	r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))
3442	chars = int32(r0)
3443	return
3444}
3445
3446func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {
3447	r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0)
3448	if r1 == 0 {
3449		err = errnoErr(e1)
3450	}
3451	return
3452}
3453
3454func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {
3455	r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0)
3456	if r1 == 0 {
3457		err = errnoErr(e1)
3458	}
3459	return
3460}
3461
3462func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
3463	var _p0 *uint32
3464	if len(processIds) > 0 {
3465		_p0 = &processIds[0]
3466	}
3467	r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned)))
3468	if r1 == 0 {
3469		err = errnoErr(e1)
3470	}
3471	return
3472}
3473
3474func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {
3475	r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0)
3476	if r1 == 0 {
3477		err = errnoErr(e1)
3478	}
3479	return
3480}
3481
3482func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {
3483	r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0)
3484	if r1 == 0 {
3485		err = errnoErr(e1)
3486	}
3487	return
3488}
3489
3490func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {
3491	r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0)
3492	if r1 == 0 {
3493		err = errnoErr(e1)
3494	}
3495	return
3496}
3497
3498func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {
3499	ret = procSubscribeServiceChangeNotifications.Find()
3500	if ret != nil {
3501		return
3502	}
3503	r0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0)
3504	if r0 != 0 {
3505		ret = syscall.Errno(r0)
3506	}
3507	return
3508}
3509
3510func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) {
3511	err = procUnsubscribeServiceChangeNotifications.Find()
3512	if err != nil {
3513		return
3514	}
3515	syscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0)
3516	return
3517}
3518
3519func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
3520	r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
3521	if r1&0xff == 0 {
3522		err = errnoErr(e1)
3523	}
3524	return
3525}
3526
3527func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
3528	r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
3529	if r1&0xff == 0 {
3530		err = errnoErr(e1)
3531	}
3532	return
3533}
3534
3535func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
3536	r1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
3537	if r1 == 0 {
3538		err = errnoErr(e1)
3539	}
3540	return
3541}
3542
3543func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
3544	r1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))
3545	if r1 == 0 {
3546		err = errnoErr(e1)
3547	}
3548	return
3549}
3550
3551func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {
3552	r1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
3553	if r1 == 0 {
3554		err = errnoErr(e1)
3555	}
3556	return
3557}
3558
3559func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
3560	r1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
3561	if r1 == 0 {
3562		err = errnoErr(e1)
3563	}
3564	return
3565}
3566
3567func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
3568	r1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
3569	if r1 == 0 {
3570		err = errnoErr(e1)
3571	}
3572	return
3573}
3574
3575func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
3576	r0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
3577	handle = DevInfo(r0)
3578	if handle == DevInfo(InvalidHandle) {
3579		err = errnoErr(e1)
3580	}
3581	return
3582}
3583
3584func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {
3585	r1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0)
3586	if r1 == 0 {
3587		err = errnoErr(e1)
3588	}
3589	return
3590}
3591
3592func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {
3593	r1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
3594	if r1 == 0 {
3595		err = errnoErr(e1)
3596	}
3597	return
3598}
3599
3600func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
3601	r1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
3602	if r1 == 0 {
3603		err = errnoErr(e1)
3604	}
3605	return
3606}
3607
3608func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {
3609	r1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))
3610	if r1 == 0 {
3611		err = errnoErr(e1)
3612	}
3613	return
3614}
3615
3616func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {
3617	r1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0)
3618	if r1 == 0 {
3619		err = errnoErr(e1)
3620	}
3621	return
3622}
3623
3624func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
3625	r0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
3626	handle = DevInfo(r0)
3627	if handle == DevInfo(InvalidHandle) {
3628		err = errnoErr(e1)
3629	}
3630	return
3631}
3632
3633func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {
3634	r1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0)
3635	if r1 == 0 {
3636		err = errnoErr(e1)
3637	}
3638	return
3639}
3640
3641func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {
3642	r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0)
3643	if r1 == 0 {
3644		err = errnoErr(e1)
3645	}
3646	return
3647}
3648
3649func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
3650	r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
3651	if r1 == 0 {
3652		err = errnoErr(e1)
3653	}
3654	return
3655}
3656
3657func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {
3658	r1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0)
3659	if r1 == 0 {
3660		err = errnoErr(e1)
3661	}
3662	return
3663}
3664
3665func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {
3666	r1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0)
3667	if r1 == 0 {
3668		err = errnoErr(e1)
3669	}
3670	return
3671}
3672
3673func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {
3674	r1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0)
3675	if r1 == 0 {
3676		err = errnoErr(e1)
3677	}
3678	return
3679}
3680
3681func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {
3682	r1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))
3683	if r1 == 0 {
3684		err = errnoErr(e1)
3685	}
3686	return
3687}
3688
3689func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
3690	r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
3691	if r1 == 0 {
3692		err = errnoErr(e1)
3693	}
3694	return
3695}
3696
3697func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
3698	r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
3699	if r1 == 0 {
3700		err = errnoErr(e1)
3701	}
3702	return
3703}
3704
3705func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {
3706	r0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))
3707	key = Handle(r0)
3708	if key == InvalidHandle {
3709		err = errnoErr(e1)
3710	}
3711	return
3712}
3713
3714func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {
3715	r1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0)
3716	if r1 == 0 {
3717		err = errnoErr(e1)
3718	}
3719	return
3720}
3721
3722func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
3723	r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
3724	if r1 == 0 {
3725		err = errnoErr(e1)
3726	}
3727	return
3728}
3729
3730func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {
3731	r1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0)
3732	if r1 == 0 {
3733		err = errnoErr(e1)
3734	}
3735	return
3736}
3737
3738func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
3739	r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
3740	if r1 == 0 {
3741		err = errnoErr(e1)
3742	}
3743	return
3744}
3745
3746func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
3747	r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
3748	if r1 == 0 {
3749		err = errnoErr(e1)
3750	}
3751	return
3752}
3753
3754func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {
3755	r1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))
3756	if r1 == 0 {
3757		err = errnoErr(e1)
3758	}
3759	return
3760}
3761
3762func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
3763	r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
3764	argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
3765	if argv == nil {
3766		err = errnoErr(e1)
3767	}
3768	return
3769}
3770
3771func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {
3772	r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)
3773	if r0 != 0 {
3774		ret = syscall.Errno(r0)
3775	}
3776	return
3777}
3778
3779func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {
3780	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))
3781	if r1 <= 32 {
3782		err = errnoErr(e1)
3783	}
3784	return
3785}
3786
3787func ExitWindowsEx(flags uint32, reason uint32) (err error) {
3788	r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
3789	if r1 == 0 {
3790		err = errnoErr(e1)
3791	}
3792	return
3793}
3794
3795func GetShellWindow() (shellWindow HWND) {
3796	r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)
3797	shellWindow = HWND(r0)
3798	return
3799}
3800
3801func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {
3802	r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
3803	tid = uint32(r0)
3804	if tid == 0 {
3805		err = errnoErr(e1)
3806	}
3807	return
3808}
3809
3810func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
3811	r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
3812	ret = int32(r0)
3813	if ret == 0 {
3814		err = errnoErr(e1)
3815	}
3816	return
3817}
3818
3819func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
3820	var _p0 uint32
3821	if inheritExisting {
3822		_p0 = 1
3823	}
3824	r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
3825	if r1 == 0 {
3826		err = errnoErr(e1)
3827	}
3828	return
3829}
3830
3831func DestroyEnvironmentBlock(block *uint16) (err error) {
3832	r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
3833	if r1 == 0 {
3834		err = errnoErr(e1)
3835	}
3836	return
3837}
3838
3839func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
3840	r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
3841	if r1 == 0 {
3842		err = errnoErr(e1)
3843	}
3844	return
3845}
3846
3847func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {
3848	var _p0 *uint16
3849	_p0, err = syscall.UTF16PtrFromString(filename)
3850	if err != nil {
3851		return
3852	}
3853	return _GetFileVersionInfoSize(_p0, zeroHandle)
3854}
3855
3856func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {
3857	r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0)
3858	bufSize = uint32(r0)
3859	if bufSize == 0 {
3860		err = errnoErr(e1)
3861	}
3862	return
3863}
3864
3865func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {
3866	var _p0 *uint16
3867	_p0, err = syscall.UTF16PtrFromString(filename)
3868	if err != nil {
3869		return
3870	}
3871	return _GetFileVersionInfo(_p0, handle, bufSize, buffer)
3872}
3873
3874func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {
3875	r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0)
3876	if r1 == 0 {
3877		err = errnoErr(e1)
3878	}
3879	return
3880}
3881
3882func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {
3883	var _p0 *uint16
3884	_p0, err = syscall.UTF16PtrFromString(subBlock)
3885	if err != nil {
3886		return
3887	}
3888	return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)
3889}
3890
3891func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {
3892	r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0)
3893	if r1 == 0 {
3894		err = errnoErr(e1)
3895	}
3896	return
3897}
3898
3899func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
3900	r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
3901	if r0 != 0 {
3902		ret = syscall.Errno(r0)
3903	}
3904	return
3905}
3906
3907func FreeAddrInfoW(addrinfo *AddrinfoW) {
3908	syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
3909	return
3910}
3911
3912func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
3913	r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
3914	if r0 != 0 {
3915		sockerr = syscall.Errno(r0)
3916	}
3917	return
3918}
3919
3920func WSACleanup() (err error) {
3921	r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
3922	if r1 == socket_error {
3923		err = errnoErr(e1)
3924	}
3925	return
3926}
3927
3928func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
3929	r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
3930	n = int32(r0)
3931	if n == -1 {
3932		err = errnoErr(e1)
3933	}
3934	return
3935}
3936
3937func WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) {
3938	var _p0 uint32
3939	if wait {
3940		_p0 = 1
3941	}
3942	r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0)
3943	if r1 == 0 {
3944		err = errnoErr(e1)
3945	}
3946	return
3947}
3948
3949func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
3950	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))
3951	if r1 == socket_error {
3952		err = errnoErr(e1)
3953	}
3954	return
3955}
3956
3957func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
3958	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)
3959	if r1 == socket_error {
3960		err = errnoErr(e1)
3961	}
3962	return
3963}
3964
3965func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
3966	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)))
3967	if r1 == socket_error {
3968		err = errnoErr(e1)
3969	}
3970	return
3971}
3972
3973func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
3974	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)
3975	if r1 == socket_error {
3976		err = errnoErr(e1)
3977	}
3978	return
3979}
3980
3981func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
3982	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)))
3983	if r1 == socket_error {
3984		err = errnoErr(e1)
3985	}
3986	return
3987}
3988
3989func WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) {
3990	r0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags))
3991	handle = Handle(r0)
3992	if handle == InvalidHandle {
3993		err = errnoErr(e1)
3994	}
3995	return
3996}
3997
3998func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
3999	r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
4000	if r0 != 0 {
4001		sockerr = syscall.Errno(r0)
4002	}
4003	return
4004}
4005
4006func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
4007	r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
4008	if r1 == socket_error {
4009		err = errnoErr(e1)
4010	}
4011	return
4012}
4013
4014func Closesocket(s Handle) (err error) {
4015	r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
4016	if r1 == socket_error {
4017		err = errnoErr(e1)
4018	}
4019	return
4020}
4021
4022func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
4023	r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
4024	if r1 == socket_error {
4025		err = errnoErr(e1)
4026	}
4027	return
4028}
4029
4030func GetHostByName(name string) (h *Hostent, err error) {
4031	var _p0 *byte
4032	_p0, err = syscall.BytePtrFromString(name)
4033	if err != nil {
4034		return
4035	}
4036	return _GetHostByName(_p0)
4037}
4038
4039func _GetHostByName(name *byte) (h *Hostent, err error) {
4040	r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
4041	h = (*Hostent)(unsafe.Pointer(r0))
4042	if h == nil {
4043		err = errnoErr(e1)
4044	}
4045	return
4046}
4047
4048func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
4049	r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
4050	if r1 == socket_error {
4051		err = errnoErr(e1)
4052	}
4053	return
4054}
4055
4056func GetProtoByName(name string) (p *Protoent, err error) {
4057	var _p0 *byte
4058	_p0, err = syscall.BytePtrFromString(name)
4059	if err != nil {
4060		return
4061	}
4062	return _GetProtoByName(_p0)
4063}
4064
4065func _GetProtoByName(name *byte) (p *Protoent, err error) {
4066	r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
4067	p = (*Protoent)(unsafe.Pointer(r0))
4068	if p == nil {
4069		err = errnoErr(e1)
4070	}
4071	return
4072}
4073
4074func GetServByName(name string, proto string) (s *Servent, err error) {
4075	var _p0 *byte
4076	_p0, err = syscall.BytePtrFromString(name)
4077	if err != nil {
4078		return
4079	}
4080	var _p1 *byte
4081	_p1, err = syscall.BytePtrFromString(proto)
4082	if err != nil {
4083		return
4084	}
4085	return _GetServByName(_p0, _p1)
4086}
4087
4088func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
4089	r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
4090	s = (*Servent)(unsafe.Pointer(r0))
4091	if s == nil {
4092		err = errnoErr(e1)
4093	}
4094	return
4095}
4096
4097func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
4098	r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
4099	if r1 == socket_error {
4100		err = errnoErr(e1)
4101	}
4102	return
4103}
4104
4105func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
4106	r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
4107	if r1 == socket_error {
4108		err = errnoErr(e1)
4109	}
4110	return
4111}
4112
4113func listen(s Handle, backlog int32) (err error) {
4114	r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
4115	if r1 == socket_error {
4116		err = errnoErr(e1)
4117	}
4118	return
4119}
4120
4121func Ntohs(netshort uint16) (u uint16) {
4122	r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
4123	u = uint16(r0)
4124	return
4125}
4126
4127func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {
4128	var _p0 *byte
4129	if len(buf) > 0 {
4130		_p0 = &buf[0]
4131	}
4132	r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
4133	n = int32(r0)
4134	if n == -1 {
4135		err = errnoErr(e1)
4136	}
4137	return
4138}
4139
4140func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {
4141	var _p0 *byte
4142	if len(buf) > 0 {
4143		_p0 = &buf[0]
4144	}
4145	r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))
4146	if r1 == socket_error {
4147		err = errnoErr(e1)
4148	}
4149	return
4150}
4151
4152func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
4153	r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
4154	if r1 == socket_error {
4155		err = errnoErr(e1)
4156	}
4157	return
4158}
4159
4160func shutdown(s Handle, how int32) (err error) {
4161	r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
4162	if r1 == socket_error {
4163		err = errnoErr(e1)
4164	}
4165	return
4166}
4167
4168func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
4169	r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
4170	handle = Handle(r0)
4171	if handle == InvalidHandle {
4172		err = errnoErr(e1)
4173	}
4174	return
4175}
4176
4177func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {
4178	r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)
4179	if r1 == 0 {
4180		err = errnoErr(e1)
4181	}
4182	return
4183}
4184
4185func WTSFreeMemory(ptr uintptr) {
4186	syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
4187	return
4188}
4189
4190func WTSQueryUserToken(session uint32, token *Token) (err error) {
4191	r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)
4192	if r1 == 0 {
4193		err = errnoErr(e1)
4194	}
4195	return
4196}
4197