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