typenative 0.1.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/workflows/ci.yml +39 -2
  3. package/.github/workflows/npm-publish-github-packages.yml +7 -2
  4. package/CHANGELOG.md +293 -0
  5. package/CONTRIBUTION.md +8 -6
  6. package/README.md +15 -11
  7. package/bin/cli.js +7 -1
  8. package/bin/go/bridge.js +919 -0
  9. package/bin/go/convert.js +238 -0
  10. package/bin/go/metadata.js +211 -0
  11. package/bin/go/overrides.js +68 -0
  12. package/bin/go/stdlib.generated.js +175 -0
  13. package/bin/index.js +337 -239
  14. package/bin/main.js +9 -2
  15. package/bin/node/assert.js +344 -0
  16. package/bin/node/async_hooks.js +273 -0
  17. package/bin/node/buffer.js +765 -0
  18. package/bin/node/child_process.js +600 -0
  19. package/bin/node/cluster.js +1002 -0
  20. package/bin/node/console.js +121 -0
  21. package/bin/node/core.js +111 -0
  22. package/bin/node/crypto.js +414 -0
  23. package/bin/node/crypto_keys.js +2685 -0
  24. package/bin/node/dgram.js +388 -0
  25. package/bin/node/diagnostics_channel.js +534 -0
  26. package/bin/node/dns.js +635 -0
  27. package/bin/node/events.js +743 -0
  28. package/bin/node/fetch.js +737 -0
  29. package/bin/node/fs.js +998 -0
  30. package/bin/node/http.js +1500 -0
  31. package/bin/node/http2.js +688 -0
  32. package/bin/node/net.js +1143 -0
  33. package/bin/node/os.js +257 -0
  34. package/bin/node/path.js +758 -0
  35. package/bin/node/process.js +316 -0
  36. package/bin/node/punycode.js +195 -0
  37. package/bin/node/querystring.js +143 -0
  38. package/bin/node/readline.js +299 -0
  39. package/bin/node/registry.js +161 -0
  40. package/bin/node/sqlite.js +1142 -0
  41. package/bin/node/stream.js +1221 -0
  42. package/bin/node/stream_web.js +2259 -0
  43. package/bin/node/string_decoder.js +101 -0
  44. package/bin/node/system_extra.js +714 -0
  45. package/bin/node/test.js +1068 -0
  46. package/bin/node/timers.js +263 -0
  47. package/bin/node/tls.js +719 -0
  48. package/bin/node/url.js +861 -0
  49. package/bin/node/util.js +1311 -0
  50. package/bin/node/util_extra.js +599 -0
  51. package/bin/node/worker_threads.js +745 -0
  52. package/bin/node/zlib.js +263 -0
  53. package/bin/parse-native.js +10 -0
  54. package/bin/parse-node.js +10 -0
  55. package/bin/transpiler.js +2824 -588
  56. package/bin/typecheck-node.js +78 -0
  57. package/bin/version.js +2 -0
  58. package/conformance.md +708 -241
  59. package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
  60. package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
  61. package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
  62. package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
  63. package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
  64. package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
  65. package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
  66. package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
  67. package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
  68. package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
  69. package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
  70. package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
  71. package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
  72. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
  73. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
  74. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
  75. package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
  76. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
  77. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
  78. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
  79. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
  80. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
  81. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
  82. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
  83. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
  84. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
  85. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
  86. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
  87. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
  88. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
  89. package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
  90. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
  91. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
  92. package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
  93. package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
  94. package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
  95. package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
  96. package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
  97. package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
  98. package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
  99. package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
  100. package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
  101. package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
  102. package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
  103. package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
  104. package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
  105. package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
  106. package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
  107. package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
  108. package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
  109. package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
  110. package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
  111. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
  112. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
  113. package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
  114. package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
  115. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
  116. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
  117. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
  118. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
  119. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
  120. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
  121. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
  122. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
  123. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
  124. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
  125. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
  126. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
  127. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
  128. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
  129. package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
  130. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
  131. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
  132. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
  133. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
  134. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
  135. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
  136. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
  137. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
  138. package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
  139. package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
  140. package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
  141. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
  142. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
  143. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
  144. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
  145. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
  146. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
  147. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
  148. package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
  149. package/govendor/github.com/ncruces/julianday/README.md +9 -0
  150. package/govendor/github.com/ncruces/julianday/go.mod +3 -0
  151. package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
  152. package/govendor/golang.org/x/sys/LICENSE +27 -0
  153. package/govendor/golang.org/x/sys/PATENTS +22 -0
  154. package/govendor/golang.org/x/sys/go.mod +3 -0
  155. package/govendor/golang.org/x/sys/unix/README.md +184 -0
  156. package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  157. package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
  158. package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  159. package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  160. package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  161. package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  162. package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  163. package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  164. package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  165. package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  166. package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  167. package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  168. package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  169. package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  170. package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  171. package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  172. package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  173. package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  174. package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  175. package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  176. package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  177. package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  178. package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
  179. package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  180. package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  181. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  182. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  183. package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  184. package/govendor/golang.org/x/sys/unix/constants.go +13 -0
  185. package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  186. package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  187. package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  188. package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  189. package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  190. package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  191. package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  192. package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  193. package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  194. package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
  195. package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
  196. package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
  197. package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
  198. package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
  199. package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  200. package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  201. package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
  202. package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
  203. package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  204. package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  205. package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
  206. package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
  207. package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  208. package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  209. package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  210. package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
  211. package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
  212. package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  213. package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
  214. package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  215. package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  216. package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  217. package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  218. package/govendor/golang.org/x/sys/unix/race.go +30 -0
  219. package/govendor/golang.org/x/sys/unix/race0.go +25 -0
  220. package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  221. package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  222. package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  223. package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  224. package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  225. package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  226. package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  227. package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  228. package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  229. package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
  230. package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  231. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  232. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  233. package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  234. package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  235. package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  236. package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  237. package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  238. package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  239. package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  240. package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  241. package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  242. package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  243. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  244. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  245. package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  246. package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  247. package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  248. package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  249. package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  250. package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  251. package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  252. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  253. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  254. package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  255. package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  256. package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  257. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  258. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  259. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  260. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  261. package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  262. package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  263. package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  264. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  265. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  266. package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  267. package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  268. package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  269. package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  270. package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  271. package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  272. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  273. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  274. package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  275. package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  276. package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  277. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  278. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  279. package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  280. package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  281. package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  282. package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  283. package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  284. package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  285. package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  286. package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  287. package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  288. package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  289. package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  290. package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  291. package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  292. package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
  293. package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  294. package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  295. package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  296. package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  297. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  298. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  299. package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  300. package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  301. package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  302. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  303. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  304. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  305. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  306. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  307. package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
  308. package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
  309. package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
  310. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
  311. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
  312. package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
  313. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
  314. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
  315. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
  316. package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
  317. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
  318. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
  319. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
  320. package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
  321. package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
  322. package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
  323. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  324. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  325. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  326. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  327. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  328. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  329. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  330. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  331. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  332. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  333. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  334. package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  335. package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  336. package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  337. package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  338. package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  339. package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  340. package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  341. package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  342. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  343. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  344. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  345. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  346. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  347. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  348. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  349. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  350. package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  351. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  352. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  353. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  354. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  355. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  356. package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  357. package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  358. package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  359. package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  360. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  361. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  362. package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  363. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  364. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  365. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  366. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  367. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  368. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  369. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  370. package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  371. package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  372. package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  373. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  374. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  375. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  376. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  377. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  378. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  379. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  380. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  381. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  382. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  383. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  384. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  385. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  386. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  387. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  388. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  389. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  390. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  391. package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  392. package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  393. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  394. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  395. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  396. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  397. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  398. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  399. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  400. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  401. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  402. package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  403. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  404. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  405. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  406. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  407. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  408. package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  409. package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  410. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  411. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  412. package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  413. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  414. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  415. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  416. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  417. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  418. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  419. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  420. package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  421. package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  422. package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  423. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  424. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  425. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  426. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  427. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  428. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  429. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  430. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  431. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  432. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  433. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  434. package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  435. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  436. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  437. package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  438. package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  439. package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  440. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  441. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  442. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  443. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  444. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  445. package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
  446. package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
  447. package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
  448. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
  449. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
  450. package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
  451. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
  452. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
  453. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
  454. package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
  455. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
  456. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
  457. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
  458. package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
  459. package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
  460. package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
  461. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  462. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  463. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  464. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  465. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  466. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  467. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  468. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  469. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  470. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  471. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  472. package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  473. package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  474. package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
  475. package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  476. package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
  477. package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
  478. package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  479. package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  480. package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  481. package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  482. package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  483. package/govendor/golang.org/x/sys/windows/race.go +30 -0
  484. package/govendor/golang.org/x/sys/windows/race0.go +25 -0
  485. package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  486. package/govendor/golang.org/x/sys/windows/service.go +257 -0
  487. package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  488. package/govendor/golang.org/x/sys/windows/str.go +22 -0
  489. package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
  490. package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  491. package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
  492. package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  493. package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  494. package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  495. package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  496. package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  497. package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  498. package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  499. package/govendor/manifest.txt +7 -0
  500. package/package.json +7 -1
  501. package/tsparser/check.go +157 -0
  502. package/tsparser/main.go +30 -1
  503. package/types/typenative-go.d.ts +15159 -5
  504. package/types/typenative-npm.d.ts +2640 -34
  505. package/types/typenative.d.ts +651 -8
