You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

types_windows.go 46KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690
  1. // Copyright 2011 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package windows
  5. import (
  6. "net"
  7. "syscall"
  8. "unsafe"
  9. )
  10. const (
  11. // Invented values to support what package os expects.
  12. O_RDONLY = 0x00000
  13. O_WRONLY = 0x00001
  14. O_RDWR = 0x00002
  15. O_CREAT = 0x00040
  16. O_EXCL = 0x00080
  17. O_NOCTTY = 0x00100
  18. O_TRUNC = 0x00200
  19. O_NONBLOCK = 0x00800
  20. O_APPEND = 0x00400
  21. O_SYNC = 0x01000
  22. O_ASYNC = 0x02000
  23. O_CLOEXEC = 0x80000
  24. )
  25. const (
  26. // More invented values for signals
  27. SIGHUP = Signal(0x1)
  28. SIGINT = Signal(0x2)
  29. SIGQUIT = Signal(0x3)
  30. SIGILL = Signal(0x4)
  31. SIGTRAP = Signal(0x5)
  32. SIGABRT = Signal(0x6)
  33. SIGBUS = Signal(0x7)
  34. SIGFPE = Signal(0x8)
  35. SIGKILL = Signal(0x9)
  36. SIGSEGV = Signal(0xb)
  37. SIGPIPE = Signal(0xd)
  38. SIGALRM = Signal(0xe)
  39. SIGTERM = Signal(0xf)
  40. )
  41. var signals = [...]string{
  42. 1: "hangup",
  43. 2: "interrupt",
  44. 3: "quit",
  45. 4: "illegal instruction",
  46. 5: "trace/breakpoint trap",
  47. 6: "aborted",
  48. 7: "bus error",
  49. 8: "floating point exception",
  50. 9: "killed",
  51. 10: "user defined signal 1",
  52. 11: "segmentation fault",
  53. 12: "user defined signal 2",
  54. 13: "broken pipe",
  55. 14: "alarm clock",
  56. 15: "terminated",
  57. }
  58. const (
  59. GENERIC_READ = 0x80000000
  60. GENERIC_WRITE = 0x40000000
  61. GENERIC_EXECUTE = 0x20000000
  62. GENERIC_ALL = 0x10000000
  63. FILE_LIST_DIRECTORY = 0x00000001
  64. FILE_APPEND_DATA = 0x00000004
  65. FILE_WRITE_ATTRIBUTES = 0x00000100
  66. FILE_SHARE_READ = 0x00000001
  67. FILE_SHARE_WRITE = 0x00000002
  68. FILE_SHARE_DELETE = 0x00000004
  69. FILE_ATTRIBUTE_READONLY = 0x00000001
  70. FILE_ATTRIBUTE_HIDDEN = 0x00000002
  71. FILE_ATTRIBUTE_SYSTEM = 0x00000004
  72. FILE_ATTRIBUTE_DIRECTORY = 0x00000010
  73. FILE_ATTRIBUTE_ARCHIVE = 0x00000020
  74. FILE_ATTRIBUTE_DEVICE = 0x00000040
  75. FILE_ATTRIBUTE_NORMAL = 0x00000080
  76. FILE_ATTRIBUTE_TEMPORARY = 0x00000100
  77. FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
  78. FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
  79. FILE_ATTRIBUTE_COMPRESSED = 0x00000800
  80. FILE_ATTRIBUTE_OFFLINE = 0x00001000
  81. FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
  82. FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
  83. FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000
  84. FILE_ATTRIBUTE_VIRTUAL = 0x00010000
  85. FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000
  86. FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
  87. FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
  88. INVALID_FILE_ATTRIBUTES = 0xffffffff
  89. CREATE_NEW = 1
  90. CREATE_ALWAYS = 2
  91. OPEN_EXISTING = 3
  92. OPEN_ALWAYS = 4
  93. TRUNCATE_EXISTING = 5
  94. FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000
  95. FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
  96. FILE_FLAG_OPEN_NO_RECALL = 0x00100000
  97. FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
  98. FILE_FLAG_SESSION_AWARE = 0x00800000
  99. FILE_FLAG_POSIX_SEMANTICS = 0x01000000
  100. FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
  101. FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
  102. FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
  103. FILE_FLAG_RANDOM_ACCESS = 0x10000000
  104. FILE_FLAG_NO_BUFFERING = 0x20000000
  105. FILE_FLAG_OVERLAPPED = 0x40000000
  106. FILE_FLAG_WRITE_THROUGH = 0x80000000
  107. HANDLE_FLAG_INHERIT = 0x00000001
  108. STARTF_USESTDHANDLES = 0x00000100
  109. STARTF_USESHOWWINDOW = 0x00000001
  110. DUPLICATE_CLOSE_SOURCE = 0x00000001
  111. DUPLICATE_SAME_ACCESS = 0x00000002
  112. STD_INPUT_HANDLE = -10 & (1<<32 - 1)
  113. STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
  114. STD_ERROR_HANDLE = -12 & (1<<32 - 1)
  115. FILE_BEGIN = 0
  116. FILE_CURRENT = 1
  117. FILE_END = 2
  118. LANG_ENGLISH = 0x09
  119. SUBLANG_ENGLISH_US = 0x01
  120. FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
  121. FORMAT_MESSAGE_IGNORE_INSERTS = 512
  122. FORMAT_MESSAGE_FROM_STRING = 1024
  123. FORMAT_MESSAGE_FROM_HMODULE = 2048
  124. FORMAT_MESSAGE_FROM_SYSTEM = 4096
  125. FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
  126. FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
  127. MAX_PATH = 260
  128. MAX_LONG_PATH = 32768
  129. MAX_COMPUTERNAME_LENGTH = 15
  130. TIME_ZONE_ID_UNKNOWN = 0
  131. TIME_ZONE_ID_STANDARD = 1
  132. TIME_ZONE_ID_DAYLIGHT = 2
  133. IGNORE = 0
  134. INFINITE = 0xffffffff
  135. WAIT_ABANDONED = 0x00000080
  136. WAIT_OBJECT_0 = 0x00000000
  137. WAIT_FAILED = 0xFFFFFFFF
  138. // Standard access rights.
  139. DELETE = 0x00010000
  140. READ_CONTROL = 0x00020000
  141. SYNCHRONIZE = 0x00100000
  142. WRITE_DAC = 0x00040000
  143. WRITE_OWNER = 0x00080000
  144. // Access rights for process.
  145. PROCESS_CREATE_PROCESS = 0x0080
  146. PROCESS_CREATE_THREAD = 0x0002
  147. PROCESS_DUP_HANDLE = 0x0040
  148. PROCESS_QUERY_INFORMATION = 0x0400
  149. PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
  150. PROCESS_SET_INFORMATION = 0x0200
  151. PROCESS_SET_QUOTA = 0x0100
  152. PROCESS_SUSPEND_RESUME = 0x0800
  153. PROCESS_TERMINATE = 0x0001
  154. PROCESS_VM_OPERATION = 0x0008
  155. PROCESS_VM_READ = 0x0010
  156. PROCESS_VM_WRITE = 0x0020
  157. // Access rights for thread.
  158. THREAD_DIRECT_IMPERSONATION = 0x0200
  159. THREAD_GET_CONTEXT = 0x0008
  160. THREAD_IMPERSONATE = 0x0100
  161. THREAD_QUERY_INFORMATION = 0x0040
  162. THREAD_QUERY_LIMITED_INFORMATION = 0x0800
  163. THREAD_SET_CONTEXT = 0x0010
  164. THREAD_SET_INFORMATION = 0x0020
  165. THREAD_SET_LIMITED_INFORMATION = 0x0400
  166. THREAD_SET_THREAD_TOKEN = 0x0080
  167. THREAD_SUSPEND_RESUME = 0x0002
  168. THREAD_TERMINATE = 0x0001
  169. FILE_MAP_COPY = 0x01
  170. FILE_MAP_WRITE = 0x02
  171. FILE_MAP_READ = 0x04
  172. FILE_MAP_EXECUTE = 0x20
  173. CTRL_C_EVENT = 0
  174. CTRL_BREAK_EVENT = 1
  175. CTRL_CLOSE_EVENT = 2
  176. CTRL_LOGOFF_EVENT = 5
  177. CTRL_SHUTDOWN_EVENT = 6
  178. // Windows reserves errors >= 1<<29 for application use.
  179. APPLICATION_ERROR = 1 << 29
  180. )
  181. const (
  182. // Process creation flags.
  183. CREATE_BREAKAWAY_FROM_JOB = 0x01000000
  184. CREATE_DEFAULT_ERROR_MODE = 0x04000000
  185. CREATE_NEW_CONSOLE = 0x00000010
  186. CREATE_NEW_PROCESS_GROUP = 0x00000200
  187. CREATE_NO_WINDOW = 0x08000000
  188. CREATE_PROTECTED_PROCESS = 0x00040000
  189. CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
  190. CREATE_SEPARATE_WOW_VDM = 0x00000800
  191. CREATE_SHARED_WOW_VDM = 0x00001000
  192. CREATE_SUSPENDED = 0x00000004
  193. CREATE_UNICODE_ENVIRONMENT = 0x00000400
  194. DEBUG_ONLY_THIS_PROCESS = 0x00000002
  195. DEBUG_PROCESS = 0x00000001
  196. DETACHED_PROCESS = 0x00000008
  197. EXTENDED_STARTUPINFO_PRESENT = 0x00080000
  198. INHERIT_PARENT_AFFINITY = 0x00010000
  199. )
  200. const (
  201. // flags for CreateToolhelp32Snapshot
  202. TH32CS_SNAPHEAPLIST = 0x01
  203. TH32CS_SNAPPROCESS = 0x02
  204. TH32CS_SNAPTHREAD = 0x04
  205. TH32CS_SNAPMODULE = 0x08
  206. TH32CS_SNAPMODULE32 = 0x10
  207. TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
  208. TH32CS_INHERIT = 0x80000000
  209. )
  210. const (
  211. // filters for ReadDirectoryChangesW
  212. FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
  213. FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
  214. FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
  215. FILE_NOTIFY_CHANGE_SIZE = 0x008
  216. FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
  217. FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
  218. FILE_NOTIFY_CHANGE_CREATION = 0x040
  219. FILE_NOTIFY_CHANGE_SECURITY = 0x100
  220. )
  221. const (
  222. // do not reorder
  223. FILE_ACTION_ADDED = iota + 1
  224. FILE_ACTION_REMOVED
  225. FILE_ACTION_MODIFIED
  226. FILE_ACTION_RENAMED_OLD_NAME
  227. FILE_ACTION_RENAMED_NEW_NAME
  228. )
  229. const (
  230. // wincrypt.h
  231. PROV_RSA_FULL = 1
  232. PROV_RSA_SIG = 2
  233. PROV_DSS = 3
  234. PROV_FORTEZZA = 4
  235. PROV_MS_EXCHANGE = 5
  236. PROV_SSL = 6
  237. PROV_RSA_SCHANNEL = 12
  238. PROV_DSS_DH = 13
  239. PROV_EC_ECDSA_SIG = 14
  240. PROV_EC_ECNRA_SIG = 15
  241. PROV_EC_ECDSA_FULL = 16
  242. PROV_EC_ECNRA_FULL = 17
  243. PROV_DH_SCHANNEL = 18
  244. PROV_SPYRUS_LYNKS = 20
  245. PROV_RNG = 21
  246. PROV_INTEL_SEC = 22
  247. PROV_REPLACE_OWF = 23
  248. PROV_RSA_AES = 24
  249. CRYPT_VERIFYCONTEXT = 0xF0000000
  250. CRYPT_NEWKEYSET = 0x00000008
  251. CRYPT_DELETEKEYSET = 0x00000010
  252. CRYPT_MACHINE_KEYSET = 0x00000020
  253. CRYPT_SILENT = 0x00000040
  254. CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
  255. USAGE_MATCH_TYPE_AND = 0
  256. USAGE_MATCH_TYPE_OR = 1
  257. /* msgAndCertEncodingType values for CertOpenStore function */
  258. X509_ASN_ENCODING = 0x00000001
  259. PKCS_7_ASN_ENCODING = 0x00010000
  260. /* storeProvider values for CertOpenStore function */
  261. CERT_STORE_PROV_MSG = 1
  262. CERT_STORE_PROV_MEMORY = 2
  263. CERT_STORE_PROV_FILE = 3
  264. CERT_STORE_PROV_REG = 4
  265. CERT_STORE_PROV_PKCS7 = 5
  266. CERT_STORE_PROV_SERIALIZED = 6
  267. CERT_STORE_PROV_FILENAME_A = 7
  268. CERT_STORE_PROV_FILENAME_W = 8
  269. CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W
  270. CERT_STORE_PROV_SYSTEM_A = 9
  271. CERT_STORE_PROV_SYSTEM_W = 10
  272. CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W
  273. CERT_STORE_PROV_COLLECTION = 11
  274. CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12
  275. CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13
  276. CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W
  277. CERT_STORE_PROV_PHYSICAL_W = 14
  278. CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W
  279. CERT_STORE_PROV_SMART_CARD_W = 15
  280. CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W
  281. CERT_STORE_PROV_LDAP_W = 16
  282. CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W
  283. CERT_STORE_PROV_PKCS12 = 17
  284. /* store characteristics (low WORD of flag) for CertOpenStore function */
  285. CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001
  286. CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002
  287. CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
  288. CERT_STORE_DELETE_FLAG = 0x00000010
  289. CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020
  290. CERT_STORE_SHARE_STORE_FLAG = 0x00000040
  291. CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080
  292. CERT_STORE_MANIFOLD_FLAG = 0x00000100
  293. CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200
  294. CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400
  295. CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800
  296. CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000
  297. CERT_STORE_CREATE_NEW_FLAG = 0x00002000
  298. CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
  299. CERT_STORE_READONLY_FLAG = 0x00008000
  300. /* store locations (high WORD of flag) for CertOpenStore function */
  301. CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000
  302. CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000
  303. CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000
  304. CERT_SYSTEM_STORE_SERVICES = 0x00050000
  305. CERT_SYSTEM_STORE_USERS = 0x00060000
  306. CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000
  307. CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000
  308. CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000
  309. CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000
  310. CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000
  311. /* Miscellaneous high-WORD flags for CertOpenStore function */
  312. CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000
  313. CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000
  314. CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000
  315. CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000
  316. CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000
  317. CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000
  318. CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000
  319. CERT_LDAP_STORE_SIGN_FLAG = 0x00010000
  320. CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000
  321. CERT_LDAP_STORE_OPENED_FLAG = 0x00040000
  322. CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000
  323. /* addDisposition values for CertAddCertificateContextToStore function */
  324. CERT_STORE_ADD_NEW = 1
  325. CERT_STORE_ADD_USE_EXISTING = 2
  326. CERT_STORE_ADD_REPLACE_EXISTING = 3
  327. CERT_STORE_ADD_ALWAYS = 4
  328. CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5
  329. CERT_STORE_ADD_NEWER = 6
  330. CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7
  331. /* ErrorStatus values for CertTrustStatus struct */
  332. CERT_TRUST_NO_ERROR = 0x00000000
  333. CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
  334. CERT_TRUST_IS_REVOKED = 0x00000004
  335. CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
  336. CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
  337. CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
  338. CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
  339. CERT_TRUST_IS_CYCLIC = 0x00000080
  340. CERT_TRUST_INVALID_EXTENSION = 0x00000100
  341. CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
  342. CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
  343. CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
  344. CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
  345. CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
  346. CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
  347. CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
  348. CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000
  349. CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000
  350. CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000
  351. CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000
  352. CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000
  353. CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
  354. CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
  355. CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
  356. CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
  357. /* InfoStatus values for CertTrustStatus struct */
  358. CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001
  359. CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002
  360. CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004
  361. CERT_TRUST_IS_SELF_SIGNED = 0x00000008
  362. CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100
  363. CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400
  364. CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400
  365. CERT_TRUST_IS_PEER_TRUSTED = 0x00000800
  366. CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000
  367. CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000
  368. CERT_TRUST_IS_CA_TRUSTED = 0x00004000
  369. CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000
  370. /* policyOID values for CertVerifyCertificateChainPolicy function */
  371. CERT_CHAIN_POLICY_BASE = 1
  372. CERT_CHAIN_POLICY_AUTHENTICODE = 2
  373. CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
  374. CERT_CHAIN_POLICY_SSL = 4
  375. CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
  376. CERT_CHAIN_POLICY_NT_AUTH = 6
  377. CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
  378. CERT_CHAIN_POLICY_EV = 8
  379. CERT_CHAIN_POLICY_SSL_F12 = 9
  380. /* AuthType values for SSLExtraCertChainPolicyPara struct */
  381. AUTHTYPE_CLIENT = 1
  382. AUTHTYPE_SERVER = 2
  383. /* Checks values for SSLExtraCertChainPolicyPara struct */
  384. SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080
  385. SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100
  386. SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
  387. SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
  388. SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
  389. )
  390. const (
  391. // flags for SetErrorMode
  392. SEM_FAILCRITICALERRORS = 0x0001
  393. SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
  394. SEM_NOGPFAULTERRORBOX = 0x0002
  395. SEM_NOOPENFILEERRORBOX = 0x8000
  396. )
  397. const (
  398. // Priority class.
  399. ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
  400. BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
  401. HIGH_PRIORITY_CLASS = 0x00000080
  402. IDLE_PRIORITY_CLASS = 0x00000040
  403. NORMAL_PRIORITY_CLASS = 0x00000020
  404. PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000
  405. PROCESS_MODE_BACKGROUND_END = 0x00200000
  406. REALTIME_PRIORITY_CLASS = 0x00000100
  407. )
  408. var (
  409. OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
  410. OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
  411. OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
  412. )
  413. // Pointer represents a pointer to an arbitrary Windows type.
  414. //
  415. // Pointer-typed fields may point to one of many different types. It's
  416. // up to the caller to provide a pointer to the appropriate type, cast
  417. // to Pointer. The caller must obey the unsafe.Pointer rules while
  418. // doing so.
  419. type Pointer *struct{}
  420. // Invented values to support what package os expects.
  421. type Timeval struct {
  422. Sec int32
  423. Usec int32
  424. }
  425. func (tv *Timeval) Nanoseconds() int64 {
  426. return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
  427. }
  428. func NsecToTimeval(nsec int64) (tv Timeval) {
  429. tv.Sec = int32(nsec / 1e9)
  430. tv.Usec = int32(nsec % 1e9 / 1e3)
  431. return
  432. }
  433. type SecurityAttributes struct {
  434. Length uint32
  435. SecurityDescriptor uintptr
  436. InheritHandle uint32
  437. }
  438. type Overlapped struct {
  439. Internal uintptr
  440. InternalHigh uintptr
  441. Offset uint32
  442. OffsetHigh uint32
  443. HEvent Handle
  444. }
  445. type FileNotifyInformation struct {
  446. NextEntryOffset uint32
  447. Action uint32
  448. FileNameLength uint32
  449. FileName uint16
  450. }
  451. type Filetime struct {
  452. LowDateTime uint32
  453. HighDateTime uint32
  454. }
  455. // Nanoseconds returns Filetime ft in nanoseconds
  456. // since Epoch (00:00:00 UTC, January 1, 1970).
  457. func (ft *Filetime) Nanoseconds() int64 {
  458. // 100-nanosecond intervals since January 1, 1601
  459. nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
  460. // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
  461. nsec -= 116444736000000000
  462. // convert into nanoseconds
  463. nsec *= 100
  464. return nsec
  465. }
  466. func NsecToFiletime(nsec int64) (ft Filetime) {
  467. // convert into 100-nanosecond
  468. nsec /= 100
  469. // change starting time to January 1, 1601
  470. nsec += 116444736000000000
  471. // split into high / low
  472. ft.LowDateTime = uint32(nsec & 0xffffffff)
  473. ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
  474. return ft
  475. }
  476. type Win32finddata struct {
  477. FileAttributes uint32
  478. CreationTime Filetime
  479. LastAccessTime Filetime
  480. LastWriteTime Filetime
  481. FileSizeHigh uint32
  482. FileSizeLow uint32
  483. Reserved0 uint32
  484. Reserved1 uint32
  485. FileName [MAX_PATH - 1]uint16
  486. AlternateFileName [13]uint16
  487. }
  488. // This is the actual system call structure.
  489. // Win32finddata is what we committed to in Go 1.
  490. type win32finddata1 struct {
  491. FileAttributes uint32
  492. CreationTime Filetime
  493. LastAccessTime Filetime
  494. LastWriteTime Filetime
  495. FileSizeHigh uint32
  496. FileSizeLow uint32
  497. Reserved0 uint32
  498. Reserved1 uint32
  499. FileName [MAX_PATH]uint16
  500. AlternateFileName [14]uint16
  501. }
  502. func copyFindData(dst *Win32finddata, src *win32finddata1) {
  503. dst.FileAttributes = src.FileAttributes
  504. dst.CreationTime = src.CreationTime
  505. dst.LastAccessTime = src.LastAccessTime
  506. dst.LastWriteTime = src.LastWriteTime
  507. dst.FileSizeHigh = src.FileSizeHigh
  508. dst.FileSizeLow = src.FileSizeLow
  509. dst.Reserved0 = src.Reserved0
  510. dst.Reserved1 = src.Reserved1
  511. // The src is 1 element bigger than dst, but it must be NUL.
  512. copy(dst.FileName[:], src.FileName[:])
  513. copy(dst.AlternateFileName[:], src.AlternateFileName[:])
  514. }
  515. type ByHandleFileInformation struct {
  516. FileAttributes uint32
  517. CreationTime Filetime
  518. LastAccessTime Filetime
  519. LastWriteTime Filetime
  520. VolumeSerialNumber uint32
  521. FileSizeHigh uint32
  522. FileSizeLow uint32
  523. NumberOfLinks uint32
  524. FileIndexHigh uint32
  525. FileIndexLow uint32
  526. }
  527. const (
  528. GetFileExInfoStandard = 0
  529. GetFileExMaxInfoLevel = 1
  530. )
  531. type Win32FileAttributeData struct {
  532. FileAttributes uint32
  533. CreationTime Filetime
  534. LastAccessTime Filetime
  535. LastWriteTime Filetime
  536. FileSizeHigh uint32
  537. FileSizeLow uint32
  538. }
  539. // ShowWindow constants
  540. const (
  541. // winuser.h
  542. SW_HIDE = 0
  543. SW_NORMAL = 1
  544. SW_SHOWNORMAL = 1
  545. SW_SHOWMINIMIZED = 2
  546. SW_SHOWMAXIMIZED = 3
  547. SW_MAXIMIZE = 3
  548. SW_SHOWNOACTIVATE = 4
  549. SW_SHOW = 5
  550. SW_MINIMIZE = 6
  551. SW_SHOWMINNOACTIVE = 7
  552. SW_SHOWNA = 8
  553. SW_RESTORE = 9
  554. SW_SHOWDEFAULT = 10
  555. SW_FORCEMINIMIZE = 11
  556. )
  557. type StartupInfo struct {
  558. Cb uint32
  559. _ *uint16
  560. Desktop *uint16
  561. Title *uint16
  562. X uint32
  563. Y uint32
  564. XSize uint32
  565. YSize uint32
  566. XCountChars uint32
  567. YCountChars uint32
  568. FillAttribute uint32
  569. Flags uint32
  570. ShowWindow uint16
  571. _ uint16
  572. _ *byte
  573. StdInput Handle
  574. StdOutput Handle
  575. StdErr Handle
  576. }
  577. type ProcessInformation struct {
  578. Process Handle
  579. Thread Handle
  580. ProcessId uint32
  581. ThreadId uint32
  582. }
  583. type ProcessEntry32 struct {
  584. Size uint32
  585. Usage uint32
  586. ProcessID uint32
  587. DefaultHeapID uintptr
  588. ModuleID uint32
  589. Threads uint32
  590. ParentProcessID uint32
  591. PriClassBase int32
  592. Flags uint32
  593. ExeFile [MAX_PATH]uint16
  594. }
  595. type ThreadEntry32 struct {
  596. Size uint32
  597. Usage uint32
  598. ThreadID uint32
  599. OwnerProcessID uint32
  600. BasePri int32
  601. DeltaPri int32
  602. Flags uint32
  603. }
  604. type Systemtime struct {
  605. Year uint16
  606. Month uint16
  607. DayOfWeek uint16
  608. Day uint16
  609. Hour uint16
  610. Minute uint16
  611. Second uint16
  612. Milliseconds uint16
  613. }
  614. type Timezoneinformation struct {
  615. Bias int32
  616. StandardName [32]uint16
  617. StandardDate Systemtime
  618. StandardBias int32
  619. DaylightName [32]uint16
  620. DaylightDate Systemtime
  621. DaylightBias int32
  622. }
  623. // Socket related.
  624. const (
  625. AF_UNSPEC = 0
  626. AF_UNIX = 1
  627. AF_INET = 2
  628. AF_INET6 = 23
  629. AF_NETBIOS = 17
  630. SOCK_STREAM = 1
  631. SOCK_DGRAM = 2
  632. SOCK_RAW = 3
  633. SOCK_SEQPACKET = 5
  634. IPPROTO_IP = 0
  635. IPPROTO_IPV6 = 0x29
  636. IPPROTO_TCP = 6
  637. IPPROTO_UDP = 17
  638. SOL_SOCKET = 0xffff
  639. SO_REUSEADDR = 4
  640. SO_KEEPALIVE = 8
  641. SO_DONTROUTE = 16
  642. SO_BROADCAST = 32
  643. SO_LINGER = 128
  644. SO_RCVBUF = 0x1002
  645. SO_SNDBUF = 0x1001
  646. SO_UPDATE_ACCEPT_CONTEXT = 0x700b
  647. SO_UPDATE_CONNECT_CONTEXT = 0x7010
  648. IOC_OUT = 0x40000000
  649. IOC_IN = 0x80000000
  650. IOC_VENDOR = 0x18000000
  651. IOC_INOUT = IOC_IN | IOC_OUT
  652. IOC_WS2 = 0x08000000
  653. SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
  654. SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
  655. SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
  656. // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
  657. IP_TOS = 0x3
  658. IP_TTL = 0x4
  659. IP_MULTICAST_IF = 0x9
  660. IP_MULTICAST_TTL = 0xa
  661. IP_MULTICAST_LOOP = 0xb
  662. IP_ADD_MEMBERSHIP = 0xc
  663. IP_DROP_MEMBERSHIP = 0xd
  664. IPV6_V6ONLY = 0x1b
  665. IPV6_UNICAST_HOPS = 0x4
  666. IPV6_MULTICAST_IF = 0x9
  667. IPV6_MULTICAST_HOPS = 0xa
  668. IPV6_MULTICAST_LOOP = 0xb
  669. IPV6_JOIN_GROUP = 0xc
  670. IPV6_LEAVE_GROUP = 0xd
  671. MSG_OOB = 0x1
  672. MSG_PEEK = 0x2
  673. MSG_DONTROUTE = 0x4
  674. MSG_WAITALL = 0x8
  675. MSG_TRUNC = 0x0100
  676. MSG_CTRUNC = 0x0200
  677. MSG_BCAST = 0x0400
  678. MSG_MCAST = 0x0800
  679. SOMAXCONN = 0x7fffffff
  680. TCP_NODELAY = 1
  681. SHUT_RD = 0
  682. SHUT_WR = 1
  683. SHUT_RDWR = 2
  684. WSADESCRIPTION_LEN = 256
  685. WSASYS_STATUS_LEN = 128
  686. )
  687. type WSABuf struct {
  688. Len uint32
  689. Buf *byte
  690. }
  691. type WSAMsg struct {
  692. Name *syscall.RawSockaddrAny
  693. Namelen int32
  694. Buffers *WSABuf
  695. BufferCount uint32
  696. Control WSABuf
  697. Flags uint32
  698. }
  699. // Invented values to support what package os expects.
  700. const (
  701. S_IFMT = 0x1f000
  702. S_IFIFO = 0x1000
  703. S_IFCHR = 0x2000
  704. S_IFDIR = 0x4000
  705. S_IFBLK = 0x6000
  706. S_IFREG = 0x8000
  707. S_IFLNK = 0xa000
  708. S_IFSOCK = 0xc000
  709. S_ISUID = 0x800
  710. S_ISGID = 0x400
  711. S_ISVTX = 0x200
  712. S_IRUSR = 0x100
  713. S_IWRITE = 0x80
  714. S_IWUSR = 0x80
  715. S_IXUSR = 0x40
  716. )
  717. const (
  718. FILE_TYPE_CHAR = 0x0002
  719. FILE_TYPE_DISK = 0x0001
  720. FILE_TYPE_PIPE = 0x0003
  721. FILE_TYPE_REMOTE = 0x8000
  722. FILE_TYPE_UNKNOWN = 0x0000
  723. )
  724. type Hostent struct {
  725. Name *byte
  726. Aliases **byte
  727. AddrType uint16
  728. Length uint16
  729. AddrList **byte
  730. }
  731. type Protoent struct {
  732. Name *byte
  733. Aliases **byte
  734. Proto uint16
  735. }
  736. const (
  737. DNS_TYPE_A = 0x0001
  738. DNS_TYPE_NS = 0x0002
  739. DNS_TYPE_MD = 0x0003
  740. DNS_TYPE_MF = 0x0004
  741. DNS_TYPE_CNAME = 0x0005
  742. DNS_TYPE_SOA = 0x0006
  743. DNS_TYPE_MB = 0x0007
  744. DNS_TYPE_MG = 0x0008
  745. DNS_TYPE_MR = 0x0009
  746. DNS_TYPE_NULL = 0x000a
  747. DNS_TYPE_WKS = 0x000b
  748. DNS_TYPE_PTR = 0x000c
  749. DNS_TYPE_HINFO = 0x000d
  750. DNS_TYPE_MINFO = 0x000e
  751. DNS_TYPE_MX = 0x000f
  752. DNS_TYPE_TEXT = 0x0010
  753. DNS_TYPE_RP = 0x0011
  754. DNS_TYPE_AFSDB = 0x0012
  755. DNS_TYPE_X25 = 0x0013
  756. DNS_TYPE_ISDN = 0x0014
  757. DNS_TYPE_RT = 0x0015
  758. DNS_TYPE_NSAP = 0x0016
  759. DNS_TYPE_NSAPPTR = 0x0017
  760. DNS_TYPE_SIG = 0x0018
  761. DNS_TYPE_KEY = 0x0019
  762. DNS_TYPE_PX = 0x001a
  763. DNS_TYPE_GPOS = 0x001b
  764. DNS_TYPE_AAAA = 0x001c
  765. DNS_TYPE_LOC = 0x001d
  766. DNS_TYPE_NXT = 0x001e
  767. DNS_TYPE_EID = 0x001f
  768. DNS_TYPE_NIMLOC = 0x0020
  769. DNS_TYPE_SRV = 0x0021
  770. DNS_TYPE_ATMA = 0x0022
  771. DNS_TYPE_NAPTR = 0x0023
  772. DNS_TYPE_KX = 0x0024
  773. DNS_TYPE_CERT = 0x0025
  774. DNS_TYPE_A6 = 0x0026
  775. DNS_TYPE_DNAME = 0x0027
  776. DNS_TYPE_SINK = 0x0028
  777. DNS_TYPE_OPT = 0x0029
  778. DNS_TYPE_DS = 0x002B
  779. DNS_TYPE_RRSIG = 0x002E
  780. DNS_TYPE_NSEC = 0x002F
  781. DNS_TYPE_DNSKEY = 0x0030
  782. DNS_TYPE_DHCID = 0x0031
  783. DNS_TYPE_UINFO = 0x0064
  784. DNS_TYPE_UID = 0x0065
  785. DNS_TYPE_GID = 0x0066
  786. DNS_TYPE_UNSPEC = 0x0067
  787. DNS_TYPE_ADDRS = 0x00f8
  788. DNS_TYPE_TKEY = 0x00f9
  789. DNS_TYPE_TSIG = 0x00fa
  790. DNS_TYPE_IXFR = 0x00fb
  791. DNS_TYPE_AXFR = 0x00fc
  792. DNS_TYPE_MAILB = 0x00fd
  793. DNS_TYPE_MAILA = 0x00fe
  794. DNS_TYPE_ALL = 0x00ff
  795. DNS_TYPE_ANY = 0x00ff
  796. DNS_TYPE_WINS = 0xff01
  797. DNS_TYPE_WINSR = 0xff02
  798. DNS_TYPE_NBSTAT = 0xff01
  799. )
  800. const (
  801. // flags inside DNSRecord.Dw
  802. DnsSectionQuestion = 0x0000
  803. DnsSectionAnswer = 0x0001
  804. DnsSectionAuthority = 0x0002
  805. DnsSectionAdditional = 0x0003
  806. )
  807. type DNSSRVData struct {
  808. Target *uint16
  809. Priority uint16
  810. Weight uint16
  811. Port uint16
  812. Pad uint16
  813. }
  814. type DNSPTRData struct {
  815. Host *uint16
  816. }
  817. type DNSMXData struct {
  818. NameExchange *uint16
  819. Preference uint16
  820. Pad uint16
  821. }
  822. type DNSTXTData struct {
  823. StringCount uint16
  824. StringArray [1]*uint16
  825. }
  826. type DNSRecord struct {
  827. Next *DNSRecord
  828. Name *uint16
  829. Type uint16
  830. Length uint16
  831. Dw uint32
  832. Ttl uint32
  833. Reserved uint32
  834. Data [40]byte
  835. }
  836. const (
  837. TF_DISCONNECT = 1
  838. TF_REUSE_SOCKET = 2
  839. TF_WRITE_BEHIND = 4
  840. TF_USE_DEFAULT_WORKER = 0
  841. TF_USE_SYSTEM_THREAD = 16
  842. TF_USE_KERNEL_APC = 32
  843. )
  844. type TransmitFileBuffers struct {
  845. Head uintptr
  846. HeadLength uint32
  847. Tail uintptr
  848. TailLength uint32
  849. }
  850. const (
  851. IFF_UP = 1
  852. IFF_BROADCAST = 2
  853. IFF_LOOPBACK = 4
  854. IFF_POINTTOPOINT = 8
  855. IFF_MULTICAST = 16
  856. )
  857. const SIO_GET_INTERFACE_LIST = 0x4004747F
  858. // TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
  859. // will be fixed to change variable type as suitable.
  860. type SockaddrGen [24]byte
  861. type InterfaceInfo struct {
  862. Flags uint32
  863. Address SockaddrGen
  864. BroadcastAddress SockaddrGen
  865. Netmask SockaddrGen
  866. }
  867. type IpAddressString struct {
  868. String [16]byte
  869. }
  870. type IpMaskString IpAddressString
  871. type IpAddrString struct {
  872. Next *IpAddrString
  873. IpAddress IpAddressString
  874. IpMask IpMaskString
  875. Context uint32
  876. }
  877. const MAX_ADAPTER_NAME_LENGTH = 256
  878. const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
  879. const MAX_ADAPTER_ADDRESS_LENGTH = 8
  880. type IpAdapterInfo struct {
  881. Next *IpAdapterInfo
  882. ComboIndex uint32
  883. AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
  884. Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
  885. AddressLength uint32
  886. Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
  887. Index uint32
  888. Type uint32
  889. DhcpEnabled uint32
  890. CurrentIpAddress *IpAddrString
  891. IpAddressList IpAddrString
  892. GatewayList IpAddrString
  893. DhcpServer IpAddrString
  894. HaveWins bool
  895. PrimaryWinsServer IpAddrString
  896. SecondaryWinsServer IpAddrString
  897. LeaseObtained int64
  898. LeaseExpires int64
  899. }
  900. const MAXLEN_PHYSADDR = 8
  901. const MAX_INTERFACE_NAME_LEN = 256
  902. const MAXLEN_IFDESCR = 256
  903. type MibIfRow struct {
  904. Name [MAX_INTERFACE_NAME_LEN]uint16
  905. Index uint32
  906. Type uint32
  907. Mtu uint32
  908. Speed uint32
  909. PhysAddrLen uint32
  910. PhysAddr [MAXLEN_PHYSADDR]byte
  911. AdminStatus uint32
  912. OperStatus uint32
  913. LastChange uint32
  914. InOctets uint32
  915. InUcastPkts uint32
  916. InNUcastPkts uint32
  917. InDiscards uint32
  918. InErrors uint32
  919. InUnknownProtos uint32
  920. OutOctets uint32
  921. OutUcastPkts uint32
  922. OutNUcastPkts uint32
  923. OutDiscards uint32
  924. OutErrors uint32
  925. OutQLen uint32
  926. DescrLen uint32
  927. Descr [MAXLEN_IFDESCR]byte
  928. }
  929. type CertInfo struct {
  930. // Not implemented
  931. }
  932. type CertContext struct {
  933. EncodingType uint32
  934. EncodedCert *byte
  935. Length uint32
  936. CertInfo *CertInfo
  937. Store Handle
  938. }
  939. type CertChainContext struct {
  940. Size uint32
  941. TrustStatus CertTrustStatus
  942. ChainCount uint32
  943. Chains **CertSimpleChain
  944. LowerQualityChainCount uint32
  945. LowerQualityChains **CertChainContext
  946. HasRevocationFreshnessTime uint32
  947. RevocationFreshnessTime uint32
  948. }
  949. type CertTrustListInfo struct {
  950. // Not implemented
  951. }
  952. type CertSimpleChain struct {
  953. Size uint32
  954. TrustStatus CertTrustStatus
  955. NumElements uint32
  956. Elements **CertChainElement
  957. TrustListInfo *CertTrustListInfo
  958. HasRevocationFreshnessTime uint32
  959. RevocationFreshnessTime uint32
  960. }
  961. type CertChainElement struct {
  962. Size uint32
  963. CertContext *CertContext
  964. TrustStatus CertTrustStatus
  965. RevocationInfo *CertRevocationInfo
  966. IssuanceUsage *CertEnhKeyUsage
  967. ApplicationUsage *CertEnhKeyUsage
  968. ExtendedErrorInfo *uint16
  969. }
  970. type CertRevocationCrlInfo struct {
  971. // Not implemented
  972. }
  973. type CertRevocationInfo struct {
  974. Size uint32
  975. RevocationResult uint32
  976. RevocationOid *byte
  977. OidSpecificInfo Pointer
  978. HasFreshnessTime uint32
  979. FreshnessTime uint32
  980. CrlInfo *CertRevocationCrlInfo
  981. }
  982. type CertTrustStatus struct {
  983. ErrorStatus uint32
  984. InfoStatus uint32
  985. }
  986. type CertUsageMatch struct {
  987. Type uint32
  988. Usage CertEnhKeyUsage
  989. }
  990. type CertEnhKeyUsage struct {
  991. Length uint32
  992. UsageIdentifiers **byte
  993. }
  994. type CertChainPara struct {
  995. Size uint32
  996. RequestedUsage CertUsageMatch
  997. RequstedIssuancePolicy CertUsageMatch
  998. URLRetrievalTimeout uint32
  999. CheckRevocationFreshnessTime uint32
  1000. RevocationFreshnessTime uint32
  1001. CacheResync *Filetime
  1002. }
  1003. type CertChainPolicyPara struct {
  1004. Size uint32
  1005. Flags uint32
  1006. ExtraPolicyPara Pointer
  1007. }
  1008. type SSLExtraCertChainPolicyPara struct {
  1009. Size uint32
  1010. AuthType uint32
  1011. Checks uint32
  1012. ServerName *uint16
  1013. }
  1014. type CertChainPolicyStatus struct {
  1015. Size uint32
  1016. Error uint32
  1017. ChainIndex uint32
  1018. ElementIndex uint32
  1019. ExtraPolicyStatus Pointer
  1020. }
  1021. const (
  1022. // do not reorder
  1023. HKEY_CLASSES_ROOT = 0x80000000 + iota
  1024. HKEY_CURRENT_USER
  1025. HKEY_LOCAL_MACHINE
  1026. HKEY_USERS
  1027. HKEY_PERFORMANCE_DATA
  1028. HKEY_CURRENT_CONFIG
  1029. HKEY_DYN_DATA
  1030. KEY_QUERY_VALUE = 1
  1031. KEY_SET_VALUE = 2
  1032. KEY_CREATE_SUB_KEY = 4
  1033. KEY_ENUMERATE_SUB_KEYS = 8
  1034. KEY_NOTIFY = 16
  1035. KEY_CREATE_LINK = 32
  1036. KEY_WRITE = 0x20006
  1037. KEY_EXECUTE = 0x20019
  1038. KEY_READ = 0x20019
  1039. KEY_WOW64_64KEY = 0x0100
  1040. KEY_WOW64_32KEY = 0x0200
  1041. KEY_ALL_ACCESS = 0xf003f
  1042. )
  1043. const (
  1044. // do not reorder
  1045. REG_NONE = iota
  1046. REG_SZ
  1047. REG_EXPAND_SZ
  1048. REG_BINARY
  1049. REG_DWORD_LITTLE_ENDIAN
  1050. REG_DWORD_BIG_ENDIAN
  1051. REG_LINK
  1052. REG_MULTI_SZ
  1053. REG_RESOURCE_LIST
  1054. REG_FULL_RESOURCE_DESCRIPTOR
  1055. REG_RESOURCE_REQUIREMENTS_LIST
  1056. REG_QWORD_LITTLE_ENDIAN
  1057. REG_DWORD = REG_DWORD_LITTLE_ENDIAN
  1058. REG_QWORD = REG_QWORD_LITTLE_ENDIAN
  1059. )
  1060. const (
  1061. EVENT_MODIFY_STATE = 0x0002
  1062. EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
  1063. MUTANT_QUERY_STATE = 0x0001
  1064. MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
  1065. SEMAPHORE_MODIFY_STATE = 0x0002
  1066. SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
  1067. TIMER_QUERY_STATE = 0x0001
  1068. TIMER_MODIFY_STATE = 0x0002
  1069. TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE
  1070. MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
  1071. MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
  1072. CREATE_EVENT_MANUAL_RESET = 0x1
  1073. CREATE_EVENT_INITIAL_SET = 0x2
  1074. CREATE_MUTEX_INITIAL_OWNER = 0x1
  1075. )
  1076. type AddrinfoW struct {
  1077. Flags int32
  1078. Family int32
  1079. Socktype int32
  1080. Protocol int32
  1081. Addrlen uintptr
  1082. Canonname *uint16
  1083. Addr uintptr
  1084. Next *AddrinfoW
  1085. }
  1086. const (
  1087. AI_PASSIVE = 1
  1088. AI_CANONNAME = 2
  1089. AI_NUMERICHOST = 4
  1090. )
  1091. type GUID struct {
  1092. Data1 uint32
  1093. Data2 uint16
  1094. Data3 uint16
  1095. Data4 [8]byte
  1096. }
  1097. var WSAID_CONNECTEX = GUID{
  1098. 0x25a207b9,
  1099. 0xddf3,
  1100. 0x4660,
  1101. [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
  1102. }
  1103. var WSAID_WSASENDMSG = GUID{
  1104. 0xa441e712,
  1105. 0x754f,
  1106. 0x43ca,
  1107. [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},
  1108. }
  1109. var WSAID_WSARECVMSG = GUID{
  1110. 0xf689d7c8,
  1111. 0x6f1f,
  1112. 0x436b,
  1113. [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},
  1114. }
  1115. const (
  1116. FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
  1117. FILE_SKIP_SET_EVENT_ON_HANDLE = 2
  1118. )
  1119. const (
  1120. WSAPROTOCOL_LEN = 255
  1121. MAX_PROTOCOL_CHAIN = 7
  1122. BASE_PROTOCOL = 1
  1123. LAYERED_PROTOCOL = 0
  1124. XP1_CONNECTIONLESS = 0x00000001
  1125. XP1_GUARANTEED_DELIVERY = 0x00000002
  1126. XP1_GUARANTEED_ORDER = 0x00000004
  1127. XP1_MESSAGE_ORIENTED = 0x00000008
  1128. XP1_PSEUDO_STREAM = 0x00000010
  1129. XP1_GRACEFUL_CLOSE = 0x00000020
  1130. XP1_EXPEDITED_DATA = 0x00000040
  1131. XP1_CONNECT_DATA = 0x00000080
  1132. XP1_DISCONNECT_DATA = 0x00000100
  1133. XP1_SUPPORT_BROADCAST = 0x00000200
  1134. XP1_SUPPORT_MULTIPOINT = 0x00000400
  1135. XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
  1136. XP1_MULTIPOINT_DATA_PLANE = 0x00001000
  1137. XP1_QOS_SUPPORTED = 0x00002000
  1138. XP1_UNI_SEND = 0x00008000
  1139. XP1_UNI_RECV = 0x00010000
  1140. XP1_IFS_HANDLES = 0x00020000
  1141. XP1_PARTIAL_MESSAGE = 0x00040000
  1142. XP1_SAN_SUPPORT_SDP = 0x00080000
  1143. PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
  1144. PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
  1145. PFL_HIDDEN = 0x00000004
  1146. PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
  1147. PFL_NETWORKDIRECT_PROVIDER = 0x00000010
  1148. )
  1149. type WSAProtocolInfo struct {
  1150. ServiceFlags1 uint32
  1151. ServiceFlags2 uint32
  1152. ServiceFlags3 uint32
  1153. ServiceFlags4 uint32
  1154. ProviderFlags uint32
  1155. ProviderId GUID
  1156. CatalogEntryId uint32
  1157. ProtocolChain WSAProtocolChain
  1158. Version int32
  1159. AddressFamily int32
  1160. MaxSockAddr int32
  1161. MinSockAddr int32
  1162. SocketType int32
  1163. Protocol int32
  1164. ProtocolMaxOffset int32
  1165. NetworkByteOrder int32
  1166. SecurityScheme int32
  1167. MessageSize uint32
  1168. ProviderReserved uint32
  1169. ProtocolName [WSAPROTOCOL_LEN + 1]uint16
  1170. }
  1171. type WSAProtocolChain struct {
  1172. ChainLen int32
  1173. ChainEntries [MAX_PROTOCOL_CHAIN]uint32
  1174. }
  1175. type TCPKeepalive struct {
  1176. OnOff uint32
  1177. Time uint32
  1178. Interval uint32
  1179. }
  1180. type symbolicLinkReparseBuffer struct {
  1181. SubstituteNameOffset uint16
  1182. SubstituteNameLength uint16
  1183. PrintNameOffset uint16
  1184. PrintNameLength uint16
  1185. Flags uint32
  1186. PathBuffer [1]uint16
  1187. }
  1188. type mountPointReparseBuffer struct {
  1189. SubstituteNameOffset uint16
  1190. SubstituteNameLength uint16
  1191. PrintNameOffset uint16
  1192. PrintNameLength uint16
  1193. PathBuffer [1]uint16
  1194. }
  1195. type reparseDataBuffer struct {
  1196. ReparseTag uint32
  1197. ReparseDataLength uint16
  1198. Reserved uint16
  1199. // GenericReparseBuffer
  1200. reparseBuffer byte
  1201. }
  1202. const (
  1203. FSCTL_GET_REPARSE_POINT = 0x900A8
  1204. MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
  1205. IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
  1206. IO_REPARSE_TAG_SYMLINK = 0xA000000C
  1207. SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
  1208. )
  1209. const (
  1210. ComputerNameNetBIOS = 0
  1211. ComputerNameDnsHostname = 1
  1212. ComputerNameDnsDomain = 2
  1213. ComputerNameDnsFullyQualified = 3
  1214. ComputerNamePhysicalNetBIOS = 4
  1215. ComputerNamePhysicalDnsHostname = 5
  1216. ComputerNamePhysicalDnsDomain = 6
  1217. ComputerNamePhysicalDnsFullyQualified = 7
  1218. ComputerNameMax = 8
  1219. )
  1220. // For MessageBox()
  1221. const (
  1222. MB_OK = 0x00000000
  1223. MB_OKCANCEL = 0x00000001
  1224. MB_ABORTRETRYIGNORE = 0x00000002
  1225. MB_YESNOCANCEL = 0x00000003
  1226. MB_YESNO = 0x00000004
  1227. MB_RETRYCANCEL = 0x00000005
  1228. MB_CANCELTRYCONTINUE = 0x00000006
  1229. MB_ICONHAND = 0x00000010
  1230. MB_ICONQUESTION = 0x00000020
  1231. MB_ICONEXCLAMATION = 0x00000030
  1232. MB_ICONASTERISK = 0x00000040
  1233. MB_USERICON = 0x00000080
  1234. MB_ICONWARNING = MB_ICONEXCLAMATION
  1235. MB_ICONERROR = MB_ICONHAND
  1236. MB_ICONINFORMATION = MB_ICONASTERISK
  1237. MB_ICONSTOP = MB_ICONHAND
  1238. MB_DEFBUTTON1 = 0x00000000
  1239. MB_DEFBUTTON2 = 0x00000100
  1240. MB_DEFBUTTON3 = 0x00000200
  1241. MB_DEFBUTTON4 = 0x00000300
  1242. MB_APPLMODAL = 0x00000000
  1243. MB_SYSTEMMODAL = 0x00001000
  1244. MB_TASKMODAL = 0x00002000
  1245. MB_HELP = 0x00004000
  1246. MB_NOFOCUS = 0x00008000
  1247. MB_SETFOREGROUND = 0x00010000
  1248. MB_DEFAULT_DESKTOP_ONLY = 0x00020000
  1249. MB_TOPMOST = 0x00040000
  1250. MB_RIGHT = 0x00080000
  1251. MB_RTLREADING = 0x00100000
  1252. MB_SERVICE_NOTIFICATION = 0x00200000
  1253. )
  1254. const (
  1255. MOVEFILE_REPLACE_EXISTING = 0x1
  1256. MOVEFILE_COPY_ALLOWED = 0x2
  1257. MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
  1258. MOVEFILE_WRITE_THROUGH = 0x8
  1259. MOVEFILE_CREATE_HARDLINK = 0x10
  1260. MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
  1261. )
  1262. const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
  1263. const (
  1264. IF_TYPE_OTHER = 1
  1265. IF_TYPE_ETHERNET_CSMACD = 6
  1266. IF_TYPE_ISO88025_TOKENRING = 9
  1267. IF_TYPE_PPP = 23
  1268. IF_TYPE_SOFTWARE_LOOPBACK = 24
  1269. IF_TYPE_ATM = 37
  1270. IF_TYPE_IEEE80211 = 71
  1271. IF_TYPE_TUNNEL = 131
  1272. IF_TYPE_IEEE1394 = 144
  1273. )
  1274. type SocketAddress struct {
  1275. Sockaddr *syscall.RawSockaddrAny
  1276. SockaddrLength int32
  1277. }
  1278. // IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.
  1279. func (addr *SocketAddress) IP() net.IP {
  1280. if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {
  1281. return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
  1282. } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {
  1283. return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
  1284. }
  1285. return nil
  1286. }
  1287. type IpAdapterUnicastAddress struct {
  1288. Length uint32
  1289. Flags uint32
  1290. Next *IpAdapterUnicastAddress
  1291. Address SocketAddress
  1292. PrefixOrigin int32
  1293. SuffixOrigin int32
  1294. DadState int32
  1295. ValidLifetime uint32
  1296. PreferredLifetime uint32
  1297. LeaseLifetime uint32
  1298. OnLinkPrefixLength uint8
  1299. }
  1300. type IpAdapterAnycastAddress struct {
  1301. Length uint32
  1302. Flags uint32
  1303. Next *IpAdapterAnycastAddress
  1304. Address SocketAddress
  1305. }
  1306. type IpAdapterMulticastAddress struct {
  1307. Length uint32
  1308. Flags uint32
  1309. Next *IpAdapterMulticastAddress
  1310. Address SocketAddress
  1311. }
  1312. type IpAdapterDnsServerAdapter struct {
  1313. Length uint32
  1314. Reserved uint32
  1315. Next *IpAdapterDnsServerAdapter
  1316. Address SocketAddress
  1317. }
  1318. type IpAdapterPrefix struct {
  1319. Length uint32
  1320. Flags uint32
  1321. Next *IpAdapterPrefix
  1322. Address SocketAddress
  1323. PrefixLength uint32
  1324. }
  1325. type IpAdapterAddresses struct {
  1326. Length uint32
  1327. IfIndex uint32
  1328. Next *IpAdapterAddresses
  1329. AdapterName *byte
  1330. FirstUnicastAddress *IpAdapterUnicastAddress
  1331. FirstAnycastAddress *IpAdapterAnycastAddress
  1332. FirstMulticastAddress *IpAdapterMulticastAddress
  1333. FirstDnsServerAddress *IpAdapterDnsServerAdapter
  1334. DnsSuffix *uint16
  1335. Description *uint16
  1336. FriendlyName *uint16
  1337. PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
  1338. PhysicalAddressLength uint32
  1339. Flags uint32
  1340. Mtu uint32
  1341. IfType uint32
  1342. OperStatus uint32
  1343. Ipv6IfIndex uint32
  1344. ZoneIndices [16]uint32
  1345. FirstPrefix *IpAdapterPrefix
  1346. /* more fields might be present here. */
  1347. }
  1348. const (
  1349. IfOperStatusUp = 1
  1350. IfOperStatusDown = 2
  1351. IfOperStatusTesting = 3
  1352. IfOperStatusUnknown = 4
  1353. IfOperStatusDormant = 5
  1354. IfOperStatusNotPresent = 6
  1355. IfOperStatusLowerLayerDown = 7
  1356. )
  1357. // Console related constants used for the mode parameter to SetConsoleMode. See
  1358. // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
  1359. const (
  1360. ENABLE_PROCESSED_INPUT = 0x1
  1361. ENABLE_LINE_INPUT = 0x2
  1362. ENABLE_ECHO_INPUT = 0x4
  1363. ENABLE_WINDOW_INPUT = 0x8
  1364. ENABLE_MOUSE_INPUT = 0x10
  1365. ENABLE_INSERT_MODE = 0x20
  1366. ENABLE_QUICK_EDIT_MODE = 0x40
  1367. ENABLE_EXTENDED_FLAGS = 0x80
  1368. ENABLE_AUTO_POSITION = 0x100
  1369. ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200
  1370. ENABLE_PROCESSED_OUTPUT = 0x1
  1371. ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
  1372. ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
  1373. DISABLE_NEWLINE_AUTO_RETURN = 0x8
  1374. ENABLE_LVB_GRID_WORLDWIDE = 0x10
  1375. )
  1376. type Coord struct {
  1377. X int16
  1378. Y int16
  1379. }
  1380. type SmallRect struct {
  1381. Left int16
  1382. Top int16
  1383. Right int16
  1384. Bottom int16
  1385. }
  1386. // Used with GetConsoleScreenBuffer to retrieve information about a console
  1387. // screen buffer. See
  1388. // https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str
  1389. // for details.
  1390. type ConsoleScreenBufferInfo struct {
  1391. Size Coord
  1392. CursorPosition Coord
  1393. Attributes uint16
  1394. Window SmallRect
  1395. MaximumWindowSize Coord
  1396. }
  1397. const UNIX_PATH_MAX = 108 // defined in afunix.h
  1398. const (
  1399. // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags
  1400. JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
  1401. JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
  1402. JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
  1403. JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
  1404. JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
  1405. JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
  1406. JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
  1407. JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
  1408. JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
  1409. JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
  1410. JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
  1411. JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
  1412. JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
  1413. JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000
  1414. JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
  1415. )
  1416. type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
  1417. PerProcessUserTimeLimit int64
  1418. PerJobUserTimeLimit int64
  1419. LimitFlags uint32
  1420. MinimumWorkingSetSize uintptr
  1421. MaximumWorkingSetSize uintptr
  1422. ActiveProcessLimit uint32
  1423. Affinity uintptr
  1424. PriorityClass uint32
  1425. SchedulingClass uint32
  1426. }
  1427. type IO_COUNTERS struct {
  1428. ReadOperationCount uint64
  1429. WriteOperationCount uint64
  1430. OtherOperationCount uint64
  1431. ReadTransferCount uint64
  1432. WriteTransferCount uint64
  1433. OtherTransferCount uint64
  1434. }
  1435. type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {
  1436. BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION
  1437. IoInfo IO_COUNTERS
  1438. ProcessMemoryLimit uintptr
  1439. JobMemoryLimit uintptr
  1440. PeakProcessMemoryUsed uintptr
  1441. PeakJobMemoryUsed uintptr
  1442. }
  1443. const (
  1444. // UIRestrictionsClass
  1445. JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040
  1446. JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010
  1447. JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080
  1448. JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020
  1449. JOB_OBJECT_UILIMIT_HANDLES = 0x00000001
  1450. JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002
  1451. JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008
  1452. JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004
  1453. )
  1454. type JOBOBJECT_BASIC_UI_RESTRICTIONS struct {
  1455. UIRestrictionsClass uint32
  1456. }
  1457. const (
  1458. // JobObjectInformationClass
  1459. JobObjectAssociateCompletionPortInformation = 7
  1460. JobObjectBasicLimitInformation = 2
  1461. JobObjectBasicUIRestrictions = 4
  1462. JobObjectCpuRateControlInformation = 15
  1463. JobObjectEndOfJobTimeInformation = 6
  1464. JobObjectExtendedLimitInformation = 9
  1465. JobObjectGroupInformation = 11
  1466. JobObjectGroupInformationEx = 14
  1467. JobObjectLimitViolationInformation2 = 35
  1468. JobObjectNetRateControlInformation = 32
  1469. JobObjectNotificationLimitInformation = 12
  1470. JobObjectNotificationLimitInformation2 = 34
  1471. JobObjectSecurityLimitInformation = 5
  1472. )
  1473. const (
  1474. KF_FLAG_DEFAULT = 0x00000000
  1475. KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000
  1476. KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000
  1477. KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000
  1478. KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000
  1479. KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000
  1480. KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000
  1481. KF_FLAG_CREATE = 0x00008000
  1482. KF_FLAG_DONT_VERIFY = 0x00004000
  1483. KF_FLAG_DONT_UNEXPAND = 0x00002000
  1484. KF_FLAG_NO_ALIAS = 0x00001000
  1485. KF_FLAG_INIT = 0x00000800
  1486. KF_FLAG_DEFAULT_PATH = 0x00000400
  1487. KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200
  1488. KF_FLAG_SIMPLE_IDLIST = 0x00000100
  1489. KF_FLAG_ALIAS_ONLY = 0x80000000
  1490. )
  1491. type OsVersionInfoEx struct {
  1492. osVersionInfoSize uint32
  1493. MajorVersion uint32
  1494. MinorVersion uint32
  1495. BuildNumber uint32
  1496. PlatformId uint32
  1497. CsdVersion [128]uint16
  1498. ServicePackMajor uint16
  1499. ServicePackMinor uint16
  1500. SuiteMask uint16
  1501. ProductType byte
  1502. _ byte
  1503. }