@@ -0,0 +1,4058 @@
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
+
5
+ package windows
6
+
7
+ import (
8
+ "net"
9
+ "syscall"
10
+ "unsafe"
11
+ )
12
+
13
+ // NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and
14
+ // other native functions.
15
+ type NTStatus uint32
16
+
17
+ const (
18
+ // Invented values to support what package os expects.
19
+ O_RDONLY = 0x00000
20
+ O_WRONLY = 0x00001
21
+ O_RDWR = 0x00002
22
+ O_CREAT = 0x00040
23
+ O_EXCL = 0x00080
24
+ O_NOCTTY = 0x00100
25
+ O_TRUNC = 0x00200
26
+ O_NONBLOCK = 0x00800
27
+ O_APPEND = 0x00400
28
+ O_SYNC = 0x01000
29
+ O_ASYNC = 0x02000
30
+ O_CLOEXEC = 0x80000
31
+ )
32
+
33
+ const (
34
+ // More invented values for signals
35
+ SIGHUP = Signal(0x1)
36
+ SIGINT = Signal(0x2)
37
+ SIGQUIT = Signal(0x3)
38
+ SIGILL = Signal(0x4)
39
+ SIGTRAP = Signal(0x5)
40
+ SIGABRT = Signal(0x6)
41
+ SIGBUS = Signal(0x7)
42
+ SIGFPE = Signal(0x8)
43
+ SIGKILL = Signal(0x9)
44
+ SIGSEGV = Signal(0xb)
45
+ SIGPIPE = Signal(0xd)
46
+ SIGALRM = Signal(0xe)
47
+ SIGTERM = Signal(0xf)
48
+ )
49
+
50
+ var signals = [...]string{
51
+ 1: "hangup",
52
+ 2: "interrupt",
53
+ 3: "quit",
54
+ 4: "illegal instruction",
55
+ 5: "trace/breakpoint trap",
56
+ 6: "aborted",
57
+ 7: "bus error",
58
+ 8: "floating point exception",
59
+ 9: "killed",
60
+ 10: "user defined signal 1",
61
+ 11: "segmentation fault",
62
+ 12: "user defined signal 2",
63
+ 13: "broken pipe",
64
+ 14: "alarm clock",
65
+ 15: "terminated",
66
+ }
67
+
68
+ // File flags for [os.OpenFile]. The O_ prefix is used to indicate
69
+ // that these flags are specific to the OpenFile function.
70
+ const (
71
+ O_FILE_FLAG_OPEN_NO_RECALL = FILE_FLAG_OPEN_NO_RECALL
72
+ O_FILE_FLAG_OPEN_REPARSE_POINT = FILE_FLAG_OPEN_REPARSE_POINT
73
+ O_FILE_FLAG_SESSION_AWARE = FILE_FLAG_SESSION_AWARE
74
+ O_FILE_FLAG_POSIX_SEMANTICS = FILE_FLAG_POSIX_SEMANTICS
75
+ O_FILE_FLAG_BACKUP_SEMANTICS = FILE_FLAG_BACKUP_SEMANTICS
76
+ O_FILE_FLAG_DELETE_ON_CLOSE = FILE_FLAG_DELETE_ON_CLOSE
77
+ O_FILE_FLAG_SEQUENTIAL_SCAN = FILE_FLAG_SEQUENTIAL_SCAN
78
+ O_FILE_FLAG_RANDOM_ACCESS = FILE_FLAG_RANDOM_ACCESS
79
+ O_FILE_FLAG_NO_BUFFERING = FILE_FLAG_NO_BUFFERING
80
+ O_FILE_FLAG_OVERLAPPED = FILE_FLAG_OVERLAPPED
81
+ O_FILE_FLAG_WRITE_THROUGH = FILE_FLAG_WRITE_THROUGH
82
+ )
83
+
84
+ const (
85
+ FILE_READ_DATA = 0x00000001
86
+ FILE_READ_ATTRIBUTES = 0x00000080
87
+ FILE_READ_EA = 0x00000008
88
+ FILE_WRITE_DATA = 0x00000002
89
+ FILE_WRITE_ATTRIBUTES = 0x00000100
90
+ FILE_WRITE_EA = 0x00000010
91
+ FILE_APPEND_DATA = 0x00000004
92
+ FILE_EXECUTE = 0x00000020
93
+
94
+ FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE
95
+ FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE
96
+ FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE
97
+
98
+ FILE_LIST_DIRECTORY = 0x00000001
99
+ FILE_TRAVERSE = 0x00000020
100
+
101
+ FILE_SHARE_READ = 0x00000001
102
+ FILE_SHARE_WRITE = 0x00000002
103
+ FILE_SHARE_DELETE = 0x00000004
104
+
105
+ FILE_ATTRIBUTE_READONLY = 0x00000001
106
+ FILE_ATTRIBUTE_HIDDEN = 0x00000002
107
+ FILE_ATTRIBUTE_SYSTEM = 0x00000004
108
+ FILE_ATTRIBUTE_DIRECTORY = 0x00000010
109
+ FILE_ATTRIBUTE_ARCHIVE = 0x00000020
110
+ FILE_ATTRIBUTE_DEVICE = 0x00000040
111
+ FILE_ATTRIBUTE_NORMAL = 0x00000080
112
+ FILE_ATTRIBUTE_TEMPORARY = 0x00000100
113
+ FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
114
+ FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
115
+ FILE_ATTRIBUTE_COMPRESSED = 0x00000800
116
+ FILE_ATTRIBUTE_OFFLINE = 0x00001000
117
+ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
118
+ FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
119
+ FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000
120
+ FILE_ATTRIBUTE_VIRTUAL = 0x00010000
121
+ FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000
122
+ FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
123
+ FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
124
+
125
+ INVALID_FILE_ATTRIBUTES = 0xffffffff
126
+
127
+ CREATE_NEW = 1
128
+ CREATE_ALWAYS = 2
129
+ OPEN_EXISTING = 3
130
+ OPEN_ALWAYS = 4
131
+ TRUNCATE_EXISTING = 5
132
+
133
+ FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000
134
+ FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
135
+ FILE_FLAG_OPEN_NO_RECALL = 0x00100000
136
+ FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
137
+ FILE_FLAG_SESSION_AWARE = 0x00800000
138
+ FILE_FLAG_POSIX_SEMANTICS = 0x01000000
139
+ FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
140
+ FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
141
+ FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
142
+ FILE_FLAG_RANDOM_ACCESS = 0x10000000
143
+ FILE_FLAG_NO_BUFFERING = 0x20000000
144
+ FILE_FLAG_OVERLAPPED = 0x40000000
145
+ FILE_FLAG_WRITE_THROUGH = 0x80000000
146
+
147
+ HANDLE_FLAG_INHERIT = 0x00000001
148
+ STARTF_USESTDHANDLES = 0x00000100
149
+ STARTF_USESHOWWINDOW = 0x00000001
150
+ DUPLICATE_CLOSE_SOURCE = 0x00000001
151
+ DUPLICATE_SAME_ACCESS = 0x00000002
152
+
153
+ STD_INPUT_HANDLE = -10 & (1<<32 - 1)
154
+ STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
155
+ STD_ERROR_HANDLE = -12 & (1<<32 - 1)
156
+
157
+ FILE_BEGIN = 0
158
+ FILE_CURRENT = 1
159
+ FILE_END = 2
160
+
161
+ LANG_ENGLISH = 0x09
162
+ SUBLANG_ENGLISH_US = 0x01
163
+
164
+ FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
165
+ FORMAT_MESSAGE_IGNORE_INSERTS = 512
166
+ FORMAT_MESSAGE_FROM_STRING = 1024
167
+ FORMAT_MESSAGE_FROM_HMODULE = 2048
168
+ FORMAT_MESSAGE_FROM_SYSTEM = 4096
169
+ FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
170
+ FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
171
+
172
+ MAX_USHORT = 0xffff
173
+ MAX_PATH = 260
174
+ MAX_LONG_PATH = 32768
175
+
176
+ MAX_MODULE_NAME32 = 255
177
+
178
+ MAX_COMPUTERNAME_LENGTH = 15
179
+
180
+ MAX_DHCPV6_DUID_LENGTH = 130
181
+
182
+ MAX_DNS_SUFFIX_STRING_LENGTH = 256
183
+
184
+ TIME_ZONE_ID_UNKNOWN = 0
185
+ TIME_ZONE_ID_STANDARD = 1
186
+
187
+ TIME_ZONE_ID_DAYLIGHT = 2
188
+ IGNORE = 0
189
+ INFINITE = 0xffffffff
190
+
191
+ WAIT_ABANDONED = 0x00000080
192
+ WAIT_OBJECT_0 = 0x00000000
193
+ WAIT_FAILED = 0xFFFFFFFF
194
+
195
+ // Access rights for process.
196
+ PROCESS_ALL_ACCESS = 0xFFFF
197
+ PROCESS_CREATE_PROCESS = 0x0080
198
+ PROCESS_CREATE_THREAD = 0x0002
199
+ PROCESS_DUP_HANDLE = 0x0040
200
+ PROCESS_QUERY_INFORMATION = 0x0400
201
+ PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
202
+ PROCESS_SET_INFORMATION = 0x0200
203
+ PROCESS_SET_QUOTA = 0x0100
204
+ PROCESS_SUSPEND_RESUME = 0x0800
205
+ PROCESS_TERMINATE = 0x0001
206
+ PROCESS_VM_OPERATION = 0x0008
207
+ PROCESS_VM_READ = 0x0010
208
+ PROCESS_VM_WRITE = 0x0020
209
+
210
+ // Access rights for thread.
211
+ THREAD_DIRECT_IMPERSONATION = 0x0200
212
+ THREAD_GET_CONTEXT = 0x0008
213
+ THREAD_IMPERSONATE = 0x0100
214
+ THREAD_QUERY_INFORMATION = 0x0040
215
+ THREAD_QUERY_LIMITED_INFORMATION = 0x0800
216
+ THREAD_SET_CONTEXT = 0x0010
217
+ THREAD_SET_INFORMATION = 0x0020
218
+ THREAD_SET_LIMITED_INFORMATION = 0x0400
219
+ THREAD_SET_THREAD_TOKEN = 0x0080
220
+ THREAD_SUSPEND_RESUME = 0x0002
221
+ THREAD_TERMINATE = 0x0001
222
+
223
+ FILE_MAP_COPY = 0x01
224
+ FILE_MAP_WRITE = 0x02
225
+ FILE_MAP_READ = 0x04
226
+ FILE_MAP_EXECUTE = 0x20
227
+
228
+ CTRL_C_EVENT = 0
229
+ CTRL_BREAK_EVENT = 1
230
+ CTRL_CLOSE_EVENT = 2
231
+ CTRL_LOGOFF_EVENT = 5
232
+ CTRL_SHUTDOWN_EVENT = 6
233
+
234
+ // Windows reserves errors >= 1<<29 for application use.
235
+ APPLICATION_ERROR = 1 << 29
236
+ )
237
+
238
+ const (
239
+ // Process creation flags.
240
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000
241
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000
242
+ CREATE_NEW_CONSOLE = 0x00000010
243
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
244
+ CREATE_NO_WINDOW = 0x08000000
245
+ CREATE_PROTECTED_PROCESS = 0x00040000
246
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
247
+ CREATE_SEPARATE_WOW_VDM = 0x00000800
248
+ CREATE_SHARED_WOW_VDM = 0x00001000
249
+ CREATE_SUSPENDED = 0x00000004
250
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400
251
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002
252
+ DEBUG_PROCESS = 0x00000001
253
+ DETACHED_PROCESS = 0x00000008
254
+ EXTENDED_STARTUPINFO_PRESENT = 0x00080000
255
+ INHERIT_PARENT_AFFINITY = 0x00010000
256
+ )
257
+
258
+ const (
259
+ // attributes for ProcThreadAttributeList
260
+ PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000
261
+ PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002
262
+ PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003
263
+ PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004
264
+ PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005
265
+ PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007
266
+ PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006
267
+ PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b
268
+ PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016
269
+ )
270
+
271
+ const (
272
+ // flags for CreateToolhelp32Snapshot
273
+ TH32CS_SNAPHEAPLIST = 0x01
274
+ TH32CS_SNAPPROCESS = 0x02
275
+ TH32CS_SNAPTHREAD = 0x04
276
+ TH32CS_SNAPMODULE = 0x08
277
+ TH32CS_SNAPMODULE32 = 0x10
278
+ TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
279
+ TH32CS_INHERIT = 0x80000000
280
+ )
281
+
282
+ const (
283
+ // flags for EnumProcessModulesEx
284
+ LIST_MODULES_32BIT = 0x01
285
+ LIST_MODULES_64BIT = 0x02
286
+ LIST_MODULES_ALL = 0x03
287
+ LIST_MODULES_DEFAULT = 0x00
288
+ )
289
+
290
+ const (
291
+ // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
292
+ FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
293
+ FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
294
+ FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
295
+ FILE_NOTIFY_CHANGE_SIZE = 0x008
296
+ FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
297
+ FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
298
+ FILE_NOTIFY_CHANGE_CREATION = 0x040
299
+ FILE_NOTIFY_CHANGE_SECURITY = 0x100
300
+ )
301
+
302
+ const (
303
+ // do not reorder
304
+ FILE_ACTION_ADDED = iota + 1
305
+ FILE_ACTION_REMOVED
306
+ FILE_ACTION_MODIFIED
307
+ FILE_ACTION_RENAMED_OLD_NAME
308
+ FILE_ACTION_RENAMED_NEW_NAME
309
+ )
310
+
311
+ const (
312
+ // wincrypt.h
313
+ /* certenrolld_begin -- PROV_RSA_*/
314
+ PROV_RSA_FULL = 1
315
+ PROV_RSA_SIG = 2
316
+ PROV_DSS = 3
317
+ PROV_FORTEZZA = 4
318
+ PROV_MS_EXCHANGE = 5
319
+ PROV_SSL = 6
320
+ PROV_RSA_SCHANNEL = 12
321
+ PROV_DSS_DH = 13
322
+ PROV_EC_ECDSA_SIG = 14
323
+ PROV_EC_ECNRA_SIG = 15
324
+ PROV_EC_ECDSA_FULL = 16
325
+ PROV_EC_ECNRA_FULL = 17
326
+ PROV_DH_SCHANNEL = 18
327
+ PROV_SPYRUS_LYNKS = 20
328
+ PROV_RNG = 21
329
+ PROV_INTEL_SEC = 22
330
+ PROV_REPLACE_OWF = 23
331
+ PROV_RSA_AES = 24
332
+
333
+ /* dwFlags definitions for CryptAcquireContext */
334
+ CRYPT_VERIFYCONTEXT = 0xF0000000
335
+ CRYPT_NEWKEYSET = 0x00000008
336
+ CRYPT_DELETEKEYSET = 0x00000010
337
+ CRYPT_MACHINE_KEYSET = 0x00000020
338
+ CRYPT_SILENT = 0x00000040
339
+ CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
340
+
341
+ /* Flags for PFXImportCertStore */
342
+ CRYPT_EXPORTABLE = 0x00000001
343
+ CRYPT_USER_PROTECTED = 0x00000002
344
+ CRYPT_USER_KEYSET = 0x00001000
345
+ PKCS12_PREFER_CNG_KSP = 0x00000100
346
+ PKCS12_ALWAYS_CNG_KSP = 0x00000200
347
+ PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000
348
+ PKCS12_NO_PERSIST_KEY = 0x00008000
349
+ PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010
350
+
351
+ /* Flags for CryptAcquireCertificatePrivateKey */
352
+ CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001
353
+ CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002
354
+ CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004
355
+ CRYPT_ACQUIRE_NO_HEALING = 0x00000008
356
+ CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040
357
+ CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080
358
+ CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000
359
+ CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000
360
+ CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000
361
+ CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000
362
+
363
+ /* pdwKeySpec for CryptAcquireCertificatePrivateKey */
364
+ AT_KEYEXCHANGE = 1
365
+ AT_SIGNATURE = 2
366
+ CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF
367
+
368
+ /* Default usage match type is AND with value zero */
369
+ USAGE_MATCH_TYPE_AND = 0
370
+ USAGE_MATCH_TYPE_OR = 1
371
+
372
+ /* msgAndCertEncodingType values for CertOpenStore function */
373
+ X509_ASN_ENCODING = 0x00000001
374
+ PKCS_7_ASN_ENCODING = 0x00010000
375
+
376
+ /* storeProvider values for CertOpenStore function */
377
+ CERT_STORE_PROV_MSG = 1
378
+ CERT_STORE_PROV_MEMORY = 2
379
+ CERT_STORE_PROV_FILE = 3
380
+ CERT_STORE_PROV_REG = 4
381
+ CERT_STORE_PROV_PKCS7 = 5
382
+ CERT_STORE_PROV_SERIALIZED = 6
383
+ CERT_STORE_PROV_FILENAME_A = 7
384
+ CERT_STORE_PROV_FILENAME_W = 8
385
+ CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W
386
+ CERT_STORE_PROV_SYSTEM_A = 9
387
+ CERT_STORE_PROV_SYSTEM_W = 10
388
+ CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W
389
+ CERT_STORE_PROV_COLLECTION = 11
390
+ CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12
391
+ CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13
392
+ CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W
393
+ CERT_STORE_PROV_PHYSICAL_W = 14
394
+ CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W
395
+ CERT_STORE_PROV_SMART_CARD_W = 15
396
+ CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W
397
+ CERT_STORE_PROV_LDAP_W = 16
398
+ CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W
399
+ CERT_STORE_PROV_PKCS12 = 17
400
+
401
+ /* store characteristics (low WORD of flag) for CertOpenStore function */
402
+ CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001
403
+ CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002
404
+ CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
405
+ CERT_STORE_DELETE_FLAG = 0x00000010
406
+ CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020
407
+ CERT_STORE_SHARE_STORE_FLAG = 0x00000040
408
+ CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080
409
+ CERT_STORE_MANIFOLD_FLAG = 0x00000100
410
+ CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200
411
+ CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400
412
+ CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800
413
+ CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000
414
+ CERT_STORE_CREATE_NEW_FLAG = 0x00002000
415
+ CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
416
+ CERT_STORE_READONLY_FLAG = 0x00008000
417
+
418
+ /* store locations (high WORD of flag) for CertOpenStore function */
419
+ CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000
420
+ CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000
421
+ CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000
422
+ CERT_SYSTEM_STORE_SERVICES = 0x00050000
423
+ CERT_SYSTEM_STORE_USERS = 0x00060000
424
+ CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000
425
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000
426
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000
427
+ CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000
428
+ CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000
429
+
430
+ /* Miscellaneous high-WORD flags for CertOpenStore function */
431
+ CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000
432
+ CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000
433
+ CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000
434
+ CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000
435
+ CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000
436
+ CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000
437
+ CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000
438
+ CERT_LDAP_STORE_SIGN_FLAG = 0x00010000
439
+ CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000
440
+ CERT_LDAP_STORE_OPENED_FLAG = 0x00040000
441
+ CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000
442
+
443
+ /* addDisposition values for CertAddCertificateContextToStore function */
444
+ CERT_STORE_ADD_NEW = 1
445
+ CERT_STORE_ADD_USE_EXISTING = 2
446
+ CERT_STORE_ADD_REPLACE_EXISTING = 3
447
+ CERT_STORE_ADD_ALWAYS = 4
448
+ CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5
449
+ CERT_STORE_ADD_NEWER = 6
450
+ CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7
451
+
452
+ /* ErrorStatus values for CertTrustStatus struct */
453
+ CERT_TRUST_NO_ERROR = 0x00000000
454
+ CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
455
+ CERT_TRUST_IS_REVOKED = 0x00000004
456
+ CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
457
+ CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
458
+ CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
459
+ CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
460
+ CERT_TRUST_IS_CYCLIC = 0x00000080
461
+ CERT_TRUST_INVALID_EXTENSION = 0x00000100
462
+ CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
463
+ CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
464
+ CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
465
+ CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
466
+ CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
467
+ CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
468
+ CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
469
+ CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000
470
+ CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000
471
+ CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000
472
+ CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000
473
+ CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000
474
+ CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
475
+ CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
476
+ CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
477
+ CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
478
+
479
+ /* InfoStatus values for CertTrustStatus struct */
480
+ CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001
481
+ CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002
482
+ CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004
483
+ CERT_TRUST_IS_SELF_SIGNED = 0x00000008
484
+ CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100
485
+ CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400
486
+ CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400
487
+ CERT_TRUST_IS_PEER_TRUSTED = 0x00000800
488
+ CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000
489
+ CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000
490
+ CERT_TRUST_IS_CA_TRUSTED = 0x00004000
491
+ CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000
492
+
493
+ /* Certificate Information Flags */
494
+ CERT_INFO_VERSION_FLAG = 1
495
+ CERT_INFO_SERIAL_NUMBER_FLAG = 2
496
+ CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3
497
+ CERT_INFO_ISSUER_FLAG = 4
498
+ CERT_INFO_NOT_BEFORE_FLAG = 5
499
+ CERT_INFO_NOT_AFTER_FLAG = 6
500
+ CERT_INFO_SUBJECT_FLAG = 7
501
+ CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8
502
+ CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9
503
+ CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10
504
+ CERT_INFO_EXTENSION_FLAG = 11
505
+
506
+ /* dwFindType for CertFindCertificateInStore */
507
+ CERT_COMPARE_MASK = 0xFFFF
508
+ CERT_COMPARE_SHIFT = 16
509
+ CERT_COMPARE_ANY = 0
510
+ CERT_COMPARE_SHA1_HASH = 1
511
+ CERT_COMPARE_NAME = 2
512
+ CERT_COMPARE_ATTR = 3
513
+ CERT_COMPARE_MD5_HASH = 4
514
+ CERT_COMPARE_PROPERTY = 5
515
+ CERT_COMPARE_PUBLIC_KEY = 6
516
+ CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH
517
+ CERT_COMPARE_NAME_STR_A = 7
518
+ CERT_COMPARE_NAME_STR_W = 8
519
+ CERT_COMPARE_KEY_SPEC = 9
520
+ CERT_COMPARE_ENHKEY_USAGE = 10
521
+ CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE
522
+ CERT_COMPARE_SUBJECT_CERT = 11
523
+ CERT_COMPARE_ISSUER_OF = 12
524
+ CERT_COMPARE_EXISTING = 13
525
+ CERT_COMPARE_SIGNATURE_HASH = 14
526
+ CERT_COMPARE_KEY_IDENTIFIER = 15
527
+ CERT_COMPARE_CERT_ID = 16
528
+ CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17
529
+ CERT_COMPARE_PUBKEY_MD5_HASH = 18
530
+ CERT_COMPARE_SUBJECT_INFO_ACCESS = 19
531
+ CERT_COMPARE_HASH_STR = 20
532
+ CERT_COMPARE_HAS_PRIVATE_KEY = 21
533
+ CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
534
+ CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
535
+ CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
536
+ CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
537
+ CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
538
+ CERT_FIND_HASH = CERT_FIND_SHA1_HASH
539
+ CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
540
+ CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
541
+ CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
542
+ CERT_FIND_SUBJECT_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
543
+ CERT_FIND_ISSUER_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
544
+ CERT_FIND_ISSUER_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
545
+ CERT_FIND_SUBJECT_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
546
+ CERT_FIND_SUBJECT_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
547
+ CERT_FIND_SUBJECT_STR = CERT_FIND_SUBJECT_STR_W
548
+ CERT_FIND_ISSUER_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
549
+ CERT_FIND_ISSUER_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
550
+ CERT_FIND_ISSUER_STR = CERT_FIND_ISSUER_STR_W
551
+ CERT_FIND_KEY_SPEC = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
552
+ CERT_FIND_ENHKEY_USAGE = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
553
+ CERT_FIND_CTL_USAGE = CERT_FIND_ENHKEY_USAGE
554
+ CERT_FIND_SUBJECT_CERT = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
555
+ CERT_FIND_ISSUER_OF = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
556
+ CERT_FIND_EXISTING = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
557
+ CERT_FIND_CERT_ID = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
558
+ CERT_FIND_CROSS_CERT_DIST_POINTS = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
559
+ CERT_FIND_PUBKEY_MD5_HASH = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
560
+ CERT_FIND_SUBJECT_INFO_ACCESS = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)
561
+ CERT_FIND_HASH_STR = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)
562
+ CERT_FIND_HAS_PRIVATE_KEY = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)
563
+ CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 0x1
564
+ CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 0x2
565
+ CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4
566
+ CERT_FIND_NO_ENHKEY_USAGE_FLAG = 0x8
567
+ CERT_FIND_OR_ENHKEY_USAGE_FLAG = 0x10
568
+ CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 0x20
569
+ CERT_FIND_OPTIONAL_CTL_USAGE_FLAG = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG
570
+ CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
571
+ CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
572
+ CERT_FIND_NO_CTL_USAGE_FLAG = CERT_FIND_NO_ENHKEY_USAGE_FLAG
573
+ CERT_FIND_OR_CTL_USAGE_FLAG = CERT_FIND_OR_ENHKEY_USAGE_FLAG
574
+ CERT_FIND_VALID_CTL_USAGE_FLAG = CERT_FIND_VALID_ENHKEY_USAGE_FLAG
575
+
576
+ /* policyOID values for CertVerifyCertificateChainPolicy function */
577
+ CERT_CHAIN_POLICY_BASE = 1
578
+ CERT_CHAIN_POLICY_AUTHENTICODE = 2
579
+ CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
580
+ CERT_CHAIN_POLICY_SSL = 4
581
+ CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
582
+ CERT_CHAIN_POLICY_NT_AUTH = 6
583
+ CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
584
+ CERT_CHAIN_POLICY_EV = 8
585
+ CERT_CHAIN_POLICY_SSL_F12 = 9
586
+
587
+ /* flag for dwFindType CertFindChainInStore */
588
+ CERT_CHAIN_FIND_BY_ISSUER = 1
589
+
590
+ /* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */
591
+ CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 0x0001
592
+ CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 0x0002
593
+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004
594
+ CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 0x0008
595
+ CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 0x4000
596
+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 0x8000
597
+
598
+ /* Certificate Store close flags */
599
+ CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
600
+ CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
601
+
602
+ /* CryptQueryObject object type */
603
+ CERT_QUERY_OBJECT_FILE = 1
604
+ CERT_QUERY_OBJECT_BLOB = 2
605
+
606
+ /* CryptQueryObject content type flags */
607
+ CERT_QUERY_CONTENT_CERT = 1
608
+ CERT_QUERY_CONTENT_CTL = 2
609
+ CERT_QUERY_CONTENT_CRL = 3
610
+ CERT_QUERY_CONTENT_SERIALIZED_STORE = 4
611
+ CERT_QUERY_CONTENT_SERIALIZED_CERT = 5
612
+ CERT_QUERY_CONTENT_SERIALIZED_CTL = 6
613
+ CERT_QUERY_CONTENT_SERIALIZED_CRL = 7
614
+ CERT_QUERY_CONTENT_PKCS7_SIGNED = 8
615
+ CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9
616
+ CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10
617
+ CERT_QUERY_CONTENT_PKCS10 = 11
618
+ CERT_QUERY_CONTENT_PFX = 12
619
+ CERT_QUERY_CONTENT_CERT_PAIR = 13
620
+ CERT_QUERY_CONTENT_PFX_AND_LOAD = 14
621
+ CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT)
622
+ CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL)
623
+ CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL)
624
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
625
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
626
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
627
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
628
+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
629
+ CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
630
+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
631
+ CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10)
632
+ CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX)
633
+ CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR)
634
+ CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)
635
+ CERT_QUERY_CONTENT_FLAG_ALL = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)
636
+ CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)
637
+
638
+ /* CryptQueryObject format type flags */
639
+ CERT_QUERY_FORMAT_BINARY = 1
640
+ CERT_QUERY_FORMAT_BASE64_ENCODED = 2
641
+ CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3
642
+ CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY)
643
+ CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
644
+ CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
645
+ CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)
646
+
647
+ /* CertGetNameString name types */
648
+ CERT_NAME_EMAIL_TYPE = 1
649
+ CERT_NAME_RDN_TYPE = 2
650
+ CERT_NAME_ATTR_TYPE = 3
651
+ CERT_NAME_SIMPLE_DISPLAY_TYPE = 4
652
+ CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5
653
+ CERT_NAME_DNS_TYPE = 6
654
+ CERT_NAME_URL_TYPE = 7
655
+ CERT_NAME_UPN_TYPE = 8
656
+
657
+ /* CertGetNameString flags */
658
+ CERT_NAME_ISSUER_FLAG = 0x1
659
+ CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000
660
+ CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2
661
+ CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000
662
+
663
+ /* AuthType values for SSLExtraCertChainPolicyPara struct */
664
+ AUTHTYPE_CLIENT = 1
665
+ AUTHTYPE_SERVER = 2
666
+
667
+ /* Checks values for SSLExtraCertChainPolicyPara struct */
668
+ SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080
669
+ SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100
670
+ SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
671
+ SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
672
+ SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
673
+
674
+ /* Flags for Crypt[Un]ProtectData */
675
+ CRYPTPROTECT_UI_FORBIDDEN = 0x1
676
+ CRYPTPROTECT_LOCAL_MACHINE = 0x4
677
+ CRYPTPROTECT_CRED_SYNC = 0x8
678
+ CRYPTPROTECT_AUDIT = 0x10
679
+ CRYPTPROTECT_NO_RECOVERY = 0x20
680
+ CRYPTPROTECT_VERIFY_PROTECTION = 0x40
681
+ CRYPTPROTECT_CRED_REGENERATE = 0x80
682
+
683
+ /* Flags for CryptProtectPromptStruct */
684
+ CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1
685
+ CRYPTPROTECT_PROMPT_ON_PROTECT = 2
686
+ CRYPTPROTECT_PROMPT_RESERVED = 4
687
+ CRYPTPROTECT_PROMPT_STRONG = 8
688
+ CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16
689
+ )
690
+
691
+ const (
692
+ // flags for SetErrorMode
693
+ SEM_FAILCRITICALERRORS = 0x0001
694
+ SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
695
+ SEM_NOGPFAULTERRORBOX = 0x0002
696
+ SEM_NOOPENFILEERRORBOX = 0x8000
697
+ )
698
+
699
+ const (
700
+ // Priority class.
701
+ ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
702
+ BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
703
+ HIGH_PRIORITY_CLASS = 0x00000080
704
+ IDLE_PRIORITY_CLASS = 0x00000040
705
+ NORMAL_PRIORITY_CLASS = 0x00000020
706
+ PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000
707
+ PROCESS_MODE_BACKGROUND_END = 0x00200000
708
+ REALTIME_PRIORITY_CLASS = 0x00000100
709
+ )
710
+
711
+ /* wintrust.h constants for WinVerifyTrustEx */
712
+ const (
713
+ WTD_UI_ALL = 1
714
+ WTD_UI_NONE = 2
715
+ WTD_UI_NOBAD = 3
716
+ WTD_UI_NOGOOD = 4
717
+
718
+ WTD_REVOKE_NONE = 0
719
+ WTD_REVOKE_WHOLECHAIN = 1
720
+
721
+ WTD_CHOICE_FILE = 1
722
+ WTD_CHOICE_CATALOG = 2
723
+ WTD_CHOICE_BLOB = 3
724
+ WTD_CHOICE_SIGNER = 4
725
+ WTD_CHOICE_CERT = 5
726
+
727
+ WTD_STATEACTION_IGNORE = 0x00000000
728
+ WTD_STATEACTION_VERIFY = 0x00000001
729
+ WTD_STATEACTION_CLOSE = 0x00000002
730
+ WTD_STATEACTION_AUTO_CACHE = 0x00000003
731
+ WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
732
+
733
+ WTD_USE_IE4_TRUST_FLAG = 0x1
734
+ WTD_NO_IE4_CHAIN_FLAG = 0x2
735
+ WTD_NO_POLICY_USAGE_FLAG = 0x4
736
+ WTD_REVOCATION_CHECK_NONE = 0x10
737
+ WTD_REVOCATION_CHECK_END_CERT = 0x20
738
+ WTD_REVOCATION_CHECK_CHAIN = 0x40
739
+ WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80
740
+ WTD_SAFER_FLAG = 0x100
741
+ WTD_HASH_ONLY_FLAG = 0x200
742
+ WTD_USE_DEFAULT_OSVER_CHECK = 0x400
743
+ WTD_LIFETIME_SIGNING_FLAG = 0x800
744
+ WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000
745
+ WTD_DISABLE_MD2_MD4 = 0x2000
746
+ WTD_MOTW = 0x4000
747
+
748
+ WTD_UICONTEXT_EXECUTE = 0
749
+ WTD_UICONTEXT_INSTALL = 1
750
+ )
751
+
752
+ var (
753
+ OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
754
+ OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
755
+ OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
756
+
757
+ WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{
758
+ Data1: 0xaac56b,
759
+ Data2: 0xcd44,
760
+ Data3: 0x11d0,
761
+ Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},
762
+ }
763
+ )
764
+
765
+ // Pointer represents a pointer to an arbitrary Windows type.
766
+ //
767
+ // Pointer-typed fields may point to one of many different types. It's
768
+ // up to the caller to provide a pointer to the appropriate type, cast
769
+ // to Pointer. The caller must obey the unsafe.Pointer rules while
770
+ // doing so.
771
+ type Pointer *struct{}
772
+
773
+ // Invented values to support what package os expects.
774
+ type Timeval struct {
775
+ Sec int32
776
+ Usec int32
777
+ }
778
+
779
+ func (tv *Timeval) Nanoseconds() int64 {
780
+ return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
781
+ }
782
+
783
+ func NsecToTimeval(nsec int64) (tv Timeval) {
784
+ tv.Sec = int32(nsec / 1e9)
785
+ tv.Usec = int32(nsec % 1e9 / 1e3)
786
+ return
787
+ }
788
+
789
+ type Overlapped struct {
790
+ Internal uintptr
791
+ InternalHigh uintptr
792
+ Offset uint32
793
+ OffsetHigh uint32
794
+ HEvent Handle
795
+ }
796
+
797
+ type FileNotifyInformation struct {
798
+ NextEntryOffset uint32
799
+ Action uint32
800
+ FileNameLength uint32
801
+ FileName uint16
802
+ }
803
+
804
+ type Filetime struct {
805
+ LowDateTime uint32
806
+ HighDateTime uint32
807
+ }
808
+
809
+ // Nanoseconds returns Filetime ft in nanoseconds
810
+ // since Epoch (00:00:00 UTC, January 1, 1970).
811
+ func (ft *Filetime) Nanoseconds() int64 {
812
+ // 100-nanosecond intervals since January 1, 1601
813
+ nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
814
+ // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
815
+ nsec -= 116444736000000000
816
+ // convert into nanoseconds
817
+ nsec *= 100
818
+ return nsec
819
+ }
820
+
821
+ func NsecToFiletime(nsec int64) (ft Filetime) {
822
+ // convert into 100-nanosecond
823
+ nsec /= 100
824
+ // change starting time to January 1, 1601
825
+ nsec += 116444736000000000
826
+ // split into high / low
827
+ ft.LowDateTime = uint32(nsec & 0xffffffff)
828
+ ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
829
+ return ft
830
+ }
831
+
832
+ type Win32finddata struct {
833
+ FileAttributes uint32
834
+ CreationTime Filetime
835
+ LastAccessTime Filetime
836
+ LastWriteTime Filetime
837
+ FileSizeHigh uint32
838
+ FileSizeLow uint32
839
+ Reserved0 uint32
840
+ Reserved1 uint32
841
+ FileName [MAX_PATH - 1]uint16
842
+ AlternateFileName [13]uint16
843
+ }
844
+
845
+ // This is the actual system call structure.
846
+ // Win32finddata is what we committed to in Go 1.
847
+ type win32finddata1 struct {
848
+ FileAttributes uint32
849
+ CreationTime Filetime
850
+ LastAccessTime Filetime
851
+ LastWriteTime Filetime
852
+ FileSizeHigh uint32
853
+ FileSizeLow uint32
854
+ Reserved0 uint32
855
+ Reserved1 uint32
856
+ FileName [MAX_PATH]uint16
857
+ AlternateFileName [14]uint16
858
+
859
+ // The Microsoft documentation for this struct¹ describes three additional
860
+ // fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields
861
+ // are empirically only present in the macOS port of the Win32 API,² and thus
862
+ // not needed for binaries built for Windows.
863
+ //
864
+ // ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe
865
+ // ² https://golang.org/issue/42637#issuecomment-760715755.
866
+ }
867
+
868
+ func copyFindData(dst *Win32finddata, src *win32finddata1) {
869
+ dst.FileAttributes = src.FileAttributes
870
+ dst.CreationTime = src.CreationTime
871
+ dst.LastAccessTime = src.LastAccessTime
872
+ dst.LastWriteTime = src.LastWriteTime
873
+ dst.FileSizeHigh = src.FileSizeHigh
874
+ dst.FileSizeLow = src.FileSizeLow
875
+ dst.Reserved0 = src.Reserved0
876
+ dst.Reserved1 = src.Reserved1
877
+
878
+ // The src is 1 element bigger than dst, but it must be NUL.
879
+ copy(dst.FileName[:], src.FileName[:])
880
+ copy(dst.AlternateFileName[:], src.AlternateFileName[:])
881
+ }
882
+
883
+ type ByHandleFileInformation struct {
884
+ FileAttributes uint32
885
+ CreationTime Filetime
886
+ LastAccessTime Filetime
887
+ LastWriteTime Filetime
888
+ VolumeSerialNumber uint32
889
+ FileSizeHigh uint32
890
+ FileSizeLow uint32
891
+ NumberOfLinks uint32
892
+ FileIndexHigh uint32
893
+ FileIndexLow uint32
894
+ }
895
+
896
+ const (
897
+ GetFileExInfoStandard = 0
898
+ GetFileExMaxInfoLevel = 1
899
+ )
900
+
901
+ type Win32FileAttributeData struct {
902
+ FileAttributes uint32
903
+ CreationTime Filetime
904
+ LastAccessTime Filetime
905
+ LastWriteTime Filetime
906
+ FileSizeHigh uint32
907
+ FileSizeLow uint32
908
+ }
909
+
910
+ // ShowWindow constants
911
+ const (
912
+ // winuser.h
913
+ SW_HIDE = 0
914
+ SW_NORMAL = 1
915
+ SW_SHOWNORMAL = 1
916
+ SW_SHOWMINIMIZED = 2
917
+ SW_SHOWMAXIMIZED = 3
918
+ SW_MAXIMIZE = 3
919
+ SW_SHOWNOACTIVATE = 4
920
+ SW_SHOW = 5
921
+ SW_MINIMIZE = 6
922
+ SW_SHOWMINNOACTIVE = 7
923
+ SW_SHOWNA = 8
924
+ SW_RESTORE = 9
925
+ SW_SHOWDEFAULT = 10
926
+ SW_FORCEMINIMIZE = 11
927
+ )
928
+
929
+ type StartupInfo struct {
930
+ Cb uint32
931
+ _ *uint16
932
+ Desktop *uint16
933
+ Title *uint16
934
+ X uint32
935
+ Y uint32
936
+ XSize uint32
937
+ YSize uint32
938
+ XCountChars uint32
939
+ YCountChars uint32
940
+ FillAttribute uint32
941
+ Flags uint32
942
+ ShowWindow uint16
943
+ _ uint16
944
+ _ *byte
945
+ StdInput Handle
946
+ StdOutput Handle
947
+ StdErr Handle
948
+ }
949
+
950
+ type StartupInfoEx struct {
951
+ StartupInfo
952
+ ProcThreadAttributeList *ProcThreadAttributeList
953
+ }
954
+
955
+ // ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.
956
+ //
957
+ // To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update
958
+ // it with ProcThreadAttributeListContainer.Update, free its memory using
959
+ // ProcThreadAttributeListContainer.Delete, and access the list itself using
960
+ // ProcThreadAttributeListContainer.List.
961
+ type ProcThreadAttributeList struct{}
962
+
963
+ type ProcThreadAttributeListContainer struct {
964
+ data *ProcThreadAttributeList
965
+ pointers []unsafe.Pointer
966
+ }
967
+
968
+ type ProcessInformation struct {
969
+ Process Handle
970
+ Thread Handle
971
+ ProcessId uint32
972
+ ThreadId uint32
973
+ }
974
+
975
+ type ProcessEntry32 struct {
976
+ Size uint32
977
+ Usage uint32
978
+ ProcessID uint32
979
+ DefaultHeapID uintptr
980
+ ModuleID uint32
981
+ Threads uint32
982
+ ParentProcessID uint32
983
+ PriClassBase int32
984
+ Flags uint32
985
+ ExeFile [MAX_PATH]uint16
986
+ }
987
+
988
+ type ThreadEntry32 struct {
989
+ Size uint32
990
+ Usage uint32
991
+ ThreadID uint32
992
+ OwnerProcessID uint32
993
+ BasePri int32
994
+ DeltaPri int32
995
+ Flags uint32
996
+ }
997
+
998
+ type ModuleEntry32 struct {
999
+ Size uint32
1000
+ ModuleID uint32
1001
+ ProcessID uint32
1002
+ GlblcntUsage uint32
1003
+ ProccntUsage uint32
1004
+ ModBaseAddr uintptr
1005
+ ModBaseSize uint32
1006
+ ModuleHandle Handle
1007
+ Module [MAX_MODULE_NAME32 + 1]uint16
1008
+ ExePath [MAX_PATH]uint16
1009
+ }
1010
+
1011
+ const SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})
1012
+
1013
+ type Systemtime struct {
1014
+ Year uint16
1015
+ Month uint16
1016
+ DayOfWeek uint16
1017
+ Day uint16
1018
+ Hour uint16
1019
+ Minute uint16
1020
+ Second uint16
1021
+ Milliseconds uint16
1022
+ }
1023
+
1024
+ type Timezoneinformation struct {
1025
+ Bias int32
1026
+ StandardName [32]uint16
1027
+ StandardDate Systemtime
1028
+ StandardBias int32
1029
+ DaylightName [32]uint16
1030
+ DaylightDate Systemtime
1031
+ DaylightBias int32
1032
+ }
1033
+
1034
+ // Socket related.
1035
+
1036
+ const (
1037
+ AF_UNSPEC = 0
1038
+ AF_UNIX = 1
1039
+ AF_INET = 2
1040
+ AF_NETBIOS = 17
1041
+ AF_INET6 = 23
1042
+ AF_IRDA = 26
1043
+ AF_BTH = 32
1044
+
1045
+ SOCK_STREAM = 1
1046
+ SOCK_DGRAM = 2
1047
+ SOCK_RAW = 3
1048
+ SOCK_RDM = 4
1049
+ SOCK_SEQPACKET = 5
1050
+
1051
+ IPPROTO_IP = 0
1052
+ IPPROTO_ICMP = 1
1053
+ IPPROTO_IGMP = 2
1054
+ BTHPROTO_RFCOMM = 3
1055
+ IPPROTO_TCP = 6
1056
+ IPPROTO_UDP = 17
1057
+ IPPROTO_IPV6 = 41
1058
+ IPPROTO_ICMPV6 = 58
1059
+ IPPROTO_RM = 113
1060
+
1061
+ SOL_SOCKET = 0xffff
1062
+ SO_REUSEADDR = 4
1063
+ SO_KEEPALIVE = 8
1064
+ SO_DONTROUTE = 16
1065
+ SO_BROADCAST = 32
1066
+ SO_LINGER = 128
1067
+ SO_RCVBUF = 0x1002
1068
+ SO_SNDTIMEO = 0x1005
1069
+ SO_RCVTIMEO = 0x1006
1070
+ SO_SNDBUF = 0x1001
1071
+ SO_UPDATE_ACCEPT_CONTEXT = 0x700b
1072
+ SO_UPDATE_CONNECT_CONTEXT = 0x7010
1073
+
1074
+ IOC_OUT = 0x40000000
1075
+ IOC_IN = 0x80000000
1076
+ IOC_VENDOR = 0x18000000
1077
+ IOC_INOUT = IOC_IN | IOC_OUT
1078
+ IOC_WS2 = 0x08000000
1079
+ SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
1080
+ SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
1081
+ SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
1082
+ SIO_UDP_NETRESET = IOC_IN | IOC_VENDOR | 15
1083
+
1084
+ // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
1085
+
1086
+ IP_HDRINCL = 0x2
1087
+ IP_TOS = 0x3
1088
+ IP_TTL = 0x4
1089
+ IP_MULTICAST_IF = 0x9
1090
+ IP_MULTICAST_TTL = 0xa
1091
+ IP_MULTICAST_LOOP = 0xb
1092
+ IP_ADD_MEMBERSHIP = 0xc
1093
+ IP_DROP_MEMBERSHIP = 0xd
1094
+ IP_PKTINFO = 0x13
1095
+ IP_MTU_DISCOVER = 0x47
1096
+
1097
+ IPV6_V6ONLY = 0x1b
1098
+ IPV6_UNICAST_HOPS = 0x4
1099
+ IPV6_MULTICAST_IF = 0x9
1100
+ IPV6_MULTICAST_HOPS = 0xa
1101
+ IPV6_MULTICAST_LOOP = 0xb
1102
+ IPV6_JOIN_GROUP = 0xc
1103
+ IPV6_LEAVE_GROUP = 0xd
1104
+ IPV6_PKTINFO = 0x13
1105
+ IPV6_MTU_DISCOVER = 0x47
1106
+
1107
+ MSG_OOB = 0x1
1108
+ MSG_PEEK = 0x2
1109
+ MSG_DONTROUTE = 0x4
1110
+ MSG_WAITALL = 0x8
1111
+
1112
+ MSG_TRUNC = 0x0100
1113
+ MSG_CTRUNC = 0x0200
1114
+ MSG_BCAST = 0x0400
1115
+ MSG_MCAST = 0x0800
1116
+
1117
+ SOMAXCONN = 0x7fffffff
1118
+
1119
+ TCP_NODELAY = 1
1120
+ TCP_EXPEDITED_1122 = 2
1121
+ TCP_KEEPALIVE = 3
1122
+ TCP_MAXSEG = 4
1123
+ TCP_MAXRT = 5
1124
+ TCP_STDURG = 6
1125
+ TCP_NOURG = 7
1126
+ TCP_ATMARK = 8
1127
+ TCP_NOSYNRETRIES = 9
1128
+ TCP_TIMESTAMPS = 10
1129
+ TCP_OFFLOAD_PREFERENCE = 11
1130
+ TCP_CONGESTION_ALGORITHM = 12
1131
+ TCP_DELAY_FIN_ACK = 13
1132
+ TCP_MAXRTMS = 14
1133
+ TCP_FASTOPEN = 15
1134
+ TCP_KEEPCNT = 16
1135
+ TCP_KEEPIDLE = TCP_KEEPALIVE
1136
+ TCP_KEEPINTVL = 17
1137
+ TCP_FAIL_CONNECT_ON_ICMP_ERROR = 18
1138
+ TCP_ICMP_ERROR_INFO = 19
1139
+
1140
+ UDP_NOCHECKSUM = 1
1141
+ UDP_SEND_MSG_SIZE = 2
1142
+ UDP_RECV_MAX_COALESCED_SIZE = 3
1143
+ UDP_CHECKSUM_COVERAGE = 20
1144
+
1145
+ UDP_COALESCED_INFO = 3
1146
+
1147
+ SHUT_RD = 0
1148
+ SHUT_WR = 1
1149
+ SHUT_RDWR = 2
1150
+
1151
+ WSADESCRIPTION_LEN = 256
1152
+ WSASYS_STATUS_LEN = 128
1153
+ )
1154
+
1155
+ // enum PMTUD_STATE from ws2ipdef.h
1156
+ const (
1157
+ IP_PMTUDISC_NOT_SET = 0
1158
+ IP_PMTUDISC_DO = 1
1159
+ IP_PMTUDISC_DONT = 2
1160
+ IP_PMTUDISC_PROBE = 3
1161
+ IP_PMTUDISC_MAX = 4
1162
+ )
1163
+
1164
+ type WSABuf struct {
1165
+ Len uint32
1166
+ Buf *byte
1167
+ }
1168
+
1169
+ type WSAMsg struct {
1170
+ Name *syscall.RawSockaddrAny
1171
+ Namelen int32
1172
+ Buffers *WSABuf
1173
+ BufferCount uint32
1174
+ Control WSABuf
1175
+ Flags uint32
1176
+ }
1177
+
1178
+ type WSACMSGHDR struct {
1179
+ Len uintptr
1180
+ Level int32
1181
+ Type int32
1182
+ }
1183
+
1184
+ type IN_PKTINFO struct {
1185
+ Addr [4]byte
1186
+ Ifindex uint32
1187
+ }
1188
+
1189
+ type IN6_PKTINFO struct {
1190
+ Addr [16]byte
1191
+ Ifindex uint32
1192
+ }
1193
+
1194
+ // Flags for WSASocket
1195
+ const (
1196
+ WSA_FLAG_OVERLAPPED = 0x01
1197
+ WSA_FLAG_MULTIPOINT_C_ROOT = 0x02
1198
+ WSA_FLAG_MULTIPOINT_C_LEAF = 0x04
1199
+ WSA_FLAG_MULTIPOINT_D_ROOT = 0x08
1200
+ WSA_FLAG_MULTIPOINT_D_LEAF = 0x10
1201
+ WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40
1202
+ WSA_FLAG_NO_HANDLE_INHERIT = 0x80
1203
+ WSA_FLAG_REGISTERED_IO = 0x100
1204
+ )
1205
+
1206
+ // Invented values to support what package os expects.
1207
+ const (
1208
+ S_IFMT = 0x1f000
1209
+ S_IFIFO = 0x1000
1210
+ S_IFCHR = 0x2000
1211
+ S_IFDIR = 0x4000
1212
+ S_IFBLK = 0x6000
1213
+ S_IFREG = 0x8000
1214
+ S_IFLNK = 0xa000
1215
+ S_IFSOCK = 0xc000
1216
+ S_ISUID = 0x800
1217
+ S_ISGID = 0x400
1218
+ S_ISVTX = 0x200
1219
+ S_IRUSR = 0x100
1220
+ S_IWRITE = 0x80
1221
+ S_IWUSR = 0x80
1222
+ S_IXUSR = 0x40
1223
+ )
1224
+
1225
+ const (
1226
+ FILE_TYPE_CHAR = 0x0002
1227
+ FILE_TYPE_DISK = 0x0001
1228
+ FILE_TYPE_PIPE = 0x0003
1229
+ FILE_TYPE_REMOTE = 0x8000
1230
+ FILE_TYPE_UNKNOWN = 0x0000
1231
+ )
1232
+
1233
+ type Hostent struct {
1234
+ Name *byte
1235
+ Aliases **byte
1236
+ AddrType uint16
1237
+ Length uint16
1238
+ AddrList **byte
1239
+ }
1240
+
1241
+ type Protoent struct {
1242
+ Name *byte
1243
+ Aliases **byte
1244
+ Proto uint16
1245
+ }
1246
+
1247
+ const (
1248
+ DNS_TYPE_A = 0x0001
1249
+ DNS_TYPE_NS = 0x0002
1250
+ DNS_TYPE_MD = 0x0003
1251
+ DNS_TYPE_MF = 0x0004
1252
+ DNS_TYPE_CNAME = 0x0005
1253
+ DNS_TYPE_SOA = 0x0006
1254
+ DNS_TYPE_MB = 0x0007
1255
+ DNS_TYPE_MG = 0x0008
1256
+ DNS_TYPE_MR = 0x0009
1257
+ DNS_TYPE_NULL = 0x000a
1258
+ DNS_TYPE_WKS = 0x000b
1259
+ DNS_TYPE_PTR = 0x000c
1260
+ DNS_TYPE_HINFO = 0x000d
1261
+ DNS_TYPE_MINFO = 0x000e
1262
+ DNS_TYPE_MX = 0x000f
1263
+ DNS_TYPE_TEXT = 0x0010
1264
+ DNS_TYPE_RP = 0x0011
1265
+ DNS_TYPE_AFSDB = 0x0012
1266
+ DNS_TYPE_X25 = 0x0013
1267
+ DNS_TYPE_ISDN = 0x0014
1268
+ DNS_TYPE_RT = 0x0015
1269
+ DNS_TYPE_NSAP = 0x0016
1270
+ DNS_TYPE_NSAPPTR = 0x0017
1271
+ DNS_TYPE_SIG = 0x0018
1272
+ DNS_TYPE_KEY = 0x0019
1273
+ DNS_TYPE_PX = 0x001a
1274
+ DNS_TYPE_GPOS = 0x001b
1275
+ DNS_TYPE_AAAA = 0x001c
1276
+ DNS_TYPE_LOC = 0x001d
1277
+ DNS_TYPE_NXT = 0x001e
1278
+ DNS_TYPE_EID = 0x001f
1279
+ DNS_TYPE_NIMLOC = 0x0020
1280
+ DNS_TYPE_SRV = 0x0021
1281
+ DNS_TYPE_ATMA = 0x0022
1282
+ DNS_TYPE_NAPTR = 0x0023
1283
+ DNS_TYPE_KX = 0x0024
1284
+ DNS_TYPE_CERT = 0x0025
1285
+ DNS_TYPE_A6 = 0x0026
1286
+ DNS_TYPE_DNAME = 0x0027
1287
+ DNS_TYPE_SINK = 0x0028
1288
+ DNS_TYPE_OPT = 0x0029
1289
+ DNS_TYPE_DS = 0x002B
1290
+ DNS_TYPE_RRSIG = 0x002E
1291
+ DNS_TYPE_NSEC = 0x002F
1292
+ DNS_TYPE_DNSKEY = 0x0030
1293
+ DNS_TYPE_DHCID = 0x0031
1294
+ DNS_TYPE_UINFO = 0x0064
1295
+ DNS_TYPE_UID = 0x0065
1296
+ DNS_TYPE_GID = 0x0066
1297
+ DNS_TYPE_UNSPEC = 0x0067
1298
+ DNS_TYPE_ADDRS = 0x00f8
1299
+ DNS_TYPE_TKEY = 0x00f9
1300
+ DNS_TYPE_TSIG = 0x00fa
1301
+ DNS_TYPE_IXFR = 0x00fb
1302
+ DNS_TYPE_AXFR = 0x00fc
1303
+ DNS_TYPE_MAILB = 0x00fd
1304
+ DNS_TYPE_MAILA = 0x00fe
1305
+ DNS_TYPE_ALL = 0x00ff
1306
+ DNS_TYPE_ANY = 0x00ff
1307
+ DNS_TYPE_WINS = 0xff01
1308
+ DNS_TYPE_WINSR = 0xff02
1309
+ DNS_TYPE_NBSTAT = 0xff01
1310
+ )
1311
+
1312
+ const (
1313
+ // flags inside DNSRecord.Dw
1314
+ DnsSectionQuestion = 0x0000
1315
+ DnsSectionAnswer = 0x0001
1316
+ DnsSectionAuthority = 0x0002
1317
+ DnsSectionAdditional = 0x0003
1318
+ )
1319
+
1320
+ const (
1321
+ // flags of WSALookupService
1322
+ LUP_DEEP = 0x0001
1323
+ LUP_CONTAINERS = 0x0002
1324
+ LUP_NOCONTAINERS = 0x0004
1325
+ LUP_NEAREST = 0x0008
1326
+ LUP_RETURN_NAME = 0x0010
1327
+ LUP_RETURN_TYPE = 0x0020
1328
+ LUP_RETURN_VERSION = 0x0040
1329
+ LUP_RETURN_COMMENT = 0x0080
1330
+ LUP_RETURN_ADDR = 0x0100
1331
+ LUP_RETURN_BLOB = 0x0200
1332
+ LUP_RETURN_ALIASES = 0x0400
1333
+ LUP_RETURN_QUERY_STRING = 0x0800
1334
+ LUP_RETURN_ALL = 0x0FF0
1335
+ LUP_RES_SERVICE = 0x8000
1336
+
1337
+ LUP_FLUSHCACHE = 0x1000
1338
+ LUP_FLUSHPREVIOUS = 0x2000
1339
+
1340
+ LUP_NON_AUTHORITATIVE = 0x4000
1341
+ LUP_SECURE = 0x8000
1342
+ LUP_RETURN_PREFERRED_NAMES = 0x10000
1343
+ LUP_DNS_ONLY = 0x20000
1344
+
1345
+ LUP_ADDRCONFIG = 0x100000
1346
+ LUP_DUAL_ADDR = 0x200000
1347
+ LUP_FILESERVER = 0x400000
1348
+ LUP_DISABLE_IDN_ENCODING = 0x00800000
1349
+ LUP_API_ANSI = 0x01000000
1350
+
1351
+ LUP_RESOLUTION_HANDLE = 0x80000000
1352
+ )
1353
+
1354
+ const (
1355
+ // values of WSAQUERYSET's namespace
1356
+ NS_ALL = 0
1357
+ NS_DNS = 12
1358
+ NS_NLA = 15
1359
+ NS_BTH = 16
1360
+ NS_EMAIL = 37
1361
+ NS_PNRPNAME = 38
1362
+ NS_PNRPCLOUD = 39
1363
+ )
1364
+
1365
+ type DNSSRVData struct {
1366
+ Target *uint16
1367
+ Priority uint16
1368
+ Weight uint16
1369
+ Port uint16
1370
+ Pad uint16
1371
+ }
1372
+
1373
+ type DNSPTRData struct {
1374
+ Host *uint16
1375
+ }
1376
+
1377
+ type DNSMXData struct {
1378
+ NameExchange *uint16
1379
+ Preference uint16
1380
+ Pad uint16
1381
+ }
1382
+
1383
+ type DNSTXTData struct {
1384
+ StringCount uint16
1385
+ StringArray [1]*uint16
1386
+ }
1387
+
1388
+ type DNSRecord struct {
1389
+ Next *DNSRecord
1390
+ Name *uint16
1391
+ Type uint16
1392
+ Length uint16
1393
+ Dw uint32
1394
+ Ttl uint32
1395
+ Reserved uint32
1396
+ Data [40]byte
1397
+ }
1398
+
1399
+ const (
1400
+ TF_DISCONNECT = 1
1401
+ TF_REUSE_SOCKET = 2
1402
+ TF_WRITE_BEHIND = 4
1403
+ TF_USE_DEFAULT_WORKER = 0
1404
+ TF_USE_SYSTEM_THREAD = 16
1405
+ TF_USE_KERNEL_APC = 32
1406
+ )
1407
+
1408
+ type TransmitFileBuffers struct {
1409
+ Head uintptr
1410
+ HeadLength uint32
1411
+ Tail uintptr
1412
+ TailLength uint32
1413
+ }
1414
+
1415
+ const (
1416
+ IFF_UP = 1
1417
+ IFF_BROADCAST = 2
1418
+ IFF_LOOPBACK = 4
1419
+ IFF_POINTTOPOINT = 8
1420
+ IFF_MULTICAST = 16
1421
+ )
1422
+
1423
+ const SIO_GET_INTERFACE_LIST = 0x4004747F
1424
+
1425
+ // TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
1426
+ // will be fixed to change variable type as suitable.
1427
+
1428
+ type SockaddrGen [24]byte
1429
+
1430
+ type InterfaceInfo struct {
1431
+ Flags uint32
1432
+ Address SockaddrGen
1433
+ BroadcastAddress SockaddrGen
1434
+ Netmask SockaddrGen
1435
+ }
1436
+
1437
+ type IpAddressString struct {
1438
+ String [16]byte
1439
+ }
1440
+
1441
+ type IpMaskString IpAddressString
1442
+
1443
+ type IpAddrString struct {
1444
+ Next *IpAddrString
1445
+ IpAddress IpAddressString
1446
+ IpMask IpMaskString
1447
+ Context uint32
1448
+ }
1449
+
1450
+ const MAX_ADAPTER_NAME_LENGTH = 256
1451
+ const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
1452
+ const MAX_ADAPTER_ADDRESS_LENGTH = 8
1453
+
1454
+ type IpAdapterInfo struct {
1455
+ Next *IpAdapterInfo
1456
+ ComboIndex uint32
1457
+ AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
1458
+ Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
1459
+ AddressLength uint32
1460
+ Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
1461
+ Index uint32
1462
+ Type uint32
1463
+ DhcpEnabled uint32
1464
+ CurrentIpAddress *IpAddrString
1465
+ IpAddressList IpAddrString
1466
+ GatewayList IpAddrString
1467
+ DhcpServer IpAddrString
1468
+ HaveWins bool
1469
+ PrimaryWinsServer IpAddrString
1470
+ SecondaryWinsServer IpAddrString
1471
+ LeaseObtained int64
1472
+ LeaseExpires int64
1473
+ }
1474
+
1475
+ const MAXLEN_PHYSADDR = 8
1476
+ const MAX_INTERFACE_NAME_LEN = 256
1477
+ const MAXLEN_IFDESCR = 256
1478
+
1479
+ type MibIfRow struct {
1480
+ Name [MAX_INTERFACE_NAME_LEN]uint16
1481
+ Index uint32
1482
+ Type uint32
1483
+ Mtu uint32
1484
+ Speed uint32
1485
+ PhysAddrLen uint32
1486
+ PhysAddr [MAXLEN_PHYSADDR]byte
1487
+ AdminStatus uint32
1488
+ OperStatus uint32
1489
+ LastChange uint32
1490
+ InOctets uint32
1491
+ InUcastPkts uint32
1492
+ InNUcastPkts uint32
1493
+ InDiscards uint32
1494
+ InErrors uint32
1495
+ InUnknownProtos uint32
1496
+ OutOctets uint32
1497
+ OutUcastPkts uint32
1498
+ OutNUcastPkts uint32
1499
+ OutDiscards uint32
1500
+ OutErrors uint32
1501
+ OutQLen uint32
1502
+ DescrLen uint32
1503
+ Descr [MAXLEN_IFDESCR]byte
1504
+ }
1505
+
1506
+ type CertInfo struct {
1507
+ Version uint32
1508
+ SerialNumber CryptIntegerBlob
1509
+ SignatureAlgorithm CryptAlgorithmIdentifier
1510
+ Issuer CertNameBlob
1511
+ NotBefore Filetime
1512
+ NotAfter Filetime
1513
+ Subject CertNameBlob
1514
+ SubjectPublicKeyInfo CertPublicKeyInfo
1515
+ IssuerUniqueId CryptBitBlob
1516
+ SubjectUniqueId CryptBitBlob
1517
+ CountExtensions uint32
1518
+ Extensions *CertExtension
1519
+ }
1520
+
1521
+ type CertExtension struct {
1522
+ ObjId *byte
1523
+ Critical int32
1524
+ Value CryptObjidBlob
1525
+ }
1526
+
1527
+ type CryptAlgorithmIdentifier struct {
1528
+ ObjId *byte
1529
+ Parameters CryptObjidBlob
1530
+ }
1531
+
1532
+ type CertPublicKeyInfo struct {
1533
+ Algorithm CryptAlgorithmIdentifier
1534
+ PublicKey CryptBitBlob
1535
+ }
1536
+
1537
+ type DataBlob struct {
1538
+ Size uint32
1539
+ Data *byte
1540
+ }
1541
+ type CryptIntegerBlob DataBlob
1542
+ type CryptUintBlob DataBlob
1543
+ type CryptObjidBlob DataBlob
1544
+ type CertNameBlob DataBlob
1545
+ type CertRdnValueBlob DataBlob
1546
+ type CertBlob DataBlob
1547
+ type CrlBlob DataBlob
1548
+ type CryptDataBlob DataBlob
1549
+ type CryptHashBlob DataBlob
1550
+ type CryptDigestBlob DataBlob
1551
+ type CryptDerBlob DataBlob
1552
+ type CryptAttrBlob DataBlob
1553
+
1554
+ type CryptBitBlob struct {
1555
+ Size uint32
1556
+ Data *byte
1557
+ UnusedBits uint32
1558
+ }
1559
+
1560
+ type CertContext struct {
1561
+ EncodingType uint32
1562
+ EncodedCert *byte
1563
+ Length uint32
1564
+ CertInfo *CertInfo
1565
+ Store Handle
1566
+ }
1567
+
1568
+ type CertChainContext struct {
1569
+ Size uint32
1570
+ TrustStatus CertTrustStatus
1571
+ ChainCount uint32
1572
+ Chains **CertSimpleChain
1573
+ LowerQualityChainCount uint32
1574
+ LowerQualityChains **CertChainContext
1575
+ HasRevocationFreshnessTime uint32
1576
+ RevocationFreshnessTime uint32
1577
+ }
1578
+
1579
+ type CertTrustListInfo struct {
1580
+ // Not implemented
1581
+ }
1582
+
1583
+ type CertSimpleChain struct {
1584
+ Size uint32
1585
+ TrustStatus CertTrustStatus
1586
+ NumElements uint32
1587
+ Elements **CertChainElement
1588
+ TrustListInfo *CertTrustListInfo
1589
+ HasRevocationFreshnessTime uint32
1590
+ RevocationFreshnessTime uint32
1591
+ }
1592
+
1593
+ type CertChainElement struct {
1594
+ Size uint32
1595
+ CertContext *CertContext
1596
+ TrustStatus CertTrustStatus
1597
+ RevocationInfo *CertRevocationInfo
1598
+ IssuanceUsage *CertEnhKeyUsage
1599
+ ApplicationUsage *CertEnhKeyUsage
1600
+ ExtendedErrorInfo *uint16
1601
+ }
1602
+
1603
+ type CertRevocationCrlInfo struct {
1604
+ // Not implemented
1605
+ }
1606
+
1607
+ type CertRevocationInfo struct {
1608
+ Size uint32
1609
+ RevocationResult uint32
1610
+ RevocationOid *byte
1611
+ OidSpecificInfo Pointer
1612
+ HasFreshnessTime uint32
1613
+ FreshnessTime uint32
1614
+ CrlInfo *CertRevocationCrlInfo
1615
+ }
1616
+
1617
+ type CertTrustStatus struct {
1618
+ ErrorStatus uint32
1619
+ InfoStatus uint32
1620
+ }
1621
+
1622
+ type CertUsageMatch struct {
1623
+ Type uint32
1624
+ Usage CertEnhKeyUsage
1625
+ }
1626
+
1627
+ type CertEnhKeyUsage struct {
1628
+ Length uint32
1629
+ UsageIdentifiers **byte
1630
+ }
1631
+
1632
+ type CertChainPara struct {
1633
+ Size uint32
1634
+ RequestedUsage CertUsageMatch
1635
+ RequstedIssuancePolicy CertUsageMatch
1636
+ URLRetrievalTimeout uint32
1637
+ CheckRevocationFreshnessTime uint32
1638
+ RevocationFreshnessTime uint32
1639
+ CacheResync *Filetime
1640
+ }
1641
+
1642
+ type CertChainPolicyPara struct {
1643
+ Size uint32
1644
+ Flags uint32
1645
+ ExtraPolicyPara Pointer
1646
+ }
1647
+
1648
+ type SSLExtraCertChainPolicyPara struct {
1649
+ Size uint32
1650
+ AuthType uint32
1651
+ Checks uint32
1652
+ ServerName *uint16
1653
+ }
1654
+
1655
+ type CertChainPolicyStatus struct {
1656
+ Size uint32
1657
+ Error uint32
1658
+ ChainIndex uint32
1659
+ ElementIndex uint32
1660
+ ExtraPolicyStatus Pointer
1661
+ }
1662
+
1663
+ type CertPolicyInfo struct {
1664
+ Identifier *byte
1665
+ CountQualifiers uint32
1666
+ Qualifiers *CertPolicyQualifierInfo
1667
+ }
1668
+
1669
+ type CertPoliciesInfo struct {
1670
+ Count uint32
1671
+ PolicyInfos *CertPolicyInfo
1672
+ }
1673
+
1674
+ type CertPolicyQualifierInfo struct {
1675
+ // Not implemented
1676
+ }
1677
+
1678
+ type CertStrongSignPara struct {
1679
+ Size uint32
1680
+ InfoChoice uint32
1681
+ InfoOrSerializedInfoOrOID unsafe.Pointer
1682
+ }
1683
+
1684
+ type CryptProtectPromptStruct struct {
1685
+ Size uint32
1686
+ PromptFlags uint32
1687
+ App HWND
1688
+ Prompt *uint16
1689
+ }
1690
+
1691
+ type CertChainFindByIssuerPara struct {
1692
+ Size uint32
1693
+ UsageIdentifier *byte
1694
+ KeySpec uint32
1695
+ AcquirePrivateKeyFlags uint32
1696
+ IssuerCount uint32
1697
+ Issuer Pointer
1698
+ FindCallback Pointer
1699
+ FindArg Pointer
1700
+ IssuerChainIndex *uint32
1701
+ IssuerElementIndex *uint32
1702
+ }
1703
+
1704
+ type WinTrustData struct {
1705
+ Size uint32
1706
+ PolicyCallbackData uintptr
1707
+ SIPClientData uintptr
1708
+ UIChoice uint32
1709
+ RevocationChecks uint32
1710
+ UnionChoice uint32
1711
+ FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer
1712
+ StateAction uint32
1713
+ StateData Handle
1714
+ URLReference *uint16
1715
+ ProvFlags uint32
1716
+ UIContext uint32
1717
+ SignatureSettings *WinTrustSignatureSettings
1718
+ }
1719
+
1720
+ type WinTrustFileInfo struct {
1721
+ Size uint32
1722
+ FilePath *uint16
1723
+ File Handle
1724
+ KnownSubject *GUID
1725
+ }
1726
+
1727
+ type WinTrustSignatureSettings struct {
1728
+ Size uint32
1729
+ Index uint32
1730
+ Flags uint32
1731
+ SecondarySigs uint32
1732
+ VerifiedSigIndex uint32
1733
+ CryptoPolicy *CertStrongSignPara
1734
+ }
1735
+
1736
+ const (
1737
+ // do not reorder
1738
+ HKEY_CLASSES_ROOT = 0x80000000 + iota
1739
+ HKEY_CURRENT_USER
1740
+ HKEY_LOCAL_MACHINE
1741
+ HKEY_USERS
1742
+ HKEY_PERFORMANCE_DATA
1743
+ HKEY_CURRENT_CONFIG
1744
+ HKEY_DYN_DATA
1745
+
1746
+ KEY_QUERY_VALUE = 1
1747
+ KEY_SET_VALUE = 2
1748
+ KEY_CREATE_SUB_KEY = 4
1749
+ KEY_ENUMERATE_SUB_KEYS = 8
1750
+ KEY_NOTIFY = 16
1751
+ KEY_CREATE_LINK = 32
1752
+ KEY_WRITE = 0x20006
1753
+ KEY_EXECUTE = 0x20019
1754
+ KEY_READ = 0x20019
1755
+ KEY_WOW64_64KEY = 0x0100
1756
+ KEY_WOW64_32KEY = 0x0200
1757
+ KEY_ALL_ACCESS = 0xf003f
1758
+ )
1759
+
1760
+ const (
1761
+ // do not reorder
1762
+ REG_NONE = iota
1763
+ REG_SZ
1764
+ REG_EXPAND_SZ
1765
+ REG_BINARY
1766
+ REG_DWORD_LITTLE_ENDIAN
1767
+ REG_DWORD_BIG_ENDIAN
1768
+ REG_LINK
1769
+ REG_MULTI_SZ
1770
+ REG_RESOURCE_LIST
1771
+ REG_FULL_RESOURCE_DESCRIPTOR
1772
+ REG_RESOURCE_REQUIREMENTS_LIST
1773
+ REG_QWORD_LITTLE_ENDIAN
1774
+ REG_DWORD = REG_DWORD_LITTLE_ENDIAN
1775
+ REG_QWORD = REG_QWORD_LITTLE_ENDIAN
1776
+ )
1777
+
1778
+ const (
1779
+ EVENT_MODIFY_STATE = 0x0002
1780
+ EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
1781
+
1782
+ MUTANT_QUERY_STATE = 0x0001
1783
+ MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
1784
+
1785
+ SEMAPHORE_MODIFY_STATE = 0x0002
1786
+ SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
1787
+
1788
+ TIMER_QUERY_STATE = 0x0001
1789
+ TIMER_MODIFY_STATE = 0x0002
1790
+ TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE
1791
+
1792
+ MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
1793
+ MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
1794
+
1795
+ CREATE_EVENT_MANUAL_RESET = 0x1
1796
+ CREATE_EVENT_INITIAL_SET = 0x2
1797
+ CREATE_MUTEX_INITIAL_OWNER = 0x1
1798
+ )
1799
+
1800
+ type AddrinfoW struct {
1801
+ Flags int32
1802
+ Family int32
1803
+ Socktype int32
1804
+ Protocol int32
1805
+ Addrlen uintptr
1806
+ Canonname *uint16
1807
+ Addr uintptr
1808
+ Next *AddrinfoW
1809
+ }
1810
+
1811
+ const (
1812
+ AI_PASSIVE = 1
1813
+ AI_CANONNAME = 2
1814
+ AI_NUMERICHOST = 4
1815
+ )
1816
+
1817
+ type GUID struct {
1818
+ Data1 uint32
1819
+ Data2 uint16
1820
+ Data3 uint16
1821
+ Data4 [8]byte
1822
+ }
1823
+
1824
+ var WSAID_CONNECTEX = GUID{
1825
+ 0x25a207b9,
1826
+ 0xddf3,
1827
+ 0x4660,
1828
+ [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
1829
+ }
1830
+
1831
+ var WSAID_WSASENDMSG = GUID{
1832
+ 0xa441e712,
1833
+ 0x754f,
1834
+ 0x43ca,
1835
+ [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},
1836
+ }
1837
+
1838
+ var WSAID_WSARECVMSG = GUID{
1839
+ 0xf689d7c8,
1840
+ 0x6f1f,
1841
+ 0x436b,
1842
+ [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},
1843
+ }
1844
+
1845
+ const (
1846
+ FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
1847
+ FILE_SKIP_SET_EVENT_ON_HANDLE = 2
1848
+ )
1849
+
1850
+ const (
1851
+ WSAPROTOCOL_LEN = 255
1852
+ MAX_PROTOCOL_CHAIN = 7
1853
+ BASE_PROTOCOL = 1
1854
+ LAYERED_PROTOCOL = 0
1855
+
1856
+ XP1_CONNECTIONLESS = 0x00000001
1857
+ XP1_GUARANTEED_DELIVERY = 0x00000002
1858
+ XP1_GUARANTEED_ORDER = 0x00000004
1859
+ XP1_MESSAGE_ORIENTED = 0x00000008
1860
+ XP1_PSEUDO_STREAM = 0x00000010
1861
+ XP1_GRACEFUL_CLOSE = 0x00000020
1862
+ XP1_EXPEDITED_DATA = 0x00000040
1863
+ XP1_CONNECT_DATA = 0x00000080
1864
+ XP1_DISCONNECT_DATA = 0x00000100
1865
+ XP1_SUPPORT_BROADCAST = 0x00000200
1866
+ XP1_SUPPORT_MULTIPOINT = 0x00000400
1867
+ XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
1868
+ XP1_MULTIPOINT_DATA_PLANE = 0x00001000
1869
+ XP1_QOS_SUPPORTED = 0x00002000
1870
+ XP1_UNI_SEND = 0x00008000
1871
+ XP1_UNI_RECV = 0x00010000
1872
+ XP1_IFS_HANDLES = 0x00020000
1873
+ XP1_PARTIAL_MESSAGE = 0x00040000
1874
+ XP1_SAN_SUPPORT_SDP = 0x00080000
1875
+
1876
+ PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
1877
+ PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
1878
+ PFL_HIDDEN = 0x00000004
1879
+ PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
1880
+ PFL_NETWORKDIRECT_PROVIDER = 0x00000010
1881
+ )
1882
+
1883
+ type WSAProtocolInfo struct {
1884
+ ServiceFlags1 uint32
1885
+ ServiceFlags2 uint32
1886
+ ServiceFlags3 uint32
1887
+ ServiceFlags4 uint32
1888
+ ProviderFlags uint32
1889
+ ProviderId GUID
1890
+ CatalogEntryId uint32
1891
+ ProtocolChain WSAProtocolChain
1892
+ Version int32
1893
+ AddressFamily int32
1894
+ MaxSockAddr int32
1895
+ MinSockAddr int32
1896
+ SocketType int32
1897
+ Protocol int32
1898
+ ProtocolMaxOffset int32
1899
+ NetworkByteOrder int32
1900
+ SecurityScheme int32
1901
+ MessageSize uint32
1902
+ ProviderReserved uint32
1903
+ ProtocolName [WSAPROTOCOL_LEN + 1]uint16
1904
+ }
1905
+
1906
+ type WSAProtocolChain struct {
1907
+ ChainLen int32
1908
+ ChainEntries [MAX_PROTOCOL_CHAIN]uint32
1909
+ }
1910
+
1911
+ type TCPKeepalive struct {
1912
+ OnOff uint32
1913
+ Time uint32
1914
+ Interval uint32
1915
+ }
1916
+
1917
+ type symbolicLinkReparseBuffer struct {
1918
+ SubstituteNameOffset uint16
1919
+ SubstituteNameLength uint16
1920
+ PrintNameOffset uint16
1921
+ PrintNameLength uint16
1922
+ Flags uint32
1923
+ PathBuffer [1]uint16
1924
+ }
1925
+
1926
+ type mountPointReparseBuffer struct {
1927
+ SubstituteNameOffset uint16
1928
+ SubstituteNameLength uint16
1929
+ PrintNameOffset uint16
1930
+ PrintNameLength uint16
1931
+ PathBuffer [1]uint16
1932
+ }
1933
+
1934
+ type reparseDataBuffer struct {
1935
+ ReparseTag uint32
1936
+ ReparseDataLength uint16
1937
+ Reserved uint16
1938
+
1939
+ // GenericReparseBuffer
1940
+ reparseBuffer byte
1941
+ }
1942
+
1943
+ const (
1944
+ FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0
1945
+ FSCTL_DELETE_OBJECT_ID = 0x0900A0
1946
+ FSCTL_DELETE_REPARSE_POINT = 0x0900AC
1947
+ FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344
1948
+ FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8
1949
+ FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060
1950
+ FSCTL_FILE_LEVEL_TRIM = 0x098208
1951
+ FSCTL_FIND_FILES_BY_SID = 0x09008F
1952
+ FSCTL_GET_COMPRESSION = 0x09003C
1953
+ FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C
1954
+ FSCTL_GET_NTFS_VOLUME_DATA = 0x090064
1955
+ FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8
1956
+ FSCTL_GET_OBJECT_ID = 0x09009C
1957
+ FSCTL_GET_REPARSE_POINT = 0x0900A8
1958
+ FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B
1959
+ FSCTL_GET_RETRIEVAL_POINTERS = 0x090073
1960
+ FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3
1961
+ FSCTL_IS_PATHNAME_VALID = 0x09002C
1962
+ FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC
1963
+ FSCTL_MARK_HANDLE = 0x0900FC
1964
+ FSCTL_OFFLOAD_READ = 0x094264
1965
+ FSCTL_OFFLOAD_WRITE = 0x098268
1966
+ FSCTL_PIPE_PEEK = 0x11400C
1967
+ FSCTL_PIPE_TRANSCEIVE = 0x11C017
1968
+ FSCTL_PIPE_WAIT = 0x110018
1969
+ FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF
1970
+ FSCTL_QUERY_FAT_BPB = 0x090058
1971
+ FSCTL_QUERY_FILE_REGIONS = 0x090284
1972
+ FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C
1973
+ FSCTL_QUERY_SPARING_INFO = 0x090138
1974
+ FSCTL_READ_FILE_USN_DATA = 0x0900EB
1975
+ FSCTL_RECALL_FILE = 0x090117
1976
+ FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440
1977
+ FSCTL_SET_COMPRESSION = 0x09C040
1978
+ FSCTL_SET_DEFECT_MANAGEMENT = 0x098134
1979
+ FSCTL_SET_ENCRYPTION = 0x0900D7
1980
+ FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280
1981
+ FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380
1982
+ FSCTL_SET_OBJECT_ID = 0x090098
1983
+ FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC
1984
+ FSCTL_SET_REPARSE_POINT = 0x0900A4
1985
+ FSCTL_SET_SPARSE = 0x0900C4
1986
+ FSCTL_SET_ZERO_DATA = 0x0980C8
1987
+ FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194
1988
+ FSCTL_SIS_COPYFILE = 0x090100
1989
+ FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF
1990
+
1991
+ MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
1992
+ IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
1993
+ IO_REPARSE_TAG_SYMLINK = 0xA000000C
1994
+ SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
1995
+ )
1996
+
1997
+ // FILE_ZERO_DATA_INFORMATION from winioctl.h
1998
+ type FileZeroDataInformation struct {
1999
+ FileOffset int64
2000
+ BeyondFinalZero int64
2001
+ }
2002
+
2003
+ const (
2004
+ ComputerNameNetBIOS = 0
2005
+ ComputerNameDnsHostname = 1
2006
+ ComputerNameDnsDomain = 2
2007
+ ComputerNameDnsFullyQualified = 3
2008
+ ComputerNamePhysicalNetBIOS = 4
2009
+ ComputerNamePhysicalDnsHostname = 5
2010
+ ComputerNamePhysicalDnsDomain = 6
2011
+ ComputerNamePhysicalDnsFullyQualified = 7
2012
+ ComputerNameMax = 8
2013
+ )
2014
+
2015
+ // For MessageBox()
2016
+ const (
2017
+ MB_OK = 0x00000000
2018
+ MB_OKCANCEL = 0x00000001
2019
+ MB_ABORTRETRYIGNORE = 0x00000002
2020
+ MB_YESNOCANCEL = 0x00000003
2021
+ MB_YESNO = 0x00000004
2022
+ MB_RETRYCANCEL = 0x00000005
2023
+ MB_CANCELTRYCONTINUE = 0x00000006
2024
+ MB_ICONHAND = 0x00000010
2025
+ MB_ICONQUESTION = 0x00000020
2026
+ MB_ICONEXCLAMATION = 0x00000030
2027
+ MB_ICONASTERISK = 0x00000040
2028
+ MB_USERICON = 0x00000080
2029
+ MB_ICONWARNING = MB_ICONEXCLAMATION
2030
+ MB_ICONERROR = MB_ICONHAND
2031
+ MB_ICONINFORMATION = MB_ICONASTERISK
2032
+ MB_ICONSTOP = MB_ICONHAND
2033
+ MB_DEFBUTTON1 = 0x00000000
2034
+ MB_DEFBUTTON2 = 0x00000100
2035
+ MB_DEFBUTTON3 = 0x00000200
2036
+ MB_DEFBUTTON4 = 0x00000300
2037
+ MB_APPLMODAL = 0x00000000
2038
+ MB_SYSTEMMODAL = 0x00001000
2039
+ MB_TASKMODAL = 0x00002000
2040
+ MB_HELP = 0x00004000
2041
+ MB_NOFOCUS = 0x00008000
2042
+ MB_SETFOREGROUND = 0x00010000
2043
+ MB_DEFAULT_DESKTOP_ONLY = 0x00020000
2044
+ MB_TOPMOST = 0x00040000
2045
+ MB_RIGHT = 0x00080000
2046
+ MB_RTLREADING = 0x00100000
2047
+ MB_SERVICE_NOTIFICATION = 0x00200000
2048
+ )
2049
+
2050
+ const (
2051
+ MOVEFILE_REPLACE_EXISTING = 0x1
2052
+ MOVEFILE_COPY_ALLOWED = 0x2
2053
+ MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
2054
+ MOVEFILE_WRITE_THROUGH = 0x8
2055
+ MOVEFILE_CREATE_HARDLINK = 0x10
2056
+ MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
2057
+ )
2058
+
2059
+ // Flags for GetAdaptersAddresses, see
2060
+ // https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses.
2061
+ const (
2062
+ GAA_FLAG_SKIP_UNICAST = 0x1
2063
+ GAA_FLAG_SKIP_ANYCAST = 0x2
2064
+ GAA_FLAG_SKIP_MULTICAST = 0x4
2065
+ GAA_FLAG_SKIP_DNS_SERVER = 0x8
2066
+ GAA_FLAG_INCLUDE_PREFIX = 0x10
2067
+ GAA_FLAG_SKIP_FRIENDLY_NAME = 0x20
2068
+ GAA_FLAG_INCLUDE_WINS_INFO = 0x40
2069
+ GAA_FLAG_INCLUDE_GATEWAYS = 0x80
2070
+ GAA_FLAG_INCLUDE_ALL_INTERFACES = 0x100
2071
+ GAA_FLAG_INCLUDE_ALL_COMPARTMENTS = 0x200
2072
+ GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400
2073
+ )
2074
+
2075
+ const (
2076
+ IF_TYPE_OTHER = 1
2077
+ IF_TYPE_ETHERNET_CSMACD = 6
2078
+ IF_TYPE_ISO88025_TOKENRING = 9
2079
+ IF_TYPE_PPP = 23
2080
+ IF_TYPE_SOFTWARE_LOOPBACK = 24
2081
+ IF_TYPE_ATM = 37
2082
+ IF_TYPE_IEEE80211 = 71
2083
+ IF_TYPE_TUNNEL = 131
2084
+ IF_TYPE_IEEE1394 = 144
2085
+ )
2086
+
2087
+ // Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see
2088
+ // https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin
2089
+ const (
2090
+ IpPrefixOriginOther = 0
2091
+ IpPrefixOriginManual = 1
2092
+ IpPrefixOriginWellKnown = 2
2093
+ IpPrefixOriginDhcp = 3
2094
+ IpPrefixOriginRouterAdvertisement = 4
2095
+ IpPrefixOriginUnchanged = 1 << 4
2096
+ )
2097
+
2098
+ // Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see
2099
+ // https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin
2100
+ const (
2101
+ NlsoOther = 0
2102
+ NlsoManual = 1
2103
+ NlsoWellKnown = 2
2104
+ NlsoDhcp = 3
2105
+ NlsoLinkLayerAddress = 4
2106
+ NlsoRandom = 5
2107
+ IpSuffixOriginOther = 0
2108
+ IpSuffixOriginManual = 1
2109
+ IpSuffixOriginWellKnown = 2
2110
+ IpSuffixOriginDhcp = 3
2111
+ IpSuffixOriginLinkLayerAddress = 4
2112
+ IpSuffixOriginRandom = 5
2113
+ IpSuffixOriginUnchanged = 1 << 4
2114
+ )
2115
+
2116
+ // Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see
2117
+ // https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state
2118
+ const (
2119
+ NldsInvalid = 0
2120
+ NldsTentative = 1
2121
+ NldsDuplicate = 2
2122
+ NldsDeprecated = 3
2123
+ NldsPreferred = 4
2124
+ IpDadStateInvalid = 0
2125
+ IpDadStateTentative = 1
2126
+ IpDadStateDuplicate = 2
2127
+ IpDadStateDeprecated = 3
2128
+ IpDadStatePreferred = 4
2129
+ )
2130
+
2131
+ type SocketAddress struct {
2132
+ Sockaddr *syscall.RawSockaddrAny
2133
+ SockaddrLength int32
2134
+ }
2135
+
2136
+ // IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.
2137
+ func (addr *SocketAddress) IP() net.IP {
2138
+ if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {
2139
+ return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
2140
+ } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {
2141
+ return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
2142
+ }
2143
+ return nil
2144
+ }
2145
+
2146
+ type IpAdapterUnicastAddress struct {
2147
+ Length uint32
2148
+ Flags uint32
2149
+ Next *IpAdapterUnicastAddress
2150
+ Address SocketAddress
2151
+ PrefixOrigin int32
2152
+ SuffixOrigin int32
2153
+ DadState int32
2154
+ ValidLifetime uint32
2155
+ PreferredLifetime uint32
2156
+ LeaseLifetime uint32
2157
+ OnLinkPrefixLength uint8
2158
+ }
2159
+
2160
+ type IpAdapterAnycastAddress struct {
2161
+ Length uint32
2162
+ Flags uint32
2163
+ Next *IpAdapterAnycastAddress
2164
+ Address SocketAddress
2165
+ }
2166
+
2167
+ type IpAdapterMulticastAddress struct {
2168
+ Length uint32
2169
+ Flags uint32
2170
+ Next *IpAdapterMulticastAddress
2171
+ Address SocketAddress
2172
+ }
2173
+
2174
+ type IpAdapterDnsServerAdapter struct {
2175
+ Length uint32
2176
+ Reserved uint32
2177
+ Next *IpAdapterDnsServerAdapter
2178
+ Address SocketAddress
2179
+ }
2180
+
2181
+ type IpAdapterPrefix struct {
2182
+ Length uint32
2183
+ Flags uint32
2184
+ Next *IpAdapterPrefix
2185
+ Address SocketAddress
2186
+ PrefixLength uint32
2187
+ }
2188
+
2189
+ type IpAdapterAddresses struct {
2190
+ Length uint32
2191
+ IfIndex uint32
2192
+ Next *IpAdapterAddresses
2193
+ AdapterName *byte
2194
+ FirstUnicastAddress *IpAdapterUnicastAddress
2195
+ FirstAnycastAddress *IpAdapterAnycastAddress
2196
+ FirstMulticastAddress *IpAdapterMulticastAddress
2197
+ FirstDnsServerAddress *IpAdapterDnsServerAdapter
2198
+ DnsSuffix *uint16
2199
+ Description *uint16
2200
+ FriendlyName *uint16
2201
+ PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
2202
+ PhysicalAddressLength uint32
2203
+ Flags uint32
2204
+ Mtu uint32
2205
+ IfType uint32
2206
+ OperStatus uint32
2207
+ Ipv6IfIndex uint32
2208
+ ZoneIndices [16]uint32
2209
+ FirstPrefix *IpAdapterPrefix
2210
+ TransmitLinkSpeed uint64
2211
+ ReceiveLinkSpeed uint64
2212
+ FirstWinsServerAddress *IpAdapterWinsServerAddress
2213
+ FirstGatewayAddress *IpAdapterGatewayAddress
2214
+ Ipv4Metric uint32
2215
+ Ipv6Metric uint32
2216
+ Luid uint64
2217
+ Dhcpv4Server SocketAddress
2218
+ CompartmentId uint32
2219
+ NetworkGuid GUID
2220
+ ConnectionType uint32
2221
+ TunnelType uint32
2222
+ Dhcpv6Server SocketAddress
2223
+ Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte
2224
+ Dhcpv6ClientDuidLength uint32
2225
+ Dhcpv6Iaid uint32
2226
+ FirstDnsSuffix *IpAdapterDNSSuffix
2227
+ }
2228
+
2229
+ type IpAdapterWinsServerAddress struct {
2230
+ Length uint32
2231
+ Reserved uint32
2232
+ Next *IpAdapterWinsServerAddress
2233
+ Address SocketAddress
2234
+ }
2235
+
2236
+ type IpAdapterGatewayAddress struct {
2237
+ Length uint32
2238
+ Reserved uint32
2239
+ Next *IpAdapterGatewayAddress
2240
+ Address SocketAddress
2241
+ }
2242
+
2243
+ type IpAdapterDNSSuffix struct {
2244
+ Next *IpAdapterDNSSuffix
2245
+ String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16
2246
+ }
2247
+
2248
+ const (
2249
+ IfOperStatusUp = 1
2250
+ IfOperStatusDown = 2
2251
+ IfOperStatusTesting = 3
2252
+ IfOperStatusUnknown = 4
2253
+ IfOperStatusDormant = 5
2254
+ IfOperStatusNotPresent = 6
2255
+ IfOperStatusLowerLayerDown = 7
2256
+ )
2257
+
2258
+ const (
2259
+ IF_MAX_PHYS_ADDRESS_LENGTH = 32
2260
+ IF_MAX_STRING_SIZE = 256
2261
+ )
2262
+
2263
+ // MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or
2264
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.
2265
+ const (
2266
+ MibIfEntryNormal = 0
2267
+ MibIfEntryNormalWithoutStatistics = 2
2268
+ )
2269
+
2270
+ // MIB_NOTIFICATION_TYPE enumeration from netioapi.h or
2271
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.
2272
+ const (
2273
+ MibParameterNotification = 0
2274
+ MibAddInstance = 1
2275
+ MibDeleteInstance = 2
2276
+ MibInitialNotification = 3
2277
+ )
2278
+
2279
+ // MibIfRow2 stores information about a particular interface. See
2280
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.
2281
+ type MibIfRow2 struct {
2282
+ InterfaceLuid uint64
2283
+ InterfaceIndex uint32
2284
+ InterfaceGuid GUID
2285
+ Alias [IF_MAX_STRING_SIZE + 1]uint16
2286
+ Description [IF_MAX_STRING_SIZE + 1]uint16
2287
+ PhysicalAddressLength uint32
2288
+ PhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
2289
+ PermanentPhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
2290
+ Mtu uint32
2291
+ Type uint32
2292
+ TunnelType uint32
2293
+ MediaType uint32
2294
+ PhysicalMediumType uint32
2295
+ AccessType uint32
2296
+ DirectionType uint32
2297
+ InterfaceAndOperStatusFlags uint8
2298
+ OperStatus uint32
2299
+ AdminStatus uint32
2300
+ MediaConnectState uint32
2301
+ NetworkGuid GUID
2302
+ ConnectionType uint32
2303
+ TransmitLinkSpeed uint64
2304
+ ReceiveLinkSpeed uint64
2305
+ InOctets uint64
2306
+ InUcastPkts uint64
2307
+ InNUcastPkts uint64
2308
+ InDiscards uint64
2309
+ InErrors uint64
2310
+ InUnknownProtos uint64
2311
+ InUcastOctets uint64
2312
+ InMulticastOctets uint64
2313
+ InBroadcastOctets uint64
2314
+ OutOctets uint64
2315
+ OutUcastPkts uint64
2316
+ OutNUcastPkts uint64
2317
+ OutDiscards uint64
2318
+ OutErrors uint64
2319
+ OutUcastOctets uint64
2320
+ OutMulticastOctets uint64
2321
+ OutBroadcastOctets uint64
2322
+ OutQLen uint64
2323
+ }
2324
+
2325
+ // MIB_IF_TABLE_LEVEL enumeration from netioapi.h or
2326
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_if_table_level.
2327
+ const (
2328
+ MibIfTableNormal = 0
2329
+ MibIfTableRaw = 1
2330
+ MibIfTableNormalWithoutStatistics = 2
2331
+ )
2332
+
2333
+ // MibIfTable2 contains a table of logical and physical interface entries. See
2334
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_table2.
2335
+ type MibIfTable2 struct {
2336
+ NumEntries uint32
2337
+ Table [1]MibIfRow2
2338
+ }
2339
+
2340
+ // IP_ADDRESS_PREFIX stores an IP address prefix. See
2341
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-ip_address_prefix.
2342
+ type IpAddressPrefix struct {
2343
+ Prefix RawSockaddrInet
2344
+ PrefixLength uint8
2345
+ }
2346
+
2347
+ // NL_ROUTE_ORIGIN enumeration from nldef.h or
2348
+ // https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_origin.
2349
+ const (
2350
+ NlroManual = 0
2351
+ NlroWellKnown = 1
2352
+ NlroDHCP = 2
2353
+ NlroRouterAdvertisement = 3
2354
+ Nlro6to4 = 4
2355
+ )
2356
+
2357
+ // NL_ROUTE_ORIGIN enumeration from nldef.h or
2358
+ // https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_protocol.
2359
+ const (
2360
+ MIB_IPPROTO_OTHER = 1
2361
+ MIB_IPPROTO_LOCAL = 2
2362
+ MIB_IPPROTO_NETMGMT = 3
2363
+ MIB_IPPROTO_ICMP = 4
2364
+ MIB_IPPROTO_EGP = 5
2365
+ MIB_IPPROTO_GGP = 6
2366
+ MIB_IPPROTO_HELLO = 7
2367
+ MIB_IPPROTO_RIP = 8
2368
+ MIB_IPPROTO_IS_IS = 9
2369
+ MIB_IPPROTO_ES_IS = 10
2370
+ MIB_IPPROTO_CISCO = 11
2371
+ MIB_IPPROTO_BBN = 12
2372
+ MIB_IPPROTO_OSPF = 13
2373
+ MIB_IPPROTO_BGP = 14
2374
+ MIB_IPPROTO_IDPR = 15
2375
+ MIB_IPPROTO_EIGRP = 16
2376
+ MIB_IPPROTO_DVMRP = 17
2377
+ MIB_IPPROTO_RPL = 18
2378
+ MIB_IPPROTO_DHCP = 19
2379
+ MIB_IPPROTO_NT_AUTOSTATIC = 10002
2380
+ MIB_IPPROTO_NT_STATIC = 10006
2381
+ MIB_IPPROTO_NT_STATIC_NON_DOD = 10007
2382
+ )
2383
+
2384
+ // MIB_IPFORWARD_ROW2 stores information about an IP route entry. See
2385
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_row2.
2386
+ type MibIpForwardRow2 struct {
2387
+ InterfaceLuid uint64
2388
+ InterfaceIndex uint32
2389
+ DestinationPrefix IpAddressPrefix
2390
+ NextHop RawSockaddrInet
2391
+ SitePrefixLength uint8
2392
+ ValidLifetime uint32
2393
+ PreferredLifetime uint32
2394
+ Metric uint32
2395
+ Protocol uint32
2396
+ Loopback uint8
2397
+ AutoconfigureAddress uint8
2398
+ Publish uint8
2399
+ Immortal uint8
2400
+ Age uint32
2401
+ Origin uint32
2402
+ }
2403
+
2404
+ // MIB_IPFORWARD_TABLE2 contains a table of IP route entries. See
2405
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_table2.
2406
+ type MibIpForwardTable2 struct {
2407
+ NumEntries uint32
2408
+ Table [1]MibIpForwardRow2
2409
+ }
2410
+
2411
+ // Rows returns the IP route entries in the table.
2412
+ func (t *MibIpForwardTable2) Rows() []MibIpForwardRow2 {
2413
+ return unsafe.Slice(&t.Table[0], t.NumEntries)
2414
+ }
2415
+
2416
+ // MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See
2417
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.
2418
+ type MibUnicastIpAddressRow struct {
2419
+ Address RawSockaddrInet6 // SOCKADDR_INET union
2420
+ InterfaceLuid uint64
2421
+ InterfaceIndex uint32
2422
+ PrefixOrigin uint32
2423
+ SuffixOrigin uint32
2424
+ ValidLifetime uint32
2425
+ PreferredLifetime uint32
2426
+ OnLinkPrefixLength uint8
2427
+ SkipAsSource uint8
2428
+ DadState uint32
2429
+ ScopeId uint32
2430
+ CreationTimeStamp Filetime
2431
+ }
2432
+
2433
+ // MibUnicastIpAddressTable contains a table of unicast IP address entries. See
2434
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_table.
2435
+ type MibUnicastIpAddressTable struct {
2436
+ NumEntries uint32
2437
+ Table [1]MibUnicastIpAddressRow
2438
+ }
2439
+
2440
+ const ScopeLevelCount = 16
2441
+
2442
+ // MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.
2443
+ // See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.
2444
+ type MibIpInterfaceRow struct {
2445
+ Family uint16
2446
+ InterfaceLuid uint64
2447
+ InterfaceIndex uint32
2448
+ MaxReassemblySize uint32
2449
+ InterfaceIdentifier uint64
2450
+ MinRouterAdvertisementInterval uint32
2451
+ MaxRouterAdvertisementInterval uint32
2452
+ AdvertisingEnabled uint8
2453
+ ForwardingEnabled uint8
2454
+ WeakHostSend uint8
2455
+ WeakHostReceive uint8
2456
+ UseAutomaticMetric uint8
2457
+ UseNeighborUnreachabilityDetection uint8
2458
+ ManagedAddressConfigurationSupported uint8
2459
+ OtherStatefulConfigurationSupported uint8
2460
+ AdvertiseDefaultRoute uint8
2461
+ RouterDiscoveryBehavior uint32
2462
+ DadTransmits uint32
2463
+ BaseReachableTime uint32
2464
+ RetransmitTime uint32
2465
+ PathMtuDiscoveryTimeout uint32
2466
+ LinkLocalAddressBehavior uint32
2467
+ LinkLocalAddressTimeout uint32
2468
+ ZoneIndices [ScopeLevelCount]uint32
2469
+ SitePrefixLength uint32
2470
+ Metric uint32
2471
+ NlMtu uint32
2472
+ Connected uint8
2473
+ SupportsWakeUpPatterns uint8
2474
+ SupportsNeighborDiscovery uint8
2475
+ SupportsRouterDiscovery uint8
2476
+ ReachableTime uint32
2477
+ TransmitOffload uint32
2478
+ ReceiveOffload uint32
2479
+ DisableDefaultRoutes uint8
2480
+ }
2481
+
2482
+ // MibIpInterfaceTable contains a table of IP interface entries. See
2483
+ // https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_table.
2484
+ type MibIpInterfaceTable struct {
2485
+ NumEntries uint32
2486
+ Table [1]MibIpInterfaceRow
2487
+ }
2488
+
2489
+ // Console related constants used for the mode parameter to SetConsoleMode. See
2490
+ // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
2491
+
2492
+ const (
2493
+ ENABLE_PROCESSED_INPUT = 0x1
2494
+ ENABLE_LINE_INPUT = 0x2
2495
+ ENABLE_ECHO_INPUT = 0x4
2496
+ ENABLE_WINDOW_INPUT = 0x8
2497
+ ENABLE_MOUSE_INPUT = 0x10
2498
+ ENABLE_INSERT_MODE = 0x20
2499
+ ENABLE_QUICK_EDIT_MODE = 0x40
2500
+ ENABLE_EXTENDED_FLAGS = 0x80
2501
+ ENABLE_AUTO_POSITION = 0x100
2502
+ ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200
2503
+
2504
+ ENABLE_PROCESSED_OUTPUT = 0x1
2505
+ ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
2506
+ ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
2507
+ DISABLE_NEWLINE_AUTO_RETURN = 0x8
2508
+ ENABLE_LVB_GRID_WORLDWIDE = 0x10
2509
+ )
2510
+
2511
+ // Pseudo console related constants used for the flags parameter to
2512
+ // CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole
2513
+ const (
2514
+ PSEUDOCONSOLE_INHERIT_CURSOR = 0x1
2515
+ )
2516
+
2517
+ type Coord struct {
2518
+ X int16
2519
+ Y int16
2520
+ }
2521
+
2522
+ type SmallRect struct {
2523
+ Left int16
2524
+ Top int16
2525
+ Right int16
2526
+ Bottom int16
2527
+ }
2528
+
2529
+ // Used with GetConsoleScreenBuffer to retrieve information about a console
2530
+ // screen buffer. See
2531
+ // https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str
2532
+ // for details.
2533
+
2534
+ type ConsoleScreenBufferInfo struct {
2535
+ Size Coord
2536
+ CursorPosition Coord
2537
+ Attributes uint16
2538
+ Window SmallRect
2539
+ MaximumWindowSize Coord
2540
+ }
2541
+
2542
+ const UNIX_PATH_MAX = 108 // defined in afunix.h
2543
+
2544
+ const (
2545
+ // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags
2546
+ JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
2547
+ JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
2548
+ JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
2549
+ JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
2550
+ JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
2551
+ JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
2552
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
2553
+ JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
2554
+ JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
2555
+ JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
2556
+ JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
2557
+ JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
2558
+ JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
2559
+ JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000
2560
+ JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
2561
+ )
2562
+
2563
+ type IO_COUNTERS struct {
2564
+ ReadOperationCount uint64
2565
+ WriteOperationCount uint64
2566
+ OtherOperationCount uint64
2567
+ ReadTransferCount uint64
2568
+ WriteTransferCount uint64
2569
+ OtherTransferCount uint64
2570
+ }
2571
+
2572
+ type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {
2573
+ BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION
2574
+ IoInfo IO_COUNTERS
2575
+ ProcessMemoryLimit uintptr
2576
+ JobMemoryLimit uintptr
2577
+ PeakProcessMemoryUsed uintptr
2578
+ PeakJobMemoryUsed uintptr
2579
+ }
2580
+
2581
+ const (
2582
+ // UIRestrictionsClass
2583
+ JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040
2584
+ JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010
2585
+ JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080
2586
+ JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020
2587
+ JOB_OBJECT_UILIMIT_HANDLES = 0x00000001
2588
+ JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002
2589
+ JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008
2590
+ JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004
2591
+ )
2592
+
2593
+ type JOBOBJECT_BASIC_UI_RESTRICTIONS struct {
2594
+ UIRestrictionsClass uint32
2595
+ }
2596
+
2597
+ const (
2598
+ // JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject
2599
+ JobObjectAssociateCompletionPortInformation = 7
2600
+ JobObjectBasicAccountingInformation = 1
2601
+ JobObjectBasicAndIoAccountingInformation = 8
2602
+ JobObjectBasicLimitInformation = 2
2603
+ JobObjectBasicProcessIdList = 3
2604
+ JobObjectBasicUIRestrictions = 4
2605
+ JobObjectCpuRateControlInformation = 15
2606
+ JobObjectEndOfJobTimeInformation = 6
2607
+ JobObjectExtendedLimitInformation = 9
2608
+ JobObjectGroupInformation = 11
2609
+ JobObjectGroupInformationEx = 14
2610
+ JobObjectLimitViolationInformation = 13
2611
+ JobObjectLimitViolationInformation2 = 34
2612
+ JobObjectNetRateControlInformation = 32
2613
+ JobObjectNotificationLimitInformation = 12
2614
+ JobObjectNotificationLimitInformation2 = 33
2615
+ JobObjectSecurityLimitInformation = 5
2616
+ )
2617
+
2618
+ const (
2619
+ KF_FLAG_DEFAULT = 0x00000000
2620
+ KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000
2621
+ KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000
2622
+ KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000
2623
+ KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000
2624
+ KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000
2625
+ KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000
2626
+ KF_FLAG_CREATE = 0x00008000
2627
+ KF_FLAG_DONT_VERIFY = 0x00004000
2628
+ KF_FLAG_DONT_UNEXPAND = 0x00002000
2629
+ KF_FLAG_NO_ALIAS = 0x00001000
2630
+ KF_FLAG_INIT = 0x00000800
2631
+ KF_FLAG_DEFAULT_PATH = 0x00000400
2632
+ KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200
2633
+ KF_FLAG_SIMPLE_IDLIST = 0x00000100
2634
+ KF_FLAG_ALIAS_ONLY = 0x80000000
2635
+ )
2636
+
2637
+ type OsVersionInfoEx struct {
2638
+ osVersionInfoSize uint32
2639
+ MajorVersion uint32
2640
+ MinorVersion uint32
2641
+ BuildNumber uint32
2642
+ PlatformId uint32
2643
+ CsdVersion [128]uint16
2644
+ ServicePackMajor uint16
2645
+ ServicePackMinor uint16
2646
+ SuiteMask uint16
2647
+ ProductType byte
2648
+ _ byte
2649
+ }
2650
+
2651
+ const (
2652
+ EWX_LOGOFF = 0x00000000
2653
+ EWX_SHUTDOWN = 0x00000001
2654
+ EWX_REBOOT = 0x00000002
2655
+ EWX_FORCE = 0x00000004
2656
+ EWX_POWEROFF = 0x00000008
2657
+ EWX_FORCEIFHUNG = 0x00000010
2658
+ EWX_QUICKRESOLVE = 0x00000020
2659
+ EWX_RESTARTAPPS = 0x00000040
2660
+ EWX_HYBRID_SHUTDOWN = 0x00400000
2661
+ EWX_BOOTOPTIONS = 0x01000000
2662
+
2663
+ SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000
2664
+ SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000
2665
+ SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000
2666
+ SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000
2667
+ SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000
2668
+ SHTDN_REASON_FLAG_PLANNED = 0x80000000
2669
+ SHTDN_REASON_MAJOR_OTHER = 0x00000000
2670
+ SHTDN_REASON_MAJOR_NONE = 0x00000000
2671
+ SHTDN_REASON_MAJOR_HARDWARE = 0x00010000
2672
+ SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000
2673
+ SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000
2674
+ SHTDN_REASON_MAJOR_APPLICATION = 0x00040000
2675
+ SHTDN_REASON_MAJOR_SYSTEM = 0x00050000
2676
+ SHTDN_REASON_MAJOR_POWER = 0x00060000
2677
+ SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000
2678
+ SHTDN_REASON_MINOR_OTHER = 0x00000000
2679
+ SHTDN_REASON_MINOR_NONE = 0x000000ff
2680
+ SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001
2681
+ SHTDN_REASON_MINOR_INSTALLATION = 0x00000002
2682
+ SHTDN_REASON_MINOR_UPGRADE = 0x00000003
2683
+ SHTDN_REASON_MINOR_RECONFIG = 0x00000004
2684
+ SHTDN_REASON_MINOR_HUNG = 0x00000005
2685
+ SHTDN_REASON_MINOR_UNSTABLE = 0x00000006
2686
+ SHTDN_REASON_MINOR_DISK = 0x00000007
2687
+ SHTDN_REASON_MINOR_PROCESSOR = 0x00000008
2688
+ SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009
2689
+ SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a
2690
+ SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b
2691
+ SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c
2692
+ SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d
2693
+ SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e
2694
+ SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F
2695
+ SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010
2696
+ SHTDN_REASON_MINOR_HOTFIX = 0x00000011
2697
+ SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012
2698
+ SHTDN_REASON_MINOR_SECURITY = 0x00000013
2699
+ SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014
2700
+ SHTDN_REASON_MINOR_WMI = 0x00000015
2701
+ SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016
2702
+ SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017
2703
+ SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018
2704
+ SHTDN_REASON_MINOR_MMC = 0x00000019
2705
+ SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a
2706
+ SHTDN_REASON_MINOR_TERMSRV = 0x00000020
2707
+ SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021
2708
+ SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022
2709
+ SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE
2710
+ SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED
2711
+ SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff
2712
+
2713
+ SHUTDOWN_NORETRY = 0x1
2714
+ )
2715
+
2716
+ // Flags used for GetModuleHandleEx
2717
+ const (
2718
+ GET_MODULE_HANDLE_EX_FLAG_PIN = 1
2719
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
2720
+ GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
2721
+ )
2722
+
2723
+ // MUI function flag values
2724
+ const (
2725
+ MUI_LANGUAGE_ID = 0x4
2726
+ MUI_LANGUAGE_NAME = 0x8
2727
+ MUI_MERGE_SYSTEM_FALLBACK = 0x10
2728
+ MUI_MERGE_USER_FALLBACK = 0x20
2729
+ MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
2730
+ MUI_THREAD_LANGUAGES = 0x40
2731
+ MUI_CONSOLE_FILTER = 0x100
2732
+ MUI_COMPLEX_SCRIPT_FILTER = 0x200
2733
+ MUI_RESET_FILTERS = 0x001
2734
+ MUI_USER_PREFERRED_UI_LANGUAGES = 0x10
2735
+ MUI_USE_INSTALLED_LANGUAGES = 0x20
2736
+ MUI_USE_SEARCH_ALL_LANGUAGES = 0x40
2737
+ MUI_LANG_NEUTRAL_PE_FILE = 0x100
2738
+ MUI_NON_LANG_NEUTRAL_FILE = 0x200
2739
+ MUI_MACHINE_LANGUAGE_SETTINGS = 0x400
2740
+ MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001
2741
+ MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002
2742
+ MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004
2743
+ MUI_QUERY_TYPE = 0x001
2744
+ MUI_QUERY_CHECKSUM = 0x002
2745
+ MUI_QUERY_LANGUAGE_NAME = 0x004
2746
+ MUI_QUERY_RESOURCE_TYPES = 0x008
2747
+ MUI_FILEINFO_VERSION = 0x001
2748
+
2749
+ MUI_FULL_LANGUAGE = 0x01
2750
+ MUI_PARTIAL_LANGUAGE = 0x02
2751
+ MUI_LIP_LANGUAGE = 0x04
2752
+ MUI_LANGUAGE_INSTALLED = 0x20
2753
+ MUI_LANGUAGE_LICENSED = 0x40
2754
+ )
2755
+
2756
+ // FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx
2757
+ const (
2758
+ FileBasicInfo = 0
2759
+ FileStandardInfo = 1
2760
+ FileNameInfo = 2
2761
+ FileRenameInfo = 3
2762
+ FileDispositionInfo = 4
2763
+ FileAllocationInfo = 5
2764
+ FileEndOfFileInfo = 6
2765
+ FileStreamInfo = 7
2766
+ FileCompressionInfo = 8
2767
+ FileAttributeTagInfo = 9
2768
+ FileIdBothDirectoryInfo = 10
2769
+ FileIdBothDirectoryRestartInfo = 11
2770
+ FileIoPriorityHintInfo = 12
2771
+ FileRemoteProtocolInfo = 13
2772
+ FileFullDirectoryInfo = 14
2773
+ FileFullDirectoryRestartInfo = 15
2774
+ FileStorageInfo = 16
2775
+ FileAlignmentInfo = 17
2776
+ FileIdInfo = 18
2777
+ FileIdExtdDirectoryInfo = 19
2778
+ FileIdExtdDirectoryRestartInfo = 20
2779
+ FileDispositionInfoEx = 21
2780
+ FileRenameInfoEx = 22
2781
+ FileCaseSensitiveInfo = 23
2782
+ FileNormalizedNameInfo = 24
2783
+ )
2784
+
2785
+ // LoadLibrary flags for determining from where to search for a DLL
2786
+ const (
2787
+ DONT_RESOLVE_DLL_REFERENCES = 0x1
2788
+ LOAD_LIBRARY_AS_DATAFILE = 0x2
2789
+ LOAD_WITH_ALTERED_SEARCH_PATH = 0x8
2790
+ LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10
2791
+ LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20
2792
+ LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40
2793
+ LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80
2794
+ LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100
2795
+ LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200
2796
+ LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400
2797
+ LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800
2798
+ LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000
2799
+ LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000
2800
+ LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000
2801
+ LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000
2802
+ )
2803
+
2804
+ // RegNotifyChangeKeyValue notifyFilter flags.
2805
+ const (
2806
+ // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted.
2807
+ REG_NOTIFY_CHANGE_NAME = 0x00000001
2808
+
2809
+ // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information.
2810
+ REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002
2811
+
2812
+ // REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value.
2813
+ REG_NOTIFY_CHANGE_LAST_SET = 0x00000004
2814
+
2815
+ // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key.
2816
+ REG_NOTIFY_CHANGE_SECURITY = 0x00000008
2817
+
2818
+ // REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later.
2819
+ REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000
2820
+ )
2821
+
2822
+ type CommTimeouts struct {
2823
+ ReadIntervalTimeout uint32
2824
+ ReadTotalTimeoutMultiplier uint32
2825
+ ReadTotalTimeoutConstant uint32
2826
+ WriteTotalTimeoutMultiplier uint32
2827
+ WriteTotalTimeoutConstant uint32
2828
+ }
2829
+
2830
+ // NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.
2831
+ type NTUnicodeString struct {
2832
+ // Note: Length and MaximumLength are in *bytes*, not uint16s.
2833
+ // They should always be even.
2834
+ Length uint16
2835
+ MaximumLength uint16
2836
+ Buffer *uint16
2837
+ }
2838
+
2839
+ // NTString is an ANSI string for NT native APIs, corresponding to STRING.
2840
+ type NTString struct {
2841
+ Length uint16
2842
+ MaximumLength uint16
2843
+ Buffer *byte
2844
+ }
2845
+
2846
+ type LIST_ENTRY struct {
2847
+ Flink *LIST_ENTRY
2848
+ Blink *LIST_ENTRY
2849
+ }
2850
+
2851
+ type RUNTIME_FUNCTION struct {
2852
+ BeginAddress uint32
2853
+ EndAddress uint32
2854
+ UnwindData uint32
2855
+ }
2856
+
2857
+ type LDR_DATA_TABLE_ENTRY struct {
2858
+ reserved1 [2]uintptr
2859
+ InMemoryOrderLinks LIST_ENTRY
2860
+ reserved2 [2]uintptr
2861
+ DllBase uintptr
2862
+ reserved3 [2]uintptr
2863
+ FullDllName NTUnicodeString
2864
+ reserved4 [8]byte
2865
+ reserved5 [3]uintptr
2866
+ reserved6 uintptr
2867
+ TimeDateStamp uint32
2868
+ }
2869
+
2870
+ type PEB_LDR_DATA struct {
2871
+ reserved1 [8]byte
2872
+ reserved2 [3]uintptr
2873
+ InMemoryOrderModuleList LIST_ENTRY
2874
+ }
2875
+
2876
+ type CURDIR struct {
2877
+ DosPath NTUnicodeString
2878
+ Handle Handle
2879
+ }
2880
+
2881
+ type RTL_DRIVE_LETTER_CURDIR struct {
2882
+ Flags uint16
2883
+ Length uint16
2884
+ TimeStamp uint32
2885
+ DosPath NTString
2886
+ }
2887
+
2888
+ type RTL_USER_PROCESS_PARAMETERS struct {
2889
+ MaximumLength, Length uint32
2890
+
2891
+ Flags, DebugFlags uint32
2892
+
2893
+ ConsoleHandle Handle
2894
+ ConsoleFlags uint32
2895
+ StandardInput, StandardOutput, StandardError Handle
2896
+
2897
+ CurrentDirectory CURDIR
2898
+ DllPath NTUnicodeString
2899
+ ImagePathName NTUnicodeString
2900
+ CommandLine NTUnicodeString
2901
+ Environment unsafe.Pointer
2902
+
2903
+ StartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32
2904
+
2905
+ WindowFlags, ShowWindowFlags uint32
2906
+ WindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString
2907
+ CurrentDirectories [32]RTL_DRIVE_LETTER_CURDIR
2908
+
2909
+ EnvironmentSize, EnvironmentVersion uintptr
2910
+
2911
+ PackageDependencyData unsafe.Pointer
2912
+ ProcessGroupId uint32
2913
+ LoaderThreads uint32
2914
+
2915
+ RedirectionDllName NTUnicodeString
2916
+ HeapPartitionName NTUnicodeString
2917
+ DefaultThreadpoolCpuSetMasks uintptr
2918
+ DefaultThreadpoolCpuSetMaskCount uint32
2919
+ }
2920
+
2921
+ type PEB struct {
2922
+ reserved1 [2]byte
2923
+ BeingDebugged byte
2924
+ BitField byte
2925
+ reserved3 uintptr
2926
+ ImageBaseAddress uintptr
2927
+ Ldr *PEB_LDR_DATA
2928
+ ProcessParameters *RTL_USER_PROCESS_PARAMETERS
2929
+ reserved4 [3]uintptr
2930
+ AtlThunkSListPtr uintptr
2931
+ reserved5 uintptr
2932
+ reserved6 uint32
2933
+ reserved7 uintptr
2934
+ reserved8 uint32
2935
+ AtlThunkSListPtr32 uint32
2936
+ reserved9 [45]uintptr
2937
+ reserved10 [96]byte
2938
+ PostProcessInitRoutine uintptr
2939
+ reserved11 [128]byte
2940
+ reserved12 [1]uintptr
2941
+ SessionId uint32
2942
+ }
2943
+
2944
+ type OBJECT_ATTRIBUTES struct {
2945
+ Length uint32
2946
+ RootDirectory Handle
2947
+ ObjectName *NTUnicodeString
2948
+ Attributes uint32
2949
+ SecurityDescriptor *SECURITY_DESCRIPTOR
2950
+ SecurityQoS *SECURITY_QUALITY_OF_SERVICE
2951
+ }
2952
+
2953
+ // Values for the Attributes member of OBJECT_ATTRIBUTES.
2954
+ const (
2955
+ OBJ_INHERIT = 0x00000002
2956
+ OBJ_PERMANENT = 0x00000010
2957
+ OBJ_EXCLUSIVE = 0x00000020
2958
+ OBJ_CASE_INSENSITIVE = 0x00000040
2959
+ OBJ_OPENIF = 0x00000080
2960
+ OBJ_OPENLINK = 0x00000100
2961
+ OBJ_KERNEL_HANDLE = 0x00000200
2962
+ OBJ_FORCE_ACCESS_CHECK = 0x00000400
2963
+ OBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800
2964
+ OBJ_DONT_REPARSE = 0x00001000
2965
+ OBJ_VALID_ATTRIBUTES = 0x00001FF2
2966
+ )
2967
+
2968
+ type IO_STATUS_BLOCK struct {
2969
+ Status NTStatus
2970
+ Information uintptr
2971
+ }
2972
+
2973
+ type RTLP_CURDIR_REF struct {
2974
+ RefCount int32
2975
+ Handle Handle
2976
+ }
2977
+
2978
+ type RTL_RELATIVE_NAME struct {
2979
+ RelativeName NTUnicodeString
2980
+ ContainingDirectory Handle
2981
+ CurDirRef *RTLP_CURDIR_REF
2982
+ }
2983
+
2984
+ const (
2985
+ // CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile.
2986
+ FILE_SUPERSEDE = 0x00000000
2987
+ FILE_OPEN = 0x00000001
2988
+ FILE_CREATE = 0x00000002
2989
+ FILE_OPEN_IF = 0x00000003
2990
+ FILE_OVERWRITE = 0x00000004
2991
+ FILE_OVERWRITE_IF = 0x00000005
2992
+ FILE_MAXIMUM_DISPOSITION = 0x00000005
2993
+
2994
+ // CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile.
2995
+ FILE_DIRECTORY_FILE = 0x00000001
2996
+ FILE_WRITE_THROUGH = 0x00000002
2997
+ FILE_SEQUENTIAL_ONLY = 0x00000004
2998
+ FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008
2999
+ FILE_SYNCHRONOUS_IO_ALERT = 0x00000010
3000
+ FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020
3001
+ FILE_NON_DIRECTORY_FILE = 0x00000040
3002
+ FILE_CREATE_TREE_CONNECTION = 0x00000080
3003
+ FILE_COMPLETE_IF_OPLOCKED = 0x00000100
3004
+ FILE_NO_EA_KNOWLEDGE = 0x00000200
3005
+ FILE_OPEN_REMOTE_INSTANCE = 0x00000400
3006
+ FILE_RANDOM_ACCESS = 0x00000800
3007
+ FILE_DELETE_ON_CLOSE = 0x00001000
3008
+ FILE_OPEN_BY_FILE_ID = 0x00002000
3009
+ FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000
3010
+ FILE_NO_COMPRESSION = 0x00008000
3011
+ FILE_OPEN_REQUIRING_OPLOCK = 0x00010000
3012
+ FILE_DISALLOW_EXCLUSIVE = 0x00020000
3013
+ FILE_RESERVE_OPFILTER = 0x00100000
3014
+ FILE_OPEN_REPARSE_POINT = 0x00200000
3015
+ FILE_OPEN_NO_RECALL = 0x00400000
3016
+ FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000
3017
+
3018
+ // Parameter constants for NtCreateNamedPipeFile.
3019
+
3020
+ FILE_PIPE_BYTE_STREAM_TYPE = 0x00000000
3021
+ FILE_PIPE_MESSAGE_TYPE = 0x00000001
3022
+
3023
+ FILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000
3024
+ FILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002
3025
+
3026
+ FILE_PIPE_TYPE_VALID_MASK = 0x00000003
3027
+
3028
+ FILE_PIPE_BYTE_STREAM_MODE = 0x00000000
3029
+ FILE_PIPE_MESSAGE_MODE = 0x00000001
3030
+
3031
+ FILE_PIPE_QUEUE_OPERATION = 0x00000000
3032
+ FILE_PIPE_COMPLETE_OPERATION = 0x00000001
3033
+
3034
+ FILE_PIPE_INBOUND = 0x00000000
3035
+ FILE_PIPE_OUTBOUND = 0x00000001
3036
+ FILE_PIPE_FULL_DUPLEX = 0x00000002
3037
+
3038
+ FILE_PIPE_DISCONNECTED_STATE = 0x00000001
3039
+ FILE_PIPE_LISTENING_STATE = 0x00000002
3040
+ FILE_PIPE_CONNECTED_STATE = 0x00000003
3041
+ FILE_PIPE_CLOSING_STATE = 0x00000004
3042
+
3043
+ FILE_PIPE_CLIENT_END = 0x00000000
3044
+ FILE_PIPE_SERVER_END = 0x00000001
3045
+ )
3046
+
3047
+ const (
3048
+ // FileInformationClass for NtSetInformationFile/NtQueryInformationFile, see
3049
+ // https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_file_information_class
3050
+ FileBasicInformation = 4
3051
+ FileEaInformation = 7
3052
+ FileRenameInformation = 10
3053
+ FileDispositionInformation = 13
3054
+ FilePositionInformation = 14
3055
+ FileEndOfFileInformation = 20
3056
+ FileValidDataLengthInformation = 39
3057
+ FileShortNameInformation = 40
3058
+ FileIoPriorityHintInformation = 43
3059
+ FileReplaceCompletionInformation = 61
3060
+ FileDispositionInformationEx = 64
3061
+ FileCaseSensitiveInformation = 71
3062
+ FileLinkInformation = 72
3063
+ FileCaseSensitiveInformationForceAccessCheck = 75
3064
+ FileKnownFolderInformation = 76
3065
+
3066
+ // Flags for FILE_RENAME_INFORMATION
3067
+ FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001
3068
+ FILE_RENAME_POSIX_SEMANTICS = 0x00000002
3069
+ FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004
3070
+ FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008
3071
+ FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010
3072
+ FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020
3073
+ FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030
3074
+ FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040
3075
+ FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080
3076
+ FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100
3077
+ FILE_RENAME_FORCE_RESIZE_SR = 0x00000180
3078
+
3079
+ // Flags for FILE_DISPOSITION_INFORMATION_EX
3080
+ FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000
3081
+ FILE_DISPOSITION_DELETE = 0x00000001
3082
+ FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002
3083
+ FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004
3084
+ FILE_DISPOSITION_ON_CLOSE = 0x00000008
3085
+ FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010
3086
+
3087
+ // Flags for FILE_CASE_SENSITIVE_INFORMATION
3088
+ FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001
3089
+
3090
+ // Flags for FILE_LINK_INFORMATION
3091
+ FILE_LINK_REPLACE_IF_EXISTS = 0x00000001
3092
+ FILE_LINK_POSIX_SEMANTICS = 0x00000002
3093
+ FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008
3094
+ FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010
3095
+ FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020
3096
+ FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030
3097
+ FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040
3098
+ FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080
3099
+ FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100
3100
+ FILE_LINK_FORCE_RESIZE_SR = 0x00000180
3101
+ )
3102
+
3103
+ // ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.
3104
+ const (
3105
+ ProcessBasicInformation = iota
3106
+ ProcessQuotaLimits
3107
+ ProcessIoCounters
3108
+ ProcessVmCounters
3109
+ ProcessTimes
3110
+ ProcessBasePriority
3111
+ ProcessRaisePriority
3112
+ ProcessDebugPort
3113
+ ProcessExceptionPort
3114
+ ProcessAccessToken
3115
+ ProcessLdtInformation
3116
+ ProcessLdtSize
3117
+ ProcessDefaultHardErrorMode
3118
+ ProcessIoPortHandlers
3119
+ ProcessPooledUsageAndLimits
3120
+ ProcessWorkingSetWatch
3121
+ ProcessUserModeIOPL
3122
+ ProcessEnableAlignmentFaultFixup
3123
+ ProcessPriorityClass
3124
+ ProcessWx86Information
3125
+ ProcessHandleCount
3126
+ ProcessAffinityMask
3127
+ ProcessPriorityBoost
3128
+ ProcessDeviceMap
3129
+ ProcessSessionInformation
3130
+ ProcessForegroundInformation
3131
+ ProcessWow64Information
3132
+ ProcessImageFileName
3133
+ ProcessLUIDDeviceMapsEnabled
3134
+ ProcessBreakOnTermination
3135
+ ProcessDebugObjectHandle
3136
+ ProcessDebugFlags
3137
+ ProcessHandleTracing
3138
+ ProcessIoPriority
3139
+ ProcessExecuteFlags
3140
+ ProcessTlsInformation
3141
+ ProcessCookie
3142
+ ProcessImageInformation
3143
+ ProcessCycleTime
3144
+ ProcessPagePriority
3145
+ ProcessInstrumentationCallback
3146
+ ProcessThreadStackAllocation
3147
+ ProcessWorkingSetWatchEx
3148
+ ProcessImageFileNameWin32
3149
+ ProcessImageFileMapping
3150
+ ProcessAffinityUpdateMode
3151
+ ProcessMemoryAllocationMode
3152
+ ProcessGroupInformation
3153
+ ProcessTokenVirtualizationEnabled
3154
+ ProcessConsoleHostProcess
3155
+ ProcessWindowInformation
3156
+ ProcessHandleInformation
3157
+ ProcessMitigationPolicy
3158
+ ProcessDynamicFunctionTableInformation
3159
+ ProcessHandleCheckingMode
3160
+ ProcessKeepAliveCount
3161
+ ProcessRevokeFileHandles
3162
+ ProcessWorkingSetControl
3163
+ ProcessHandleTable
3164
+ ProcessCheckStackExtentsMode
3165
+ ProcessCommandLineInformation
3166
+ ProcessProtectionInformation
3167
+ ProcessMemoryExhaustion
3168
+ ProcessFaultInformation
3169
+ ProcessTelemetryIdInformation
3170
+ ProcessCommitReleaseInformation
3171
+ ProcessDefaultCpuSetsInformation
3172
+ ProcessAllowedCpuSetsInformation
3173
+ ProcessSubsystemProcess
3174
+ ProcessJobMemoryInformation
3175
+ ProcessInPrivate
3176
+ ProcessRaiseUMExceptionOnInvalidHandleClose
3177
+ ProcessIumChallengeResponse
3178
+ ProcessChildProcessInformation
3179
+ ProcessHighGraphicsPriorityInformation
3180
+ ProcessSubsystemInformation
3181
+ ProcessEnergyValues
3182
+ ProcessActivityThrottleState
3183
+ ProcessActivityThrottlePolicy
3184
+ ProcessWin32kSyscallFilterInformation
3185
+ ProcessDisableSystemAllowedCpuSets
3186
+ ProcessWakeInformation
3187
+ ProcessEnergyTrackingState
3188
+ ProcessManageWritesToExecutableMemory
3189
+ ProcessCaptureTrustletLiveDump
3190
+ ProcessTelemetryCoverage
3191
+ ProcessEnclaveInformation
3192
+ ProcessEnableReadWriteVmLogging
3193
+ ProcessUptimeInformation
3194
+ ProcessImageSection
3195
+ ProcessDebugAuthInformation
3196
+ ProcessSystemResourceManagement
3197
+ ProcessSequenceNumber
3198
+ ProcessLoaderDetour
3199
+ ProcessSecurityDomainInformation
3200
+ ProcessCombineSecurityDomainsInformation
3201
+ ProcessEnableLogging
3202
+ ProcessLeapSecondInformation
3203
+ ProcessFiberShadowStackAllocation
3204
+ ProcessFreeFiberShadowStackAllocation
3205
+ ProcessAltSystemCallInformation
3206
+ ProcessDynamicEHContinuationTargets
3207
+ ProcessDynamicEnforcedCetCompatibleRanges
3208
+ )
3209
+
3210
+ type PROCESS_BASIC_INFORMATION struct {
3211
+ ExitStatus NTStatus
3212
+ PebBaseAddress *PEB
3213
+ AffinityMask uintptr
3214
+ BasePriority int32
3215
+ UniqueProcessId uintptr
3216
+ InheritedFromUniqueProcessId uintptr
3217
+ }
3218
+
3219
+ type SYSTEM_PROCESS_INFORMATION struct {
3220
+ NextEntryOffset uint32
3221
+ NumberOfThreads uint32
3222
+ WorkingSetPrivateSize int64
3223
+ HardFaultCount uint32
3224
+ NumberOfThreadsHighWatermark uint32
3225
+ CycleTime uint64
3226
+ CreateTime int64
3227
+ UserTime int64
3228
+ KernelTime int64
3229
+ ImageName NTUnicodeString
3230
+ BasePriority int32
3231
+ UniqueProcessID uintptr
3232
+ InheritedFromUniqueProcessID uintptr
3233
+ HandleCount uint32
3234
+ SessionID uint32
3235
+ UniqueProcessKey *uint32
3236
+ PeakVirtualSize uintptr
3237
+ VirtualSize uintptr
3238
+ PageFaultCount uint32
3239
+ PeakWorkingSetSize uintptr
3240
+ WorkingSetSize uintptr
3241
+ QuotaPeakPagedPoolUsage uintptr
3242
+ QuotaPagedPoolUsage uintptr
3243
+ QuotaPeakNonPagedPoolUsage uintptr
3244
+ QuotaNonPagedPoolUsage uintptr
3245
+ PagefileUsage uintptr
3246
+ PeakPagefileUsage uintptr
3247
+ PrivatePageCount uintptr
3248
+ ReadOperationCount int64
3249
+ WriteOperationCount int64
3250
+ OtherOperationCount int64
3251
+ ReadTransferCount int64
3252
+ WriteTransferCount int64
3253
+ OtherTransferCount int64
3254
+ }
3255
+
3256
+ // SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation
3257
+ const (
3258
+ SystemBasicInformation = iota
3259
+ SystemProcessorInformation
3260
+ SystemPerformanceInformation
3261
+ SystemTimeOfDayInformation
3262
+ SystemPathInformation
3263
+ SystemProcessInformation
3264
+ SystemCallCountInformation
3265
+ SystemDeviceInformation
3266
+ SystemProcessorPerformanceInformation
3267
+ SystemFlagsInformation
3268
+ SystemCallTimeInformation
3269
+ SystemModuleInformation
3270
+ SystemLocksInformation
3271
+ SystemStackTraceInformation
3272
+ SystemPagedPoolInformation
3273
+ SystemNonPagedPoolInformation
3274
+ SystemHandleInformation
3275
+ SystemObjectInformation
3276
+ SystemPageFileInformation
3277
+ SystemVdmInstemulInformation
3278
+ SystemVdmBopInformation
3279
+ SystemFileCacheInformation
3280
+ SystemPoolTagInformation
3281
+ SystemInterruptInformation
3282
+ SystemDpcBehaviorInformation
3283
+ SystemFullMemoryInformation
3284
+ SystemLoadGdiDriverInformation
3285
+ SystemUnloadGdiDriverInformation
3286
+ SystemTimeAdjustmentInformation
3287
+ SystemSummaryMemoryInformation
3288
+ SystemMirrorMemoryInformation
3289
+ SystemPerformanceTraceInformation
3290
+ systemObsolete0
3291
+ SystemExceptionInformation
3292
+ SystemCrashDumpStateInformation
3293
+ SystemKernelDebuggerInformation
3294
+ SystemContextSwitchInformation
3295
+ SystemRegistryQuotaInformation
3296
+ SystemExtendServiceTableInformation
3297
+ SystemPrioritySeperation
3298
+ SystemVerifierAddDriverInformation
3299
+ SystemVerifierRemoveDriverInformation
3300
+ SystemProcessorIdleInformation
3301
+ SystemLegacyDriverInformation
3302
+ SystemCurrentTimeZoneInformation
3303
+ SystemLookasideInformation
3304
+ SystemTimeSlipNotification
3305
+ SystemSessionCreate
3306
+ SystemSessionDetach
3307
+ SystemSessionInformation
3308
+ SystemRangeStartInformation
3309
+ SystemVerifierInformation
3310
+ SystemVerifierThunkExtend
3311
+ SystemSessionProcessInformation
3312
+ SystemLoadGdiDriverInSystemSpace
3313
+ SystemNumaProcessorMap
3314
+ SystemPrefetcherInformation
3315
+ SystemExtendedProcessInformation
3316
+ SystemRecommendedSharedDataAlignment
3317
+ SystemComPlusPackage
3318
+ SystemNumaAvailableMemory
3319
+ SystemProcessorPowerInformation
3320
+ SystemEmulationBasicInformation
3321
+ SystemEmulationProcessorInformation
3322
+ SystemExtendedHandleInformation
3323
+ SystemLostDelayedWriteInformation
3324
+ SystemBigPoolInformation
3325
+ SystemSessionPoolTagInformation
3326
+ SystemSessionMappedViewInformation
3327
+ SystemHotpatchInformation
3328
+ SystemObjectSecurityMode
3329
+ SystemWatchdogTimerHandler
3330
+ SystemWatchdogTimerInformation
3331
+ SystemLogicalProcessorInformation
3332
+ SystemWow64SharedInformationObsolete
3333
+ SystemRegisterFirmwareTableInformationHandler
3334
+ SystemFirmwareTableInformation
3335
+ SystemModuleInformationEx
3336
+ SystemVerifierTriageInformation
3337
+ SystemSuperfetchInformation
3338
+ SystemMemoryListInformation
3339
+ SystemFileCacheInformationEx
3340
+ SystemThreadPriorityClientIdInformation
3341
+ SystemProcessorIdleCycleTimeInformation
3342
+ SystemVerifierCancellationInformation
3343
+ SystemProcessorPowerInformationEx
3344
+ SystemRefTraceInformation
3345
+ SystemSpecialPoolInformation
3346
+ SystemProcessIdInformation
3347
+ SystemErrorPortInformation
3348
+ SystemBootEnvironmentInformation
3349
+ SystemHypervisorInformation
3350
+ SystemVerifierInformationEx
3351
+ SystemTimeZoneInformation
3352
+ SystemImageFileExecutionOptionsInformation
3353
+ SystemCoverageInformation
3354
+ SystemPrefetchPatchInformation
3355
+ SystemVerifierFaultsInformation
3356
+ SystemSystemPartitionInformation
3357
+ SystemSystemDiskInformation
3358
+ SystemProcessorPerformanceDistribution
3359
+ SystemNumaProximityNodeInformation
3360
+ SystemDynamicTimeZoneInformation
3361
+ SystemCodeIntegrityInformation
3362
+ SystemProcessorMicrocodeUpdateInformation
3363
+ SystemProcessorBrandString
3364
+ SystemVirtualAddressInformation
3365
+ SystemLogicalProcessorAndGroupInformation
3366
+ SystemProcessorCycleTimeInformation
3367
+ SystemStoreInformation
3368
+ SystemRegistryAppendString
3369
+ SystemAitSamplingValue
3370
+ SystemVhdBootInformation
3371
+ SystemCpuQuotaInformation
3372
+ SystemNativeBasicInformation
3373
+ systemSpare1
3374
+ SystemLowPriorityIoInformation
3375
+ SystemTpmBootEntropyInformation
3376
+ SystemVerifierCountersInformation
3377
+ SystemPagedPoolInformationEx
3378
+ SystemSystemPtesInformationEx
3379
+ SystemNodeDistanceInformation
3380
+ SystemAcpiAuditInformation
3381
+ SystemBasicPerformanceInformation
3382
+ SystemQueryPerformanceCounterInformation
3383
+ SystemSessionBigPoolInformation
3384
+ SystemBootGraphicsInformation
3385
+ SystemScrubPhysicalMemoryInformation
3386
+ SystemBadPageInformation
3387
+ SystemProcessorProfileControlArea
3388
+ SystemCombinePhysicalMemoryInformation
3389
+ SystemEntropyInterruptTimingCallback
3390
+ SystemConsoleInformation
3391
+ SystemPlatformBinaryInformation
3392
+ SystemThrottleNotificationInformation
3393
+ SystemHypervisorProcessorCountInformation
3394
+ SystemDeviceDataInformation
3395
+ SystemDeviceDataEnumerationInformation
3396
+ SystemMemoryTopologyInformation
3397
+ SystemMemoryChannelInformation
3398
+ SystemBootLogoInformation
3399
+ SystemProcessorPerformanceInformationEx
3400
+ systemSpare0
3401
+ SystemSecureBootPolicyInformation
3402
+ SystemPageFileInformationEx
3403
+ SystemSecureBootInformation
3404
+ SystemEntropyInterruptTimingRawInformation
3405
+ SystemPortableWorkspaceEfiLauncherInformation
3406
+ SystemFullProcessInformation
3407
+ SystemKernelDebuggerInformationEx
3408
+ SystemBootMetadataInformation
3409
+ SystemSoftRebootInformation
3410
+ SystemElamCertificateInformation
3411
+ SystemOfflineDumpConfigInformation
3412
+ SystemProcessorFeaturesInformation
3413
+ SystemRegistryReconciliationInformation
3414
+ SystemEdidInformation
3415
+ SystemManufacturingInformation
3416
+ SystemEnergyEstimationConfigInformation
3417
+ SystemHypervisorDetailInformation
3418
+ SystemProcessorCycleStatsInformation
3419
+ SystemVmGenerationCountInformation
3420
+ SystemTrustedPlatformModuleInformation
3421
+ SystemKernelDebuggerFlags
3422
+ SystemCodeIntegrityPolicyInformation
3423
+ SystemIsolatedUserModeInformation
3424
+ SystemHardwareSecurityTestInterfaceResultsInformation
3425
+ SystemSingleModuleInformation
3426
+ SystemAllowedCpuSetsInformation
3427
+ SystemDmaProtectionInformation
3428
+ SystemInterruptCpuSetsInformation
3429
+ SystemSecureBootPolicyFullInformation
3430
+ SystemCodeIntegrityPolicyFullInformation
3431
+ SystemAffinitizedInterruptProcessorInformation
3432
+ SystemRootSiloInformation
3433
+ )
3434
+
3435
+ type RTL_PROCESS_MODULE_INFORMATION struct {
3436
+ Section Handle
3437
+ MappedBase uintptr
3438
+ ImageBase uintptr
3439
+ ImageSize uint32
3440
+ Flags uint32
3441
+ LoadOrderIndex uint16
3442
+ InitOrderIndex uint16
3443
+ LoadCount uint16
3444
+ OffsetToFileName uint16
3445
+ FullPathName [256]byte
3446
+ }
3447
+
3448
+ type RTL_PROCESS_MODULES struct {
3449
+ NumberOfModules uint32
3450
+ Modules [1]RTL_PROCESS_MODULE_INFORMATION
3451
+ }
3452
+
3453
+ // Constants for LocalAlloc flags.
3454
+ const (
3455
+ LMEM_FIXED = 0x0
3456
+ LMEM_MOVEABLE = 0x2
3457
+ LMEM_NOCOMPACT = 0x10
3458
+ LMEM_NODISCARD = 0x20
3459
+ LMEM_ZEROINIT = 0x40
3460
+ LMEM_MODIFY = 0x80
3461
+ LMEM_DISCARDABLE = 0xf00
3462
+ LMEM_VALID_FLAGS = 0xf72
3463
+ LMEM_INVALID_HANDLE = 0x8000
3464
+ LHND = LMEM_MOVEABLE | LMEM_ZEROINIT
3465
+ LPTR = LMEM_FIXED | LMEM_ZEROINIT
3466
+ NONZEROLHND = LMEM_MOVEABLE
3467
+ NONZEROLPTR = LMEM_FIXED
3468
+ )
3469
+
3470
+ // Constants for the CreateNamedPipe-family of functions.
3471
+ const (
3472
+ PIPE_ACCESS_INBOUND = 0x1
3473
+ PIPE_ACCESS_OUTBOUND = 0x2
3474
+ PIPE_ACCESS_DUPLEX = 0x3
3475
+
3476
+ PIPE_CLIENT_END = 0x0
3477
+ PIPE_SERVER_END = 0x1
3478
+
3479
+ PIPE_WAIT = 0x0
3480
+ PIPE_NOWAIT = 0x1
3481
+ PIPE_READMODE_BYTE = 0x0
3482
+ PIPE_READMODE_MESSAGE = 0x2
3483
+ PIPE_TYPE_BYTE = 0x0
3484
+ PIPE_TYPE_MESSAGE = 0x4
3485
+ PIPE_ACCEPT_REMOTE_CLIENTS = 0x0
3486
+ PIPE_REJECT_REMOTE_CLIENTS = 0x8
3487
+
3488
+ PIPE_UNLIMITED_INSTANCES = 255
3489
+ )
3490
+
3491
+ // Constants for security attributes when opening named pipes.
3492
+ const (
3493
+ SECURITY_ANONYMOUS = SecurityAnonymous << 16
3494
+ SECURITY_IDENTIFICATION = SecurityIdentification << 16
3495
+ SECURITY_IMPERSONATION = SecurityImpersonation << 16
3496
+ SECURITY_DELEGATION = SecurityDelegation << 16
3497
+
3498
+ SECURITY_CONTEXT_TRACKING = 0x40000
3499
+ SECURITY_EFFECTIVE_ONLY = 0x80000
3500
+
3501
+ SECURITY_SQOS_PRESENT = 0x100000
3502
+ SECURITY_VALID_SQOS_FLAGS = 0x1f0000
3503
+ )
3504
+
3505
+ // ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro.
3506
+ type ResourceID uint16
3507
+
3508
+ // ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID,
3509
+ // or a string, to specify a resource or resource type by name.
3510
+ type ResourceIDOrString interface{}
3511
+
3512
+ // Predefined resource names and types.
3513
+ var (
3514
+ // Predefined names.
3515
+ CREATEPROCESS_MANIFEST_RESOURCE_ID ResourceID = 1
3516
+ ISOLATIONAWARE_MANIFEST_RESOURCE_ID ResourceID = 2
3517
+ ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3
3518
+ ISOLATIONPOLICY_MANIFEST_RESOURCE_ID ResourceID = 4
3519
+ ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID ResourceID = 5
3520
+ MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 1 // inclusive
3521
+ MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 16 // inclusive
3522
+
3523
+ // Predefined types.
3524
+ RT_CURSOR ResourceID = 1
3525
+ RT_BITMAP ResourceID = 2
3526
+ RT_ICON ResourceID = 3
3527
+ RT_MENU ResourceID = 4
3528
+ RT_DIALOG ResourceID = 5
3529
+ RT_STRING ResourceID = 6
3530
+ RT_FONTDIR ResourceID = 7
3531
+ RT_FONT ResourceID = 8
3532
+ RT_ACCELERATOR ResourceID = 9
3533
+ RT_RCDATA ResourceID = 10
3534
+ RT_MESSAGETABLE ResourceID = 11
3535
+ RT_GROUP_CURSOR ResourceID = 12
3536
+ RT_GROUP_ICON ResourceID = 14
3537
+ RT_VERSION ResourceID = 16
3538
+ RT_DLGINCLUDE ResourceID = 17
3539
+ RT_PLUGPLAY ResourceID = 19
3540
+ RT_VXD ResourceID = 20
3541
+ RT_ANICURSOR ResourceID = 21
3542
+ RT_ANIICON ResourceID = 22
3543
+ RT_HTML ResourceID = 23
3544
+ RT_MANIFEST ResourceID = 24
3545
+ )
3546
+
3547
+ type VS_FIXEDFILEINFO struct {
3548
+ Signature uint32
3549
+ StrucVersion uint32
3550
+ FileVersionMS uint32
3551
+ FileVersionLS uint32
3552
+ ProductVersionMS uint32
3553
+ ProductVersionLS uint32
3554
+ FileFlagsMask uint32
3555
+ FileFlags uint32
3556
+ FileOS uint32
3557
+ FileType uint32
3558
+ FileSubtype uint32
3559
+ FileDateMS uint32
3560
+ FileDateLS uint32
3561
+ }
3562
+
3563
+ type COAUTHIDENTITY struct {
3564
+ User *uint16
3565
+ UserLength uint32
3566
+ Domain *uint16
3567
+ DomainLength uint32
3568
+ Password *uint16
3569
+ PasswordLength uint32
3570
+ Flags uint32
3571
+ }
3572
+
3573
+ type COAUTHINFO struct {
3574
+ AuthnSvc uint32
3575
+ AuthzSvc uint32
3576
+ ServerPrincName *uint16
3577
+ AuthnLevel uint32
3578
+ ImpersonationLevel uint32
3579
+ AuthIdentityData *COAUTHIDENTITY
3580
+ Capabilities uint32
3581
+ }
3582
+
3583
+ type COSERVERINFO struct {
3584
+ Reserved1 uint32
3585
+ Aame *uint16
3586
+ AuthInfo *COAUTHINFO
3587
+ Reserved2 uint32
3588
+ }
3589
+
3590
+ type BIND_OPTS3 struct {
3591
+ CbStruct uint32
3592
+ Flags uint32
3593
+ Mode uint32
3594
+ TickCountDeadline uint32
3595
+ TrackFlags uint32
3596
+ ClassContext uint32
3597
+ Locale uint32
3598
+ ServerInfo *COSERVERINFO
3599
+ Hwnd HWND
3600
+ }
3601
+
3602
+ const (
3603
+ CLSCTX_INPROC_SERVER = 0x1
3604
+ CLSCTX_INPROC_HANDLER = 0x2
3605
+ CLSCTX_LOCAL_SERVER = 0x4
3606
+ CLSCTX_INPROC_SERVER16 = 0x8
3607
+ CLSCTX_REMOTE_SERVER = 0x10
3608
+ CLSCTX_INPROC_HANDLER16 = 0x20
3609
+ CLSCTX_RESERVED1 = 0x40
3610
+ CLSCTX_RESERVED2 = 0x80
3611
+ CLSCTX_RESERVED3 = 0x100
3612
+ CLSCTX_RESERVED4 = 0x200
3613
+ CLSCTX_NO_CODE_DOWNLOAD = 0x400
3614
+ CLSCTX_RESERVED5 = 0x800
3615
+ CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
3616
+ CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
3617
+ CLSCTX_NO_FAILURE_LOG = 0x4000
3618
+ CLSCTX_DISABLE_AAA = 0x8000
3619
+ CLSCTX_ENABLE_AAA = 0x10000
3620
+ CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
3621
+ CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000
3622
+ CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
3623
+ CLSCTX_ENABLE_CLOAKING = 0x100000
3624
+ CLSCTX_APPCONTAINER = 0x400000
3625
+ CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000
3626
+ CLSCTX_PS_DLL = 0x80000000
3627
+
3628
+ COINIT_MULTITHREADED = 0x0
3629
+ COINIT_APARTMENTTHREADED = 0x2
3630
+ COINIT_DISABLE_OLE1DDE = 0x4
3631
+ COINIT_SPEED_OVER_MEMORY = 0x8
3632
+ )
3633
+
3634
+ // Flag for QueryFullProcessImageName.
3635
+ const PROCESS_NAME_NATIVE = 1
3636
+
3637
+ type ModuleInfo struct {
3638
+ BaseOfDll uintptr
3639
+ SizeOfImage uint32
3640
+ EntryPoint uintptr
3641
+ }
3642
+
3643
+ const ALL_PROCESSOR_GROUPS = 0xFFFF
3644
+
3645
+ type Rect struct {
3646
+ Left int32
3647
+ Top int32
3648
+ Right int32
3649
+ Bottom int32
3650
+ }
3651
+
3652
+ type GUIThreadInfo struct {
3653
+ Size uint32
3654
+ Flags uint32
3655
+ Active HWND
3656
+ Focus HWND
3657
+ Capture HWND
3658
+ MenuOwner HWND
3659
+ MoveSize HWND
3660
+ CaretHandle HWND
3661
+ CaretRect Rect
3662
+ }
3663
+
3664
+ const (
3665
+ DWMWA_NCRENDERING_ENABLED = 1
3666
+ DWMWA_NCRENDERING_POLICY = 2
3667
+ DWMWA_TRANSITIONS_FORCEDISABLED = 3
3668
+ DWMWA_ALLOW_NCPAINT = 4
3669
+ DWMWA_CAPTION_BUTTON_BOUNDS = 5
3670
+ DWMWA_NONCLIENT_RTL_LAYOUT = 6
3671
+ DWMWA_FORCE_ICONIC_REPRESENTATION = 7
3672
+ DWMWA_FLIP3D_POLICY = 8
3673
+ DWMWA_EXTENDED_FRAME_BOUNDS = 9
3674
+ DWMWA_HAS_ICONIC_BITMAP = 10
3675
+ DWMWA_DISALLOW_PEEK = 11
3676
+ DWMWA_EXCLUDED_FROM_PEEK = 12
3677
+ DWMWA_CLOAK = 13
3678
+ DWMWA_CLOAKED = 14
3679
+ DWMWA_FREEZE_REPRESENTATION = 15
3680
+ DWMWA_PASSIVE_UPDATE_MODE = 16
3681
+ DWMWA_USE_HOSTBACKDROPBRUSH = 17
3682
+ DWMWA_USE_IMMERSIVE_DARK_MODE = 20
3683
+ DWMWA_WINDOW_CORNER_PREFERENCE = 33
3684
+ DWMWA_BORDER_COLOR = 34
3685
+ DWMWA_CAPTION_COLOR = 35
3686
+ DWMWA_TEXT_COLOR = 36
3687
+ DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37
3688
+ )
3689
+
3690
+ type WSAQUERYSET struct {
3691
+ Size uint32
3692
+ ServiceInstanceName *uint16
3693
+ ServiceClassId *GUID
3694
+ Version *WSAVersion
3695
+ Comment *uint16
3696
+ NameSpace uint32
3697
+ NSProviderId *GUID
3698
+ Context *uint16
3699
+ NumberOfProtocols uint32
3700
+ AfpProtocols *AFProtocols
3701
+ QueryString *uint16
3702
+ NumberOfCsAddrs uint32
3703
+ SaBuffer *CSAddrInfo
3704
+ OutputFlags uint32
3705
+ Blob *BLOB
3706
+ }
3707
+
3708
+ type WSAVersion struct {
3709
+ Version uint32
3710
+ EnumerationOfComparison int32
3711
+ }
3712
+
3713
+ type AFProtocols struct {
3714
+ AddressFamily int32
3715
+ Protocol int32
3716
+ }
3717
+
3718
+ type CSAddrInfo struct {
3719
+ LocalAddr SocketAddress
3720
+ RemoteAddr SocketAddress
3721
+ SocketType int32
3722
+ Protocol int32
3723
+ }
3724
+
3725
+ type BLOB struct {
3726
+ Size uint32
3727
+ BlobData *byte
3728
+ }
3729
+
3730
+ type ComStat struct {
3731
+ Flags uint32
3732
+ CBInQue uint32
3733
+ CBOutQue uint32
3734
+ }
3735
+
3736
+ type DCB struct {
3737
+ DCBlength uint32
3738
+ BaudRate uint32
3739
+ Flags uint32
3740
+ wReserved uint16
3741
+ XonLim uint16
3742
+ XoffLim uint16
3743
+ ByteSize uint8
3744
+ Parity uint8
3745
+ StopBits uint8
3746
+ XonChar byte
3747
+ XoffChar byte
3748
+ ErrorChar byte
3749
+ EofChar byte
3750
+ EvtChar byte
3751
+ wReserved1 uint16
3752
+ }
3753
+
3754
+ // Keyboard Layout Flags.
3755
+ // See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw
3756
+ const (
3757
+ KLF_ACTIVATE = 0x00000001
3758
+ KLF_SUBSTITUTE_OK = 0x00000002
3759
+ KLF_REORDER = 0x00000008
3760
+ KLF_REPLACELANG = 0x00000010
3761
+ KLF_NOTELLSHELL = 0x00000080
3762
+ KLF_SETFORPROCESS = 0x00000100
3763
+ )
3764
+
3765
+ // Virtual Key codes
3766
+ // https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
3767
+ const (
3768
+ VK_LBUTTON = 0x01
3769
+ VK_RBUTTON = 0x02
3770
+ VK_CANCEL = 0x03
3771
+ VK_MBUTTON = 0x04
3772
+ VK_XBUTTON1 = 0x05
3773
+ VK_XBUTTON2 = 0x06
3774
+ VK_BACK = 0x08
3775
+ VK_TAB = 0x09
3776
+ VK_CLEAR = 0x0C
3777
+ VK_RETURN = 0x0D
3778
+ VK_SHIFT = 0x10
3779
+ VK_CONTROL = 0x11
3780
+ VK_MENU = 0x12
3781
+ VK_PAUSE = 0x13
3782
+ VK_CAPITAL = 0x14
3783
+ VK_KANA = 0x15
3784
+ VK_HANGEUL = 0x15
3785
+ VK_HANGUL = 0x15
3786
+ VK_IME_ON = 0x16
3787
+ VK_JUNJA = 0x17
3788
+ VK_FINAL = 0x18
3789
+ VK_HANJA = 0x19
3790
+ VK_KANJI = 0x19
3791
+ VK_IME_OFF = 0x1A
3792
+ VK_ESCAPE = 0x1B
3793
+ VK_CONVERT = 0x1C
3794
+ VK_NONCONVERT = 0x1D
3795
+ VK_ACCEPT = 0x1E
3796
+ VK_MODECHANGE = 0x1F
3797
+ VK_SPACE = 0x20
3798
+ VK_PRIOR = 0x21
3799
+ VK_NEXT = 0x22
3800
+ VK_END = 0x23
3801
+ VK_HOME = 0x24
3802
+ VK_LEFT = 0x25
3803
+ VK_UP = 0x26
3804
+ VK_RIGHT = 0x27
3805
+ VK_DOWN = 0x28
3806
+ VK_SELECT = 0x29
3807
+ VK_PRINT = 0x2A
3808
+ VK_EXECUTE = 0x2B
3809
+ VK_SNAPSHOT = 0x2C
3810
+ VK_INSERT = 0x2D
3811
+ VK_DELETE = 0x2E
3812
+ VK_HELP = 0x2F
3813
+ VK_LWIN = 0x5B
3814
+ VK_RWIN = 0x5C
3815
+ VK_APPS = 0x5D
3816
+ VK_SLEEP = 0x5F
3817
+ VK_NUMPAD0 = 0x60
3818
+ VK_NUMPAD1 = 0x61
3819
+ VK_NUMPAD2 = 0x62
3820
+ VK_NUMPAD3 = 0x63
3821
+ VK_NUMPAD4 = 0x64
3822
+ VK_NUMPAD5 = 0x65
3823
+ VK_NUMPAD6 = 0x66
3824
+ VK_NUMPAD7 = 0x67
3825
+ VK_NUMPAD8 = 0x68
3826
+ VK_NUMPAD9 = 0x69
3827
+ VK_MULTIPLY = 0x6A
3828
+ VK_ADD = 0x6B
3829
+ VK_SEPARATOR = 0x6C
3830
+ VK_SUBTRACT = 0x6D
3831
+ VK_DECIMAL = 0x6E
3832
+ VK_DIVIDE = 0x6F
3833
+ VK_F1 = 0x70
3834
+ VK_F2 = 0x71
3835
+ VK_F3 = 0x72
3836
+ VK_F4 = 0x73
3837
+ VK_F5 = 0x74
3838
+ VK_F6 = 0x75
3839
+ VK_F7 = 0x76
3840
+ VK_F8 = 0x77
3841
+ VK_F9 = 0x78
3842
+ VK_F10 = 0x79
3843
+ VK_F11 = 0x7A
3844
+ VK_F12 = 0x7B
3845
+ VK_F13 = 0x7C
3846
+ VK_F14 = 0x7D
3847
+ VK_F15 = 0x7E
3848
+ VK_F16 = 0x7F
3849
+ VK_F17 = 0x80
3850
+ VK_F18 = 0x81
3851
+ VK_F19 = 0x82
3852
+ VK_F20 = 0x83
3853
+ VK_F21 = 0x84
3854
+ VK_F22 = 0x85
3855
+ VK_F23 = 0x86
3856
+ VK_F24 = 0x87
3857
+ VK_NUMLOCK = 0x90
3858
+ VK_SCROLL = 0x91
3859
+ VK_OEM_NEC_EQUAL = 0x92
3860
+ VK_OEM_FJ_JISHO = 0x92
3861
+ VK_OEM_FJ_MASSHOU = 0x93
3862
+ VK_OEM_FJ_TOUROKU = 0x94
3863
+ VK_OEM_FJ_LOYA = 0x95
3864
+ VK_OEM_FJ_ROYA = 0x96
3865
+ VK_LSHIFT = 0xA0
3866
+ VK_RSHIFT = 0xA1
3867
+ VK_LCONTROL = 0xA2
3868
+ VK_RCONTROL = 0xA3
3869
+ VK_LMENU = 0xA4
3870
+ VK_RMENU = 0xA5
3871
+ VK_BROWSER_BACK = 0xA6
3872
+ VK_BROWSER_FORWARD = 0xA7
3873
+ VK_BROWSER_REFRESH = 0xA8
3874
+ VK_BROWSER_STOP = 0xA9
3875
+ VK_BROWSER_SEARCH = 0xAA
3876
+ VK_BROWSER_FAVORITES = 0xAB
3877
+ VK_BROWSER_HOME = 0xAC
3878
+ VK_VOLUME_MUTE = 0xAD
3879
+ VK_VOLUME_DOWN = 0xAE
3880
+ VK_VOLUME_UP = 0xAF
3881
+ VK_MEDIA_NEXT_TRACK = 0xB0
3882
+ VK_MEDIA_PREV_TRACK = 0xB1
3883
+ VK_MEDIA_STOP = 0xB2
3884
+ VK_MEDIA_PLAY_PAUSE = 0xB3
3885
+ VK_LAUNCH_MAIL = 0xB4
3886
+ VK_LAUNCH_MEDIA_SELECT = 0xB5
3887
+ VK_LAUNCH_APP1 = 0xB6
3888
+ VK_LAUNCH_APP2 = 0xB7
3889
+ VK_OEM_1 = 0xBA
3890
+ VK_OEM_PLUS = 0xBB
3891
+ VK_OEM_COMMA = 0xBC
3892
+ VK_OEM_MINUS = 0xBD
3893
+ VK_OEM_PERIOD = 0xBE
3894
+ VK_OEM_2 = 0xBF
3895
+ VK_OEM_3 = 0xC0
3896
+ VK_OEM_4 = 0xDB
3897
+ VK_OEM_5 = 0xDC
3898
+ VK_OEM_6 = 0xDD
3899
+ VK_OEM_7 = 0xDE
3900
+ VK_OEM_8 = 0xDF
3901
+ VK_OEM_AX = 0xE1
3902
+ VK_OEM_102 = 0xE2
3903
+ VK_ICO_HELP = 0xE3
3904
+ VK_ICO_00 = 0xE4
3905
+ VK_PROCESSKEY = 0xE5
3906
+ VK_ICO_CLEAR = 0xE6
3907
+ VK_OEM_RESET = 0xE9
3908
+ VK_OEM_JUMP = 0xEA
3909
+ VK_OEM_PA1 = 0xEB
3910
+ VK_OEM_PA2 = 0xEC
3911
+ VK_OEM_PA3 = 0xED
3912
+ VK_OEM_WSCTRL = 0xEE
3913
+ VK_OEM_CUSEL = 0xEF
3914
+ VK_OEM_ATTN = 0xF0
3915
+ VK_OEM_FINISH = 0xF1
3916
+ VK_OEM_COPY = 0xF2
3917
+ VK_OEM_AUTO = 0xF3
3918
+ VK_OEM_ENLW = 0xF4
3919
+ VK_OEM_BACKTAB = 0xF5
3920
+ VK_ATTN = 0xF6
3921
+ VK_CRSEL = 0xF7
3922
+ VK_EXSEL = 0xF8
3923
+ VK_EREOF = 0xF9
3924
+ VK_PLAY = 0xFA
3925
+ VK_ZOOM = 0xFB
3926
+ VK_NONAME = 0xFC
3927
+ VK_PA1 = 0xFD
3928
+ VK_OEM_CLEAR = 0xFE
3929
+ )
3930
+
3931
+ // Mouse button constants.
3932
+ // https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
3933
+ const (
3934
+ FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001
3935
+ RIGHTMOST_BUTTON_PRESSED = 0x0002
3936
+ FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004
3937
+ FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008
3938
+ FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010
3939
+ )
3940
+
3941
+ // Control key state constaints.
3942
+ // https://docs.microsoft.com/en-us/windows/console/key-event-record-str
3943
+ // https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
3944
+ const (
3945
+ CAPSLOCK_ON = 0x0080
3946
+ ENHANCED_KEY = 0x0100
3947
+ LEFT_ALT_PRESSED = 0x0002
3948
+ LEFT_CTRL_PRESSED = 0x0008
3949
+ NUMLOCK_ON = 0x0020
3950
+ RIGHT_ALT_PRESSED = 0x0001
3951
+ RIGHT_CTRL_PRESSED = 0x0004
3952
+ SCROLLLOCK_ON = 0x0040
3953
+ SHIFT_PRESSED = 0x0010
3954
+ )
3955
+
3956
+ // Mouse event record event flags.
3957
+ // https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
3958
+ const (
3959
+ MOUSE_MOVED = 0x0001
3960
+ DOUBLE_CLICK = 0x0002
3961
+ MOUSE_WHEELED = 0x0004
3962
+ MOUSE_HWHEELED = 0x0008
3963
+ )
3964
+
3965
+ // Input Record Event Types
3966
+ // https://learn.microsoft.com/en-us/windows/console/input-record-str
3967
+ const (
3968
+ FOCUS_EVENT = 0x0010
3969
+ KEY_EVENT = 0x0001
3970
+ MENU_EVENT = 0x0008
3971
+ MOUSE_EVENT = 0x0002
3972
+ WINDOW_BUFFER_SIZE_EVENT = 0x0004
3973
+ )
3974
+
3975
+ // The processor features to be tested for IsProcessorFeaturePresent, see
3976
+ // https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent
3977
+ const (
3978
+ PF_ARM_64BIT_LOADSTORE_ATOMIC = 25
3979
+ PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE = 24
3980
+ PF_ARM_EXTERNAL_CACHE_AVAILABLE = 26
3981
+ PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE = 27
3982
+ PF_ARM_VFP_32_REGISTERS_AVAILABLE = 18
3983
+ PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7
3984
+ PF_CHANNELS_ENABLED = 16
3985
+ PF_COMPARE_EXCHANGE_DOUBLE = 2
3986
+ PF_COMPARE_EXCHANGE128 = 14
3987
+ PF_COMPARE64_EXCHANGE128 = 15
3988
+ PF_FASTFAIL_AVAILABLE = 23
3989
+ PF_FLOATING_POINT_EMULATED = 1
3990
+ PF_FLOATING_POINT_PRECISION_ERRATA = 0
3991
+ PF_MMX_INSTRUCTIONS_AVAILABLE = 3
3992
+ PF_NX_ENABLED = 12
3993
+ PF_PAE_ENABLED = 9
3994
+ PF_RDTSC_INSTRUCTION_AVAILABLE = 8
3995
+ PF_RDWRFSGSBASE_AVAILABLE = 22
3996
+ PF_SECOND_LEVEL_ADDRESS_TRANSLATION = 20
3997
+ PF_SSE3_INSTRUCTIONS_AVAILABLE = 13
3998
+ PF_SSSE3_INSTRUCTIONS_AVAILABLE = 36
3999
+ PF_SSE4_1_INSTRUCTIONS_AVAILABLE = 37
4000
+ PF_SSE4_2_INSTRUCTIONS_AVAILABLE = 38
4001
+ PF_AVX_INSTRUCTIONS_AVAILABLE = 39
4002
+ PF_AVX2_INSTRUCTIONS_AVAILABLE = 40
4003
+ PF_AVX512F_INSTRUCTIONS_AVAILABLE = 41
4004
+ PF_VIRT_FIRMWARE_ENABLED = 21
4005
+ PF_XMMI_INSTRUCTIONS_AVAILABLE = 6
4006
+ PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10
4007
+ PF_XSAVE_ENABLED = 17
4008
+ PF_ARM_V8_INSTRUCTIONS_AVAILABLE = 29
4009
+ PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE = 30
4010
+ PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE = 31
4011
+ PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE = 34
4012
+ PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE = 43
4013
+ PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE = 44
4014
+ PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE = 45
4015
+ PF_ARM_SVE_INSTRUCTIONS_AVAILABLE = 46
4016
+ PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE = 47
4017
+ PF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE = 48
4018
+ PF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE = 49
4019
+ PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE = 50
4020
+ PF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE = 51
4021
+ PF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE = 52
4022
+ PF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE = 53
4023
+ PF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE = 54
4024
+ PF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE = 55
4025
+ PF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE = 56
4026
+ PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE = 57
4027
+ PF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE = 58
4028
+ PF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE = 59
4029
+ PF_BMI2_INSTRUCTIONS_AVAILABLE = 60
4030
+ PF_MOVDIR64B_INSTRUCTION_AVAILABLE = 61
4031
+ PF_ARM_LSE2_AVAILABLE = 62
4032
+ PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE = 64
4033
+ PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE = 65
4034
+ PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE = 66
4035
+ PF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE = 67
4036
+ PF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE = 68
4037
+ PF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE = 69
4038
+ PF_ARM_SME_INSTRUCTIONS_AVAILABLE = 70
4039
+ PF_ARM_SME2_INSTRUCTIONS_AVAILABLE = 71
4040
+ PF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE = 72
4041
+ PF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE = 73
4042
+ PF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE = 74
4043
+ PF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE = 75
4044
+ PF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE = 76
4045
+ PF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE = 77
4046
+ PF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE = 78
4047
+ PF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE = 79
4048
+ PF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE = 80
4049
+ PF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE = 81
4050
+ PF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE = 82
4051
+ PF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE = 83
4052
+ PF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE = 84
4053
+ PF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE = 85
4054
+ PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE = 86
4055
+ PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE = 87
4056
+ PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE = 88
4057
+ PF_UMONITOR_INSTRUCTION_AVAILABLE = 89
4058
+ )