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 5package windows 6 7import ( 8 "net" 9 "syscall" 10 "unsafe" 11) 12 13// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and 14// other native functions. 15type NTStatus uint32 16 17const ( 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 33const ( 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 50var 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 68const ( 69 FILE_READ_DATA = 0x00000001 70 FILE_READ_ATTRIBUTES = 0x00000080 71 FILE_READ_EA = 0x00000008 72 FILE_WRITE_DATA = 0x00000002 73 FILE_WRITE_ATTRIBUTES = 0x00000100 74 FILE_WRITE_EA = 0x00000010 75 FILE_APPEND_DATA = 0x00000004 76 FILE_EXECUTE = 0x00000020 77 78 FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE 79 FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE 80 FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE 81 82 FILE_LIST_DIRECTORY = 0x00000001 83 FILE_TRAVERSE = 0x00000020 84 85 FILE_SHARE_READ = 0x00000001 86 FILE_SHARE_WRITE = 0x00000002 87 FILE_SHARE_DELETE = 0x00000004 88 89 FILE_ATTRIBUTE_READONLY = 0x00000001 90 FILE_ATTRIBUTE_HIDDEN = 0x00000002 91 FILE_ATTRIBUTE_SYSTEM = 0x00000004 92 FILE_ATTRIBUTE_DIRECTORY = 0x00000010 93 FILE_ATTRIBUTE_ARCHIVE = 0x00000020 94 FILE_ATTRIBUTE_DEVICE = 0x00000040 95 FILE_ATTRIBUTE_NORMAL = 0x00000080 96 FILE_ATTRIBUTE_TEMPORARY = 0x00000100 97 FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 98 FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 99 FILE_ATTRIBUTE_COMPRESSED = 0x00000800 100 FILE_ATTRIBUTE_OFFLINE = 0x00001000 101 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 102 FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 103 FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 104 FILE_ATTRIBUTE_VIRTUAL = 0x00010000 105 FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 106 FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 107 FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 108 109 INVALID_FILE_ATTRIBUTES = 0xffffffff 110 111 CREATE_NEW = 1 112 CREATE_ALWAYS = 2 113 OPEN_EXISTING = 3 114 OPEN_ALWAYS = 4 115 TRUNCATE_EXISTING = 5 116 117 FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 118 FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 119 FILE_FLAG_OPEN_NO_RECALL = 0x00100000 120 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 121 FILE_FLAG_SESSION_AWARE = 0x00800000 122 FILE_FLAG_POSIX_SEMANTICS = 0x01000000 123 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 124 FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 125 FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 126 FILE_FLAG_RANDOM_ACCESS = 0x10000000 127 FILE_FLAG_NO_BUFFERING = 0x20000000 128 FILE_FLAG_OVERLAPPED = 0x40000000 129 FILE_FLAG_WRITE_THROUGH = 0x80000000 130 131 HANDLE_FLAG_INHERIT = 0x00000001 132 STARTF_USESTDHANDLES = 0x00000100 133 STARTF_USESHOWWINDOW = 0x00000001 134 DUPLICATE_CLOSE_SOURCE = 0x00000001 135 DUPLICATE_SAME_ACCESS = 0x00000002 136 137 STD_INPUT_HANDLE = -10 & (1<<32 - 1) 138 STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) 139 STD_ERROR_HANDLE = -12 & (1<<32 - 1) 140 141 FILE_BEGIN = 0 142 FILE_CURRENT = 1 143 FILE_END = 2 144 145 LANG_ENGLISH = 0x09 146 SUBLANG_ENGLISH_US = 0x01 147 148 FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 149 FORMAT_MESSAGE_IGNORE_INSERTS = 512 150 FORMAT_MESSAGE_FROM_STRING = 1024 151 FORMAT_MESSAGE_FROM_HMODULE = 2048 152 FORMAT_MESSAGE_FROM_SYSTEM = 4096 153 FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 154 FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 155 156 MAX_PATH = 260 157 MAX_LONG_PATH = 32768 158 159 MAX_COMPUTERNAME_LENGTH = 15 160 161 TIME_ZONE_ID_UNKNOWN = 0 162 TIME_ZONE_ID_STANDARD = 1 163 164 TIME_ZONE_ID_DAYLIGHT = 2 165 IGNORE = 0 166 INFINITE = 0xffffffff 167 168 WAIT_ABANDONED = 0x00000080 169 WAIT_OBJECT_0 = 0x00000000 170 WAIT_FAILED = 0xFFFFFFFF 171 172 // Access rights for process. 173 PROCESS_CREATE_PROCESS = 0x0080 174 PROCESS_CREATE_THREAD = 0x0002 175 PROCESS_DUP_HANDLE = 0x0040 176 PROCESS_QUERY_INFORMATION = 0x0400 177 PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 178 PROCESS_SET_INFORMATION = 0x0200 179 PROCESS_SET_QUOTA = 0x0100 180 PROCESS_SUSPEND_RESUME = 0x0800 181 PROCESS_TERMINATE = 0x0001 182 PROCESS_VM_OPERATION = 0x0008 183 PROCESS_VM_READ = 0x0010 184 PROCESS_VM_WRITE = 0x0020 185 186 // Access rights for thread. 187 THREAD_DIRECT_IMPERSONATION = 0x0200 188 THREAD_GET_CONTEXT = 0x0008 189 THREAD_IMPERSONATE = 0x0100 190 THREAD_QUERY_INFORMATION = 0x0040 191 THREAD_QUERY_LIMITED_INFORMATION = 0x0800 192 THREAD_SET_CONTEXT = 0x0010 193 THREAD_SET_INFORMATION = 0x0020 194 THREAD_SET_LIMITED_INFORMATION = 0x0400 195 THREAD_SET_THREAD_TOKEN = 0x0080 196 THREAD_SUSPEND_RESUME = 0x0002 197 THREAD_TERMINATE = 0x0001 198 199 FILE_MAP_COPY = 0x01 200 FILE_MAP_WRITE = 0x02 201 FILE_MAP_READ = 0x04 202 FILE_MAP_EXECUTE = 0x20 203 204 CTRL_C_EVENT = 0 205 CTRL_BREAK_EVENT = 1 206 CTRL_CLOSE_EVENT = 2 207 CTRL_LOGOFF_EVENT = 5 208 CTRL_SHUTDOWN_EVENT = 6 209 210 // Windows reserves errors >= 1<<29 for application use. 211 APPLICATION_ERROR = 1 << 29 212) 213 214const ( 215 // Process creation flags. 216 CREATE_BREAKAWAY_FROM_JOB = 0x01000000 217 CREATE_DEFAULT_ERROR_MODE = 0x04000000 218 CREATE_NEW_CONSOLE = 0x00000010 219 CREATE_NEW_PROCESS_GROUP = 0x00000200 220 CREATE_NO_WINDOW = 0x08000000 221 CREATE_PROTECTED_PROCESS = 0x00040000 222 CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 223 CREATE_SEPARATE_WOW_VDM = 0x00000800 224 CREATE_SHARED_WOW_VDM = 0x00001000 225 CREATE_SUSPENDED = 0x00000004 226 CREATE_UNICODE_ENVIRONMENT = 0x00000400 227 DEBUG_ONLY_THIS_PROCESS = 0x00000002 228 DEBUG_PROCESS = 0x00000001 229 DETACHED_PROCESS = 0x00000008 230 EXTENDED_STARTUPINFO_PRESENT = 0x00080000 231 INHERIT_PARENT_AFFINITY = 0x00010000 232) 233 234const ( 235 // attributes for ProcThreadAttributeList 236 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 237 PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 238 PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 239 PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 240 PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 241 PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 242 PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 243 PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b 244) 245 246const ( 247 // flags for CreateToolhelp32Snapshot 248 TH32CS_SNAPHEAPLIST = 0x01 249 TH32CS_SNAPPROCESS = 0x02 250 TH32CS_SNAPTHREAD = 0x04 251 TH32CS_SNAPMODULE = 0x08 252 TH32CS_SNAPMODULE32 = 0x10 253 TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD 254 TH32CS_INHERIT = 0x80000000 255) 256 257const ( 258 // flags for EnumProcessModulesEx 259 LIST_MODULES_32BIT = 0x01 260 LIST_MODULES_64BIT = 0x02 261 LIST_MODULES_ALL = 0x03 262 LIST_MODULES_DEFAULT = 0x00 263) 264 265const ( 266 // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW 267 FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 268 FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 269 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 270 FILE_NOTIFY_CHANGE_SIZE = 0x008 271 FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 272 FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 273 FILE_NOTIFY_CHANGE_CREATION = 0x040 274 FILE_NOTIFY_CHANGE_SECURITY = 0x100 275) 276 277const ( 278 // do not reorder 279 FILE_ACTION_ADDED = iota + 1 280 FILE_ACTION_REMOVED 281 FILE_ACTION_MODIFIED 282 FILE_ACTION_RENAMED_OLD_NAME 283 FILE_ACTION_RENAMED_NEW_NAME 284) 285 286const ( 287 // wincrypt.h 288 /* certenrolld_begin -- PROV_RSA_*/ 289 PROV_RSA_FULL = 1 290 PROV_RSA_SIG = 2 291 PROV_DSS = 3 292 PROV_FORTEZZA = 4 293 PROV_MS_EXCHANGE = 5 294 PROV_SSL = 6 295 PROV_RSA_SCHANNEL = 12 296 PROV_DSS_DH = 13 297 PROV_EC_ECDSA_SIG = 14 298 PROV_EC_ECNRA_SIG = 15 299 PROV_EC_ECDSA_FULL = 16 300 PROV_EC_ECNRA_FULL = 17 301 PROV_DH_SCHANNEL = 18 302 PROV_SPYRUS_LYNKS = 20 303 PROV_RNG = 21 304 PROV_INTEL_SEC = 22 305 PROV_REPLACE_OWF = 23 306 PROV_RSA_AES = 24 307 308 /* dwFlags definitions for CryptAcquireContext */ 309 CRYPT_VERIFYCONTEXT = 0xF0000000 310 CRYPT_NEWKEYSET = 0x00000008 311 CRYPT_DELETEKEYSET = 0x00000010 312 CRYPT_MACHINE_KEYSET = 0x00000020 313 CRYPT_SILENT = 0x00000040 314 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 315 316 /* Flags for PFXImportCertStore */ 317 CRYPT_EXPORTABLE = 0x00000001 318 CRYPT_USER_PROTECTED = 0x00000002 319 CRYPT_USER_KEYSET = 0x00001000 320 PKCS12_PREFER_CNG_KSP = 0x00000100 321 PKCS12_ALWAYS_CNG_KSP = 0x00000200 322 PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000 323 PKCS12_NO_PERSIST_KEY = 0x00008000 324 PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 325 326 /* Flags for CryptAcquireCertificatePrivateKey */ 327 CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 328 CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 329 CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 330 CRYPT_ACQUIRE_NO_HEALING = 0x00000008 331 CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 332 CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 333 CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 334 CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 335 CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 336 CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 337 338 /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ 339 AT_KEYEXCHANGE = 1 340 AT_SIGNATURE = 2 341 CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF 342 343 /* Default usage match type is AND with value zero */ 344 USAGE_MATCH_TYPE_AND = 0 345 USAGE_MATCH_TYPE_OR = 1 346 347 /* msgAndCertEncodingType values for CertOpenStore function */ 348 X509_ASN_ENCODING = 0x00000001 349 PKCS_7_ASN_ENCODING = 0x00010000 350 351 /* storeProvider values for CertOpenStore function */ 352 CERT_STORE_PROV_MSG = 1 353 CERT_STORE_PROV_MEMORY = 2 354 CERT_STORE_PROV_FILE = 3 355 CERT_STORE_PROV_REG = 4 356 CERT_STORE_PROV_PKCS7 = 5 357 CERT_STORE_PROV_SERIALIZED = 6 358 CERT_STORE_PROV_FILENAME_A = 7 359 CERT_STORE_PROV_FILENAME_W = 8 360 CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W 361 CERT_STORE_PROV_SYSTEM_A = 9 362 CERT_STORE_PROV_SYSTEM_W = 10 363 CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W 364 CERT_STORE_PROV_COLLECTION = 11 365 CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 366 CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 367 CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W 368 CERT_STORE_PROV_PHYSICAL_W = 14 369 CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W 370 CERT_STORE_PROV_SMART_CARD_W = 15 371 CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W 372 CERT_STORE_PROV_LDAP_W = 16 373 CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W 374 CERT_STORE_PROV_PKCS12 = 17 375 376 /* store characteristics (low WORD of flag) for CertOpenStore function */ 377 CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 378 CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 379 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 380 CERT_STORE_DELETE_FLAG = 0x00000010 381 CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 382 CERT_STORE_SHARE_STORE_FLAG = 0x00000040 383 CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 384 CERT_STORE_MANIFOLD_FLAG = 0x00000100 385 CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 386 CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 387 CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 388 CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 389 CERT_STORE_CREATE_NEW_FLAG = 0x00002000 390 CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 391 CERT_STORE_READONLY_FLAG = 0x00008000 392 393 /* store locations (high WORD of flag) for CertOpenStore function */ 394 CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 395 CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 396 CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 397 CERT_SYSTEM_STORE_SERVICES = 0x00050000 398 CERT_SYSTEM_STORE_USERS = 0x00060000 399 CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 400 CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 401 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 402 CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 403 CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 404 405 /* Miscellaneous high-WORD flags for CertOpenStore function */ 406 CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 407 CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 408 CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 409 CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 410 CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 411 CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 412 CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 413 CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 414 CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 415 CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 416 CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 417 418 /* addDisposition values for CertAddCertificateContextToStore function */ 419 CERT_STORE_ADD_NEW = 1 420 CERT_STORE_ADD_USE_EXISTING = 2 421 CERT_STORE_ADD_REPLACE_EXISTING = 3 422 CERT_STORE_ADD_ALWAYS = 4 423 CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 424 CERT_STORE_ADD_NEWER = 6 425 CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 426 427 /* ErrorStatus values for CertTrustStatus struct */ 428 CERT_TRUST_NO_ERROR = 0x00000000 429 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 430 CERT_TRUST_IS_REVOKED = 0x00000004 431 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 432 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 433 CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 434 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 435 CERT_TRUST_IS_CYCLIC = 0x00000080 436 CERT_TRUST_INVALID_EXTENSION = 0x00000100 437 CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 438 CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 439 CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 440 CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 441 CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 442 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 443 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 444 CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 445 CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 446 CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 447 CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 448 CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 449 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 450 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 451 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 452 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 453 454 /* InfoStatus values for CertTrustStatus struct */ 455 CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 456 CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 457 CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 458 CERT_TRUST_IS_SELF_SIGNED = 0x00000008 459 CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 460 CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 461 CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 462 CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 463 CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 464 CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 465 CERT_TRUST_IS_CA_TRUSTED = 0x00004000 466 CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 467 468 /* Certificate Information Flags */ 469 CERT_INFO_VERSION_FLAG = 1 470 CERT_INFO_SERIAL_NUMBER_FLAG = 2 471 CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 472 CERT_INFO_ISSUER_FLAG = 4 473 CERT_INFO_NOT_BEFORE_FLAG = 5 474 CERT_INFO_NOT_AFTER_FLAG = 6 475 CERT_INFO_SUBJECT_FLAG = 7 476 CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 477 CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 478 CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 479 CERT_INFO_EXTENSION_FLAG = 11 480 481 /* dwFindType for CertFindCertificateInStore */ 482 CERT_COMPARE_MASK = 0xFFFF 483 CERT_COMPARE_SHIFT = 16 484 CERT_COMPARE_ANY = 0 485 CERT_COMPARE_SHA1_HASH = 1 486 CERT_COMPARE_NAME = 2 487 CERT_COMPARE_ATTR = 3 488 CERT_COMPARE_MD5_HASH = 4 489 CERT_COMPARE_PROPERTY = 5 490 CERT_COMPARE_PUBLIC_KEY = 6 491 CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH 492 CERT_COMPARE_NAME_STR_A = 7 493 CERT_COMPARE_NAME_STR_W = 8 494 CERT_COMPARE_KEY_SPEC = 9 495 CERT_COMPARE_ENHKEY_USAGE = 10 496 CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE 497 CERT_COMPARE_SUBJECT_CERT = 11 498 CERT_COMPARE_ISSUER_OF = 12 499 CERT_COMPARE_EXISTING = 13 500 CERT_COMPARE_SIGNATURE_HASH = 14 501 CERT_COMPARE_KEY_IDENTIFIER = 15 502 CERT_COMPARE_CERT_ID = 16 503 CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 504 CERT_COMPARE_PUBKEY_MD5_HASH = 18 505 CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 506 CERT_COMPARE_HASH_STR = 20 507 CERT_COMPARE_HAS_PRIVATE_KEY = 21 508 CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) 509 CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) 510 CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) 511 CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) 512 CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) 513 CERT_FIND_HASH = CERT_FIND_SHA1_HASH 514 CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) 515 CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) 516 CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) 517 CERT_FIND_SUBJECT_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) 518 CERT_FIND_ISSUER_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) 519 CERT_FIND_ISSUER_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) 520 CERT_FIND_SUBJECT_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) 521 CERT_FIND_SUBJECT_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) 522 CERT_FIND_SUBJECT_STR = CERT_FIND_SUBJECT_STR_W 523 CERT_FIND_ISSUER_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) 524 CERT_FIND_ISSUER_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) 525 CERT_FIND_ISSUER_STR = CERT_FIND_ISSUER_STR_W 526 CERT_FIND_KEY_SPEC = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT) 527 CERT_FIND_ENHKEY_USAGE = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT) 528 CERT_FIND_CTL_USAGE = CERT_FIND_ENHKEY_USAGE 529 CERT_FIND_SUBJECT_CERT = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT) 530 CERT_FIND_ISSUER_OF = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT) 531 CERT_FIND_EXISTING = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT) 532 CERT_FIND_CERT_ID = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT) 533 CERT_FIND_CROSS_CERT_DIST_POINTS = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT) 534 CERT_FIND_PUBKEY_MD5_HASH = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT) 535 CERT_FIND_SUBJECT_INFO_ACCESS = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT) 536 CERT_FIND_HASH_STR = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT) 537 CERT_FIND_HAS_PRIVATE_KEY = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT) 538 CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 0x1 539 CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 0x2 540 CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4 541 CERT_FIND_NO_ENHKEY_USAGE_FLAG = 0x8 542 CERT_FIND_OR_ENHKEY_USAGE_FLAG = 0x10 543 CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 0x20 544 CERT_FIND_OPTIONAL_CTL_USAGE_FLAG = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 545 CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 546 CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 547 CERT_FIND_NO_CTL_USAGE_FLAG = CERT_FIND_NO_ENHKEY_USAGE_FLAG 548 CERT_FIND_OR_CTL_USAGE_FLAG = CERT_FIND_OR_ENHKEY_USAGE_FLAG 549 CERT_FIND_VALID_CTL_USAGE_FLAG = CERT_FIND_VALID_ENHKEY_USAGE_FLAG 550 551 /* policyOID values for CertVerifyCertificateChainPolicy function */ 552 CERT_CHAIN_POLICY_BASE = 1 553 CERT_CHAIN_POLICY_AUTHENTICODE = 2 554 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 555 CERT_CHAIN_POLICY_SSL = 4 556 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 557 CERT_CHAIN_POLICY_NT_AUTH = 6 558 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 559 CERT_CHAIN_POLICY_EV = 8 560 CERT_CHAIN_POLICY_SSL_F12 = 9 561 562 /* flag for dwFindType CertFindChainInStore */ 563 CERT_CHAIN_FIND_BY_ISSUER = 1 564 565 /* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */ 566 CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 0x0001 567 CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 0x0002 568 CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004 569 CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 0x0008 570 CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 0x4000 571 CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 0x8000 572 573 /* Certificate Store close flags */ 574 CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001 575 CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002 576 577 /* CryptQueryObject object type */ 578 CERT_QUERY_OBJECT_FILE = 1 579 CERT_QUERY_OBJECT_BLOB = 2 580 581 /* CryptQueryObject content type flags */ 582 CERT_QUERY_CONTENT_CERT = 1 583 CERT_QUERY_CONTENT_CTL = 2 584 CERT_QUERY_CONTENT_CRL = 3 585 CERT_QUERY_CONTENT_SERIALIZED_STORE = 4 586 CERT_QUERY_CONTENT_SERIALIZED_CERT = 5 587 CERT_QUERY_CONTENT_SERIALIZED_CTL = 6 588 CERT_QUERY_CONTENT_SERIALIZED_CRL = 7 589 CERT_QUERY_CONTENT_PKCS7_SIGNED = 8 590 CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9 591 CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10 592 CERT_QUERY_CONTENT_PKCS10 = 11 593 CERT_QUERY_CONTENT_PFX = 12 594 CERT_QUERY_CONTENT_CERT_PAIR = 13 595 CERT_QUERY_CONTENT_PFX_AND_LOAD = 14 596 CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT) 597 CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL) 598 CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL) 599 CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE) 600 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT) 601 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL) 602 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL) 603 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED) 604 CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED) 605 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED) 606 CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10) 607 CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX) 608 CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR) 609 CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD) 610 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) 611 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) 612 613 /* CryptQueryObject format type flags */ 614 CERT_QUERY_FORMAT_BINARY = 1 615 CERT_QUERY_FORMAT_BASE64_ENCODED = 2 616 CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3 617 CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY) 618 CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED) 619 CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) 620 CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED) 621 622 /* CertGetNameString name types */ 623 CERT_NAME_EMAIL_TYPE = 1 624 CERT_NAME_RDN_TYPE = 2 625 CERT_NAME_ATTR_TYPE = 3 626 CERT_NAME_SIMPLE_DISPLAY_TYPE = 4 627 CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5 628 CERT_NAME_DNS_TYPE = 6 629 CERT_NAME_URL_TYPE = 7 630 CERT_NAME_UPN_TYPE = 8 631 632 /* CertGetNameString flags */ 633 CERT_NAME_ISSUER_FLAG = 0x1 634 CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000 635 CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2 636 CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000 637 638 /* AuthType values for SSLExtraCertChainPolicyPara struct */ 639 AUTHTYPE_CLIENT = 1 640 AUTHTYPE_SERVER = 2 641 642 /* Checks values for SSLExtraCertChainPolicyPara struct */ 643 SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 644 SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 645 SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 646 SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 647 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 648 649 /* Flags for Crypt[Un]ProtectData */ 650 CRYPTPROTECT_UI_FORBIDDEN = 0x1 651 CRYPTPROTECT_LOCAL_MACHINE = 0x4 652 CRYPTPROTECT_CRED_SYNC = 0x8 653 CRYPTPROTECT_AUDIT = 0x10 654 CRYPTPROTECT_NO_RECOVERY = 0x20 655 CRYPTPROTECT_VERIFY_PROTECTION = 0x40 656 CRYPTPROTECT_CRED_REGENERATE = 0x80 657 658 /* Flags for CryptProtectPromptStruct */ 659 CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1 660 CRYPTPROTECT_PROMPT_ON_PROTECT = 2 661 CRYPTPROTECT_PROMPT_RESERVED = 4 662 CRYPTPROTECT_PROMPT_STRONG = 8 663 CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16 664) 665 666const ( 667 // flags for SetErrorMode 668 SEM_FAILCRITICALERRORS = 0x0001 669 SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 670 SEM_NOGPFAULTERRORBOX = 0x0002 671 SEM_NOOPENFILEERRORBOX = 0x8000 672) 673 674const ( 675 // Priority class. 676 ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 677 BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 678 HIGH_PRIORITY_CLASS = 0x00000080 679 IDLE_PRIORITY_CLASS = 0x00000040 680 NORMAL_PRIORITY_CLASS = 0x00000020 681 PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000 682 PROCESS_MODE_BACKGROUND_END = 0x00200000 683 REALTIME_PRIORITY_CLASS = 0x00000100 684) 685 686/* wintrust.h constants for WinVerifyTrustEx */ 687const ( 688 WTD_UI_ALL = 1 689 WTD_UI_NONE = 2 690 WTD_UI_NOBAD = 3 691 WTD_UI_NOGOOD = 4 692 693 WTD_REVOKE_NONE = 0 694 WTD_REVOKE_WHOLECHAIN = 1 695 696 WTD_CHOICE_FILE = 1 697 WTD_CHOICE_CATALOG = 2 698 WTD_CHOICE_BLOB = 3 699 WTD_CHOICE_SIGNER = 4 700 WTD_CHOICE_CERT = 5 701 702 WTD_STATEACTION_IGNORE = 0x00000000 703 WTD_STATEACTION_VERIFY = 0x00000001 704 WTD_STATEACTION_CLOSE = 0x00000002 705 WTD_STATEACTION_AUTO_CACHE = 0x00000003 706 WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004 707 708 WTD_USE_IE4_TRUST_FLAG = 0x1 709 WTD_NO_IE4_CHAIN_FLAG = 0x2 710 WTD_NO_POLICY_USAGE_FLAG = 0x4 711 WTD_REVOCATION_CHECK_NONE = 0x10 712 WTD_REVOCATION_CHECK_END_CERT = 0x20 713 WTD_REVOCATION_CHECK_CHAIN = 0x40 714 WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80 715 WTD_SAFER_FLAG = 0x100 716 WTD_HASH_ONLY_FLAG = 0x200 717 WTD_USE_DEFAULT_OSVER_CHECK = 0x400 718 WTD_LIFETIME_SIGNING_FLAG = 0x800 719 WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000 720 WTD_DISABLE_MD2_MD4 = 0x2000 721 WTD_MOTW = 0x4000 722 723 WTD_UICONTEXT_EXECUTE = 0 724 WTD_UICONTEXT_INSTALL = 1 725) 726 727var ( 728 OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") 729 OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") 730 OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") 731 732 WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{ 733 Data1: 0xaac56b, 734 Data2: 0xcd44, 735 Data3: 0x11d0, 736 Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee}, 737 } 738) 739 740// Pointer represents a pointer to an arbitrary Windows type. 741// 742// Pointer-typed fields may point to one of many different types. It's 743// up to the caller to provide a pointer to the appropriate type, cast 744// to Pointer. The caller must obey the unsafe.Pointer rules while 745// doing so. 746type Pointer *struct{} 747 748// Invented values to support what package os expects. 749type Timeval struct { 750 Sec int32 751 Usec int32 752} 753 754func (tv *Timeval) Nanoseconds() int64 { 755 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 756} 757 758func NsecToTimeval(nsec int64) (tv Timeval) { 759 tv.Sec = int32(nsec / 1e9) 760 tv.Usec = int32(nsec % 1e9 / 1e3) 761 return 762} 763 764type Overlapped struct { 765 Internal uintptr 766 InternalHigh uintptr 767 Offset uint32 768 OffsetHigh uint32 769 HEvent Handle 770} 771 772type FileNotifyInformation struct { 773 NextEntryOffset uint32 774 Action uint32 775 FileNameLength uint32 776 FileName uint16 777} 778 779type Filetime struct { 780 LowDateTime uint32 781 HighDateTime uint32 782} 783 784// Nanoseconds returns Filetime ft in nanoseconds 785// since Epoch (00:00:00 UTC, January 1, 1970). 786func (ft *Filetime) Nanoseconds() int64 { 787 // 100-nanosecond intervals since January 1, 1601 788 nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) 789 // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) 790 nsec -= 116444736000000000 791 // convert into nanoseconds 792 nsec *= 100 793 return nsec 794} 795 796func NsecToFiletime(nsec int64) (ft Filetime) { 797 // convert into 100-nanosecond 798 nsec /= 100 799 // change starting time to January 1, 1601 800 nsec += 116444736000000000 801 // split into high / low 802 ft.LowDateTime = uint32(nsec & 0xffffffff) 803 ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) 804 return ft 805} 806 807type Win32finddata struct { 808 FileAttributes uint32 809 CreationTime Filetime 810 LastAccessTime Filetime 811 LastWriteTime Filetime 812 FileSizeHigh uint32 813 FileSizeLow uint32 814 Reserved0 uint32 815 Reserved1 uint32 816 FileName [MAX_PATH - 1]uint16 817 AlternateFileName [13]uint16 818} 819 820// This is the actual system call structure. 821// Win32finddata is what we committed to in Go 1. 822type win32finddata1 struct { 823 FileAttributes uint32 824 CreationTime Filetime 825 LastAccessTime Filetime 826 LastWriteTime Filetime 827 FileSizeHigh uint32 828 FileSizeLow uint32 829 Reserved0 uint32 830 Reserved1 uint32 831 FileName [MAX_PATH]uint16 832 AlternateFileName [14]uint16 833 834 // The Microsoft documentation for this struct¹ describes three additional 835 // fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields 836 // are empirically only present in the macOS port of the Win32 API,² and thus 837 // not needed for binaries built for Windows. 838 // 839 // ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe 840 // ² https://golang.org/issue/42637#issuecomment-760715755. 841} 842 843func copyFindData(dst *Win32finddata, src *win32finddata1) { 844 dst.FileAttributes = src.FileAttributes 845 dst.CreationTime = src.CreationTime 846 dst.LastAccessTime = src.LastAccessTime 847 dst.LastWriteTime = src.LastWriteTime 848 dst.FileSizeHigh = src.FileSizeHigh 849 dst.FileSizeLow = src.FileSizeLow 850 dst.Reserved0 = src.Reserved0 851 dst.Reserved1 = src.Reserved1 852 853 // The src is 1 element bigger than dst, but it must be NUL. 854 copy(dst.FileName[:], src.FileName[:]) 855 copy(dst.AlternateFileName[:], src.AlternateFileName[:]) 856} 857 858type ByHandleFileInformation struct { 859 FileAttributes uint32 860 CreationTime Filetime 861 LastAccessTime Filetime 862 LastWriteTime Filetime 863 VolumeSerialNumber uint32 864 FileSizeHigh uint32 865 FileSizeLow uint32 866 NumberOfLinks uint32 867 FileIndexHigh uint32 868 FileIndexLow uint32 869} 870 871const ( 872 GetFileExInfoStandard = 0 873 GetFileExMaxInfoLevel = 1 874) 875 876type Win32FileAttributeData struct { 877 FileAttributes uint32 878 CreationTime Filetime 879 LastAccessTime Filetime 880 LastWriteTime Filetime 881 FileSizeHigh uint32 882 FileSizeLow uint32 883} 884 885// ShowWindow constants 886const ( 887 // winuser.h 888 SW_HIDE = 0 889 SW_NORMAL = 1 890 SW_SHOWNORMAL = 1 891 SW_SHOWMINIMIZED = 2 892 SW_SHOWMAXIMIZED = 3 893 SW_MAXIMIZE = 3 894 SW_SHOWNOACTIVATE = 4 895 SW_SHOW = 5 896 SW_MINIMIZE = 6 897 SW_SHOWMINNOACTIVE = 7 898 SW_SHOWNA = 8 899 SW_RESTORE = 9 900 SW_SHOWDEFAULT = 10 901 SW_FORCEMINIMIZE = 11 902) 903 904type StartupInfo struct { 905 Cb uint32 906 _ *uint16 907 Desktop *uint16 908 Title *uint16 909 X uint32 910 Y uint32 911 XSize uint32 912 YSize uint32 913 XCountChars uint32 914 YCountChars uint32 915 FillAttribute uint32 916 Flags uint32 917 ShowWindow uint16 918 _ uint16 919 _ *byte 920 StdInput Handle 921 StdOutput Handle 922 StdErr Handle 923} 924 925type StartupInfoEx struct { 926 StartupInfo 927 ProcThreadAttributeList *ProcThreadAttributeList 928} 929 930// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST. 931// 932// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update 933// it with ProcThreadAttributeListContainer.Update, free its memory using 934// ProcThreadAttributeListContainer.Delete, and access the list itself using 935// ProcThreadAttributeListContainer.List. 936type ProcThreadAttributeList struct{} 937 938type ProcThreadAttributeListContainer struct { 939 data *ProcThreadAttributeList 940 heapAllocations []uintptr 941} 942 943type ProcessInformation struct { 944 Process Handle 945 Thread Handle 946 ProcessId uint32 947 ThreadId uint32 948} 949 950type ProcessEntry32 struct { 951 Size uint32 952 Usage uint32 953 ProcessID uint32 954 DefaultHeapID uintptr 955 ModuleID uint32 956 Threads uint32 957 ParentProcessID uint32 958 PriClassBase int32 959 Flags uint32 960 ExeFile [MAX_PATH]uint16 961} 962 963type ThreadEntry32 struct { 964 Size uint32 965 Usage uint32 966 ThreadID uint32 967 OwnerProcessID uint32 968 BasePri int32 969 DeltaPri int32 970 Flags uint32 971} 972 973type Systemtime struct { 974 Year uint16 975 Month uint16 976 DayOfWeek uint16 977 Day uint16 978 Hour uint16 979 Minute uint16 980 Second uint16 981 Milliseconds uint16 982} 983 984type Timezoneinformation struct { 985 Bias int32 986 StandardName [32]uint16 987 StandardDate Systemtime 988 StandardBias int32 989 DaylightName [32]uint16 990 DaylightDate Systemtime 991 DaylightBias int32 992} 993 994// Socket related. 995 996const ( 997 AF_UNSPEC = 0 998 AF_UNIX = 1 999 AF_INET = 2 1000 AF_NETBIOS = 17 1001 AF_INET6 = 23 1002 AF_IRDA = 26 1003 AF_BTH = 32 1004 1005 SOCK_STREAM = 1 1006 SOCK_DGRAM = 2 1007 SOCK_RAW = 3 1008 SOCK_RDM = 4 1009 SOCK_SEQPACKET = 5 1010 1011 IPPROTO_IP = 0 1012 IPPROTO_ICMP = 1 1013 IPPROTO_IGMP = 2 1014 BTHPROTO_RFCOMM = 3 1015 IPPROTO_TCP = 6 1016 IPPROTO_UDP = 17 1017 IPPROTO_IPV6 = 41 1018 IPPROTO_ICMPV6 = 58 1019 IPPROTO_RM = 113 1020 1021 SOL_SOCKET = 0xffff 1022 SO_REUSEADDR = 4 1023 SO_KEEPALIVE = 8 1024 SO_DONTROUTE = 16 1025 SO_BROADCAST = 32 1026 SO_LINGER = 128 1027 SO_RCVBUF = 0x1002 1028 SO_RCVTIMEO = 0x1006 1029 SO_SNDBUF = 0x1001 1030 SO_UPDATE_ACCEPT_CONTEXT = 0x700b 1031 SO_UPDATE_CONNECT_CONTEXT = 0x7010 1032 1033 IOC_OUT = 0x40000000 1034 IOC_IN = 0x80000000 1035 IOC_VENDOR = 0x18000000 1036 IOC_INOUT = IOC_IN | IOC_OUT 1037 IOC_WS2 = 0x08000000 1038 SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 1039 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 1040 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 1041 1042 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 1043 1044 IP_HDRINCL = 0x2 1045 IP_TOS = 0x3 1046 IP_TTL = 0x4 1047 IP_MULTICAST_IF = 0x9 1048 IP_MULTICAST_TTL = 0xa 1049 IP_MULTICAST_LOOP = 0xb 1050 IP_ADD_MEMBERSHIP = 0xc 1051 IP_DROP_MEMBERSHIP = 0xd 1052 IP_PKTINFO = 0x13 1053 1054 IPV6_V6ONLY = 0x1b 1055 IPV6_UNICAST_HOPS = 0x4 1056 IPV6_MULTICAST_IF = 0x9 1057 IPV6_MULTICAST_HOPS = 0xa 1058 IPV6_MULTICAST_LOOP = 0xb 1059 IPV6_JOIN_GROUP = 0xc 1060 IPV6_LEAVE_GROUP = 0xd 1061 IPV6_PKTINFO = 0x13 1062 1063 MSG_OOB = 0x1 1064 MSG_PEEK = 0x2 1065 MSG_DONTROUTE = 0x4 1066 MSG_WAITALL = 0x8 1067 1068 MSG_TRUNC = 0x0100 1069 MSG_CTRUNC = 0x0200 1070 MSG_BCAST = 0x0400 1071 MSG_MCAST = 0x0800 1072 1073 SOMAXCONN = 0x7fffffff 1074 1075 TCP_NODELAY = 1 1076 1077 SHUT_RD = 0 1078 SHUT_WR = 1 1079 SHUT_RDWR = 2 1080 1081 WSADESCRIPTION_LEN = 256 1082 WSASYS_STATUS_LEN = 128 1083) 1084 1085type WSABuf struct { 1086 Len uint32 1087 Buf *byte 1088} 1089 1090type WSAMsg struct { 1091 Name *syscall.RawSockaddrAny 1092 Namelen int32 1093 Buffers *WSABuf 1094 BufferCount uint32 1095 Control WSABuf 1096 Flags uint32 1097} 1098 1099// Flags for WSASocket 1100const ( 1101 WSA_FLAG_OVERLAPPED = 0x01 1102 WSA_FLAG_MULTIPOINT_C_ROOT = 0x02 1103 WSA_FLAG_MULTIPOINT_C_LEAF = 0x04 1104 WSA_FLAG_MULTIPOINT_D_ROOT = 0x08 1105 WSA_FLAG_MULTIPOINT_D_LEAF = 0x10 1106 WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40 1107 WSA_FLAG_NO_HANDLE_INHERIT = 0x80 1108 WSA_FLAG_REGISTERED_IO = 0x100 1109) 1110 1111// Invented values to support what package os expects. 1112const ( 1113 S_IFMT = 0x1f000 1114 S_IFIFO = 0x1000 1115 S_IFCHR = 0x2000 1116 S_IFDIR = 0x4000 1117 S_IFBLK = 0x6000 1118 S_IFREG = 0x8000 1119 S_IFLNK = 0xa000 1120 S_IFSOCK = 0xc000 1121 S_ISUID = 0x800 1122 S_ISGID = 0x400 1123 S_ISVTX = 0x200 1124 S_IRUSR = 0x100 1125 S_IWRITE = 0x80 1126 S_IWUSR = 0x80 1127 S_IXUSR = 0x40 1128) 1129 1130const ( 1131 FILE_TYPE_CHAR = 0x0002 1132 FILE_TYPE_DISK = 0x0001 1133 FILE_TYPE_PIPE = 0x0003 1134 FILE_TYPE_REMOTE = 0x8000 1135 FILE_TYPE_UNKNOWN = 0x0000 1136) 1137 1138type Hostent struct { 1139 Name *byte 1140 Aliases **byte 1141 AddrType uint16 1142 Length uint16 1143 AddrList **byte 1144} 1145 1146type Protoent struct { 1147 Name *byte 1148 Aliases **byte 1149 Proto uint16 1150} 1151 1152const ( 1153 DNS_TYPE_A = 0x0001 1154 DNS_TYPE_NS = 0x0002 1155 DNS_TYPE_MD = 0x0003 1156 DNS_TYPE_MF = 0x0004 1157 DNS_TYPE_CNAME = 0x0005 1158 DNS_TYPE_SOA = 0x0006 1159 DNS_TYPE_MB = 0x0007 1160 DNS_TYPE_MG = 0x0008 1161 DNS_TYPE_MR = 0x0009 1162 DNS_TYPE_NULL = 0x000a 1163 DNS_TYPE_WKS = 0x000b 1164 DNS_TYPE_PTR = 0x000c 1165 DNS_TYPE_HINFO = 0x000d 1166 DNS_TYPE_MINFO = 0x000e 1167 DNS_TYPE_MX = 0x000f 1168 DNS_TYPE_TEXT = 0x0010 1169 DNS_TYPE_RP = 0x0011 1170 DNS_TYPE_AFSDB = 0x0012 1171 DNS_TYPE_X25 = 0x0013 1172 DNS_TYPE_ISDN = 0x0014 1173 DNS_TYPE_RT = 0x0015 1174 DNS_TYPE_NSAP = 0x0016 1175 DNS_TYPE_NSAPPTR = 0x0017 1176 DNS_TYPE_SIG = 0x0018 1177 DNS_TYPE_KEY = 0x0019 1178 DNS_TYPE_PX = 0x001a 1179 DNS_TYPE_GPOS = 0x001b 1180 DNS_TYPE_AAAA = 0x001c 1181 DNS_TYPE_LOC = 0x001d 1182 DNS_TYPE_NXT = 0x001e 1183 DNS_TYPE_EID = 0x001f 1184 DNS_TYPE_NIMLOC = 0x0020 1185 DNS_TYPE_SRV = 0x0021 1186 DNS_TYPE_ATMA = 0x0022 1187 DNS_TYPE_NAPTR = 0x0023 1188 DNS_TYPE_KX = 0x0024 1189 DNS_TYPE_CERT = 0x0025 1190 DNS_TYPE_A6 = 0x0026 1191 DNS_TYPE_DNAME = 0x0027 1192 DNS_TYPE_SINK = 0x0028 1193 DNS_TYPE_OPT = 0x0029 1194 DNS_TYPE_DS = 0x002B 1195 DNS_TYPE_RRSIG = 0x002E 1196 DNS_TYPE_NSEC = 0x002F 1197 DNS_TYPE_DNSKEY = 0x0030 1198 DNS_TYPE_DHCID = 0x0031 1199 DNS_TYPE_UINFO = 0x0064 1200 DNS_TYPE_UID = 0x0065 1201 DNS_TYPE_GID = 0x0066 1202 DNS_TYPE_UNSPEC = 0x0067 1203 DNS_TYPE_ADDRS = 0x00f8 1204 DNS_TYPE_TKEY = 0x00f9 1205 DNS_TYPE_TSIG = 0x00fa 1206 DNS_TYPE_IXFR = 0x00fb 1207 DNS_TYPE_AXFR = 0x00fc 1208 DNS_TYPE_MAILB = 0x00fd 1209 DNS_TYPE_MAILA = 0x00fe 1210 DNS_TYPE_ALL = 0x00ff 1211 DNS_TYPE_ANY = 0x00ff 1212 DNS_TYPE_WINS = 0xff01 1213 DNS_TYPE_WINSR = 0xff02 1214 DNS_TYPE_NBSTAT = 0xff01 1215) 1216 1217const ( 1218 // flags inside DNSRecord.Dw 1219 DnsSectionQuestion = 0x0000 1220 DnsSectionAnswer = 0x0001 1221 DnsSectionAuthority = 0x0002 1222 DnsSectionAdditional = 0x0003 1223) 1224 1225type DNSSRVData struct { 1226 Target *uint16 1227 Priority uint16 1228 Weight uint16 1229 Port uint16 1230 Pad uint16 1231} 1232 1233type DNSPTRData struct { 1234 Host *uint16 1235} 1236 1237type DNSMXData struct { 1238 NameExchange *uint16 1239 Preference uint16 1240 Pad uint16 1241} 1242 1243type DNSTXTData struct { 1244 StringCount uint16 1245 StringArray [1]*uint16 1246} 1247 1248type DNSRecord struct { 1249 Next *DNSRecord 1250 Name *uint16 1251 Type uint16 1252 Length uint16 1253 Dw uint32 1254 Ttl uint32 1255 Reserved uint32 1256 Data [40]byte 1257} 1258 1259const ( 1260 TF_DISCONNECT = 1 1261 TF_REUSE_SOCKET = 2 1262 TF_WRITE_BEHIND = 4 1263 TF_USE_DEFAULT_WORKER = 0 1264 TF_USE_SYSTEM_THREAD = 16 1265 TF_USE_KERNEL_APC = 32 1266) 1267 1268type TransmitFileBuffers struct { 1269 Head uintptr 1270 HeadLength uint32 1271 Tail uintptr 1272 TailLength uint32 1273} 1274 1275const ( 1276 IFF_UP = 1 1277 IFF_BROADCAST = 2 1278 IFF_LOOPBACK = 4 1279 IFF_POINTTOPOINT = 8 1280 IFF_MULTICAST = 16 1281) 1282 1283const SIO_GET_INTERFACE_LIST = 0x4004747F 1284 1285// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. 1286// will be fixed to change variable type as suitable. 1287 1288type SockaddrGen [24]byte 1289 1290type InterfaceInfo struct { 1291 Flags uint32 1292 Address SockaddrGen 1293 BroadcastAddress SockaddrGen 1294 Netmask SockaddrGen 1295} 1296 1297type IpAddressString struct { 1298 String [16]byte 1299} 1300 1301type IpMaskString IpAddressString 1302 1303type IpAddrString struct { 1304 Next *IpAddrString 1305 IpAddress IpAddressString 1306 IpMask IpMaskString 1307 Context uint32 1308} 1309 1310const MAX_ADAPTER_NAME_LENGTH = 256 1311const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 1312const MAX_ADAPTER_ADDRESS_LENGTH = 8 1313 1314type IpAdapterInfo struct { 1315 Next *IpAdapterInfo 1316 ComboIndex uint32 1317 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte 1318 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte 1319 AddressLength uint32 1320 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte 1321 Index uint32 1322 Type uint32 1323 DhcpEnabled uint32 1324 CurrentIpAddress *IpAddrString 1325 IpAddressList IpAddrString 1326 GatewayList IpAddrString 1327 DhcpServer IpAddrString 1328 HaveWins bool 1329 PrimaryWinsServer IpAddrString 1330 SecondaryWinsServer IpAddrString 1331 LeaseObtained int64 1332 LeaseExpires int64 1333} 1334 1335const MAXLEN_PHYSADDR = 8 1336const MAX_INTERFACE_NAME_LEN = 256 1337const MAXLEN_IFDESCR = 256 1338 1339type MibIfRow struct { 1340 Name [MAX_INTERFACE_NAME_LEN]uint16 1341 Index uint32 1342 Type uint32 1343 Mtu uint32 1344 Speed uint32 1345 PhysAddrLen uint32 1346 PhysAddr [MAXLEN_PHYSADDR]byte 1347 AdminStatus uint32 1348 OperStatus uint32 1349 LastChange uint32 1350 InOctets uint32 1351 InUcastPkts uint32 1352 InNUcastPkts uint32 1353 InDiscards uint32 1354 InErrors uint32 1355 InUnknownProtos uint32 1356 OutOctets uint32 1357 OutUcastPkts uint32 1358 OutNUcastPkts uint32 1359 OutDiscards uint32 1360 OutErrors uint32 1361 OutQLen uint32 1362 DescrLen uint32 1363 Descr [MAXLEN_IFDESCR]byte 1364} 1365 1366type CertInfo struct { 1367 Version uint32 1368 SerialNumber CryptIntegerBlob 1369 SignatureAlgorithm CryptAlgorithmIdentifier 1370 Issuer CertNameBlob 1371 NotBefore Filetime 1372 NotAfter Filetime 1373 Subject CertNameBlob 1374 SubjectPublicKeyInfo CertPublicKeyInfo 1375 IssuerUniqueId CryptBitBlob 1376 SubjectUniqueId CryptBitBlob 1377 CountExtensions uint32 1378 Extensions *CertExtension 1379} 1380 1381type CertExtension struct { 1382 ObjId *byte 1383 Critical int32 1384 Value CryptObjidBlob 1385} 1386 1387type CryptAlgorithmIdentifier struct { 1388 ObjId *byte 1389 Parameters CryptObjidBlob 1390} 1391 1392type CertPublicKeyInfo struct { 1393 Algorithm CryptAlgorithmIdentifier 1394 PublicKey CryptBitBlob 1395} 1396 1397type DataBlob struct { 1398 Size uint32 1399 Data *byte 1400} 1401type CryptIntegerBlob DataBlob 1402type CryptUintBlob DataBlob 1403type CryptObjidBlob DataBlob 1404type CertNameBlob DataBlob 1405type CertRdnValueBlob DataBlob 1406type CertBlob DataBlob 1407type CrlBlob DataBlob 1408type CryptDataBlob DataBlob 1409type CryptHashBlob DataBlob 1410type CryptDigestBlob DataBlob 1411type CryptDerBlob DataBlob 1412type CryptAttrBlob DataBlob 1413 1414type CryptBitBlob struct { 1415 Size uint32 1416 Data *byte 1417 UnusedBits uint32 1418} 1419 1420type CertContext struct { 1421 EncodingType uint32 1422 EncodedCert *byte 1423 Length uint32 1424 CertInfo *CertInfo 1425 Store Handle 1426} 1427 1428type CertChainContext struct { 1429 Size uint32 1430 TrustStatus CertTrustStatus 1431 ChainCount uint32 1432 Chains **CertSimpleChain 1433 LowerQualityChainCount uint32 1434 LowerQualityChains **CertChainContext 1435 HasRevocationFreshnessTime uint32 1436 RevocationFreshnessTime uint32 1437} 1438 1439type CertTrustListInfo struct { 1440 // Not implemented 1441} 1442 1443type CertSimpleChain struct { 1444 Size uint32 1445 TrustStatus CertTrustStatus 1446 NumElements uint32 1447 Elements **CertChainElement 1448 TrustListInfo *CertTrustListInfo 1449 HasRevocationFreshnessTime uint32 1450 RevocationFreshnessTime uint32 1451} 1452 1453type CertChainElement struct { 1454 Size uint32 1455 CertContext *CertContext 1456 TrustStatus CertTrustStatus 1457 RevocationInfo *CertRevocationInfo 1458 IssuanceUsage *CertEnhKeyUsage 1459 ApplicationUsage *CertEnhKeyUsage 1460 ExtendedErrorInfo *uint16 1461} 1462 1463type CertRevocationCrlInfo struct { 1464 // Not implemented 1465} 1466 1467type CertRevocationInfo struct { 1468 Size uint32 1469 RevocationResult uint32 1470 RevocationOid *byte 1471 OidSpecificInfo Pointer 1472 HasFreshnessTime uint32 1473 FreshnessTime uint32 1474 CrlInfo *CertRevocationCrlInfo 1475} 1476 1477type CertTrustStatus struct { 1478 ErrorStatus uint32 1479 InfoStatus uint32 1480} 1481 1482type CertUsageMatch struct { 1483 Type uint32 1484 Usage CertEnhKeyUsage 1485} 1486 1487type CertEnhKeyUsage struct { 1488 Length uint32 1489 UsageIdentifiers **byte 1490} 1491 1492type CertChainPara struct { 1493 Size uint32 1494 RequestedUsage CertUsageMatch 1495 RequstedIssuancePolicy CertUsageMatch 1496 URLRetrievalTimeout uint32 1497 CheckRevocationFreshnessTime uint32 1498 RevocationFreshnessTime uint32 1499 CacheResync *Filetime 1500} 1501 1502type CertChainPolicyPara struct { 1503 Size uint32 1504 Flags uint32 1505 ExtraPolicyPara Pointer 1506} 1507 1508type SSLExtraCertChainPolicyPara struct { 1509 Size uint32 1510 AuthType uint32 1511 Checks uint32 1512 ServerName *uint16 1513} 1514 1515type CertChainPolicyStatus struct { 1516 Size uint32 1517 Error uint32 1518 ChainIndex uint32 1519 ElementIndex uint32 1520 ExtraPolicyStatus Pointer 1521} 1522 1523type CertPolicyInfo struct { 1524 Identifier *byte 1525 CountQualifiers uint32 1526 Qualifiers *CertPolicyQualifierInfo 1527} 1528 1529type CertPoliciesInfo struct { 1530 Count uint32 1531 PolicyInfos *CertPolicyInfo 1532} 1533 1534type CertPolicyQualifierInfo struct { 1535 // Not implemented 1536} 1537 1538type CertStrongSignPara struct { 1539 Size uint32 1540 InfoChoice uint32 1541 InfoOrSerializedInfoOrOID unsafe.Pointer 1542} 1543 1544type CryptProtectPromptStruct struct { 1545 Size uint32 1546 PromptFlags uint32 1547 App HWND 1548 Prompt *uint16 1549} 1550 1551type CertChainFindByIssuerPara struct { 1552 Size uint32 1553 UsageIdentifier *byte 1554 KeySpec uint32 1555 AcquirePrivateKeyFlags uint32 1556 IssuerCount uint32 1557 Issuer Pointer 1558 FindCallback Pointer 1559 FindArg Pointer 1560 IssuerChainIndex *uint32 1561 IssuerElementIndex *uint32 1562} 1563 1564type WinTrustData struct { 1565 Size uint32 1566 PolicyCallbackData uintptr 1567 SIPClientData uintptr 1568 UIChoice uint32 1569 RevocationChecks uint32 1570 UnionChoice uint32 1571 FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer 1572 StateAction uint32 1573 StateData Handle 1574 URLReference *uint16 1575 ProvFlags uint32 1576 UIContext uint32 1577 SignatureSettings *WinTrustSignatureSettings 1578} 1579 1580type WinTrustFileInfo struct { 1581 Size uint32 1582 FilePath *uint16 1583 File Handle 1584 KnownSubject *GUID 1585} 1586 1587type WinTrustSignatureSettings struct { 1588 Size uint32 1589 Index uint32 1590 Flags uint32 1591 SecondarySigs uint32 1592 VerifiedSigIndex uint32 1593 CryptoPolicy *CertStrongSignPara 1594} 1595 1596const ( 1597 // do not reorder 1598 HKEY_CLASSES_ROOT = 0x80000000 + iota 1599 HKEY_CURRENT_USER 1600 HKEY_LOCAL_MACHINE 1601 HKEY_USERS 1602 HKEY_PERFORMANCE_DATA 1603 HKEY_CURRENT_CONFIG 1604 HKEY_DYN_DATA 1605 1606 KEY_QUERY_VALUE = 1 1607 KEY_SET_VALUE = 2 1608 KEY_CREATE_SUB_KEY = 4 1609 KEY_ENUMERATE_SUB_KEYS = 8 1610 KEY_NOTIFY = 16 1611 KEY_CREATE_LINK = 32 1612 KEY_WRITE = 0x20006 1613 KEY_EXECUTE = 0x20019 1614 KEY_READ = 0x20019 1615 KEY_WOW64_64KEY = 0x0100 1616 KEY_WOW64_32KEY = 0x0200 1617 KEY_ALL_ACCESS = 0xf003f 1618) 1619 1620const ( 1621 // do not reorder 1622 REG_NONE = iota 1623 REG_SZ 1624 REG_EXPAND_SZ 1625 REG_BINARY 1626 REG_DWORD_LITTLE_ENDIAN 1627 REG_DWORD_BIG_ENDIAN 1628 REG_LINK 1629 REG_MULTI_SZ 1630 REG_RESOURCE_LIST 1631 REG_FULL_RESOURCE_DESCRIPTOR 1632 REG_RESOURCE_REQUIREMENTS_LIST 1633 REG_QWORD_LITTLE_ENDIAN 1634 REG_DWORD = REG_DWORD_LITTLE_ENDIAN 1635 REG_QWORD = REG_QWORD_LITTLE_ENDIAN 1636) 1637 1638const ( 1639 EVENT_MODIFY_STATE = 0x0002 1640 EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 1641 1642 MUTANT_QUERY_STATE = 0x0001 1643 MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE 1644 1645 SEMAPHORE_MODIFY_STATE = 0x0002 1646 SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 1647 1648 TIMER_QUERY_STATE = 0x0001 1649 TIMER_MODIFY_STATE = 0x0002 1650 TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE 1651 1652 MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE 1653 MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS 1654 1655 CREATE_EVENT_MANUAL_RESET = 0x1 1656 CREATE_EVENT_INITIAL_SET = 0x2 1657 CREATE_MUTEX_INITIAL_OWNER = 0x1 1658) 1659 1660type AddrinfoW struct { 1661 Flags int32 1662 Family int32 1663 Socktype int32 1664 Protocol int32 1665 Addrlen uintptr 1666 Canonname *uint16 1667 Addr uintptr 1668 Next *AddrinfoW 1669} 1670 1671const ( 1672 AI_PASSIVE = 1 1673 AI_CANONNAME = 2 1674 AI_NUMERICHOST = 4 1675) 1676 1677type GUID struct { 1678 Data1 uint32 1679 Data2 uint16 1680 Data3 uint16 1681 Data4 [8]byte 1682} 1683 1684var WSAID_CONNECTEX = GUID{ 1685 0x25a207b9, 1686 0xddf3, 1687 0x4660, 1688 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, 1689} 1690 1691var WSAID_WSASENDMSG = GUID{ 1692 0xa441e712, 1693 0x754f, 1694 0x43ca, 1695 [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, 1696} 1697 1698var WSAID_WSARECVMSG = GUID{ 1699 0xf689d7c8, 1700 0x6f1f, 1701 0x436b, 1702 [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, 1703} 1704 1705const ( 1706 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 1707 FILE_SKIP_SET_EVENT_ON_HANDLE = 2 1708) 1709 1710const ( 1711 WSAPROTOCOL_LEN = 255 1712 MAX_PROTOCOL_CHAIN = 7 1713 BASE_PROTOCOL = 1 1714 LAYERED_PROTOCOL = 0 1715 1716 XP1_CONNECTIONLESS = 0x00000001 1717 XP1_GUARANTEED_DELIVERY = 0x00000002 1718 XP1_GUARANTEED_ORDER = 0x00000004 1719 XP1_MESSAGE_ORIENTED = 0x00000008 1720 XP1_PSEUDO_STREAM = 0x00000010 1721 XP1_GRACEFUL_CLOSE = 0x00000020 1722 XP1_EXPEDITED_DATA = 0x00000040 1723 XP1_CONNECT_DATA = 0x00000080 1724 XP1_DISCONNECT_DATA = 0x00000100 1725 XP1_SUPPORT_BROADCAST = 0x00000200 1726 XP1_SUPPORT_MULTIPOINT = 0x00000400 1727 XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 1728 XP1_MULTIPOINT_DATA_PLANE = 0x00001000 1729 XP1_QOS_SUPPORTED = 0x00002000 1730 XP1_UNI_SEND = 0x00008000 1731 XP1_UNI_RECV = 0x00010000 1732 XP1_IFS_HANDLES = 0x00020000 1733 XP1_PARTIAL_MESSAGE = 0x00040000 1734 XP1_SAN_SUPPORT_SDP = 0x00080000 1735 1736 PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 1737 PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 1738 PFL_HIDDEN = 0x00000004 1739 PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 1740 PFL_NETWORKDIRECT_PROVIDER = 0x00000010 1741) 1742 1743type WSAProtocolInfo struct { 1744 ServiceFlags1 uint32 1745 ServiceFlags2 uint32 1746 ServiceFlags3 uint32 1747 ServiceFlags4 uint32 1748 ProviderFlags uint32 1749 ProviderId GUID 1750 CatalogEntryId uint32 1751 ProtocolChain WSAProtocolChain 1752 Version int32 1753 AddressFamily int32 1754 MaxSockAddr int32 1755 MinSockAddr int32 1756 SocketType int32 1757 Protocol int32 1758 ProtocolMaxOffset int32 1759 NetworkByteOrder int32 1760 SecurityScheme int32 1761 MessageSize uint32 1762 ProviderReserved uint32 1763 ProtocolName [WSAPROTOCOL_LEN + 1]uint16 1764} 1765 1766type WSAProtocolChain struct { 1767 ChainLen int32 1768 ChainEntries [MAX_PROTOCOL_CHAIN]uint32 1769} 1770 1771type TCPKeepalive struct { 1772 OnOff uint32 1773 Time uint32 1774 Interval uint32 1775} 1776 1777type symbolicLinkReparseBuffer struct { 1778 SubstituteNameOffset uint16 1779 SubstituteNameLength uint16 1780 PrintNameOffset uint16 1781 PrintNameLength uint16 1782 Flags uint32 1783 PathBuffer [1]uint16 1784} 1785 1786type mountPointReparseBuffer struct { 1787 SubstituteNameOffset uint16 1788 SubstituteNameLength uint16 1789 PrintNameOffset uint16 1790 PrintNameLength uint16 1791 PathBuffer [1]uint16 1792} 1793 1794type reparseDataBuffer struct { 1795 ReparseTag uint32 1796 ReparseDataLength uint16 1797 Reserved uint16 1798 1799 // GenericReparseBuffer 1800 reparseBuffer byte 1801} 1802 1803const ( 1804 FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0 1805 FSCTL_DELETE_OBJECT_ID = 0x0900A0 1806 FSCTL_DELETE_REPARSE_POINT = 0x0900AC 1807 FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344 1808 FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8 1809 FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060 1810 FSCTL_FILE_LEVEL_TRIM = 0x098208 1811 FSCTL_FIND_FILES_BY_SID = 0x09008F 1812 FSCTL_GET_COMPRESSION = 0x09003C 1813 FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C 1814 FSCTL_GET_NTFS_VOLUME_DATA = 0x090064 1815 FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8 1816 FSCTL_GET_OBJECT_ID = 0x09009C 1817 FSCTL_GET_REPARSE_POINT = 0x0900A8 1818 FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B 1819 FSCTL_GET_RETRIEVAL_POINTERS = 0x090073 1820 FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3 1821 FSCTL_IS_PATHNAME_VALID = 0x09002C 1822 FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC 1823 FSCTL_MARK_HANDLE = 0x0900FC 1824 FSCTL_OFFLOAD_READ = 0x094264 1825 FSCTL_OFFLOAD_WRITE = 0x098268 1826 FSCTL_PIPE_PEEK = 0x11400C 1827 FSCTL_PIPE_TRANSCEIVE = 0x11C017 1828 FSCTL_PIPE_WAIT = 0x110018 1829 FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF 1830 FSCTL_QUERY_FAT_BPB = 0x090058 1831 FSCTL_QUERY_FILE_REGIONS = 0x090284 1832 FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C 1833 FSCTL_QUERY_SPARING_INFO = 0x090138 1834 FSCTL_READ_FILE_USN_DATA = 0x0900EB 1835 FSCTL_RECALL_FILE = 0x090117 1836 FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440 1837 FSCTL_SET_COMPRESSION = 0x09C040 1838 FSCTL_SET_DEFECT_MANAGEMENT = 0x098134 1839 FSCTL_SET_ENCRYPTION = 0x0900D7 1840 FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280 1841 FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380 1842 FSCTL_SET_OBJECT_ID = 0x090098 1843 FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC 1844 FSCTL_SET_REPARSE_POINT = 0x0900A4 1845 FSCTL_SET_SPARSE = 0x0900C4 1846 FSCTL_SET_ZERO_DATA = 0x0980C8 1847 FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194 1848 FSCTL_SIS_COPYFILE = 0x090100 1849 FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF 1850 1851 MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 1852 IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 1853 IO_REPARSE_TAG_SYMLINK = 0xA000000C 1854 SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 1855) 1856 1857const ( 1858 ComputerNameNetBIOS = 0 1859 ComputerNameDnsHostname = 1 1860 ComputerNameDnsDomain = 2 1861 ComputerNameDnsFullyQualified = 3 1862 ComputerNamePhysicalNetBIOS = 4 1863 ComputerNamePhysicalDnsHostname = 5 1864 ComputerNamePhysicalDnsDomain = 6 1865 ComputerNamePhysicalDnsFullyQualified = 7 1866 ComputerNameMax = 8 1867) 1868 1869// For MessageBox() 1870const ( 1871 MB_OK = 0x00000000 1872 MB_OKCANCEL = 0x00000001 1873 MB_ABORTRETRYIGNORE = 0x00000002 1874 MB_YESNOCANCEL = 0x00000003 1875 MB_YESNO = 0x00000004 1876 MB_RETRYCANCEL = 0x00000005 1877 MB_CANCELTRYCONTINUE = 0x00000006 1878 MB_ICONHAND = 0x00000010 1879 MB_ICONQUESTION = 0x00000020 1880 MB_ICONEXCLAMATION = 0x00000030 1881 MB_ICONASTERISK = 0x00000040 1882 MB_USERICON = 0x00000080 1883 MB_ICONWARNING = MB_ICONEXCLAMATION 1884 MB_ICONERROR = MB_ICONHAND 1885 MB_ICONINFORMATION = MB_ICONASTERISK 1886 MB_ICONSTOP = MB_ICONHAND 1887 MB_DEFBUTTON1 = 0x00000000 1888 MB_DEFBUTTON2 = 0x00000100 1889 MB_DEFBUTTON3 = 0x00000200 1890 MB_DEFBUTTON4 = 0x00000300 1891 MB_APPLMODAL = 0x00000000 1892 MB_SYSTEMMODAL = 0x00001000 1893 MB_TASKMODAL = 0x00002000 1894 MB_HELP = 0x00004000 1895 MB_NOFOCUS = 0x00008000 1896 MB_SETFOREGROUND = 0x00010000 1897 MB_DEFAULT_DESKTOP_ONLY = 0x00020000 1898 MB_TOPMOST = 0x00040000 1899 MB_RIGHT = 0x00080000 1900 MB_RTLREADING = 0x00100000 1901 MB_SERVICE_NOTIFICATION = 0x00200000 1902) 1903 1904const ( 1905 MOVEFILE_REPLACE_EXISTING = 0x1 1906 MOVEFILE_COPY_ALLOWED = 0x2 1907 MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 1908 MOVEFILE_WRITE_THROUGH = 0x8 1909 MOVEFILE_CREATE_HARDLINK = 0x10 1910 MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 1911) 1912 1913const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 1914 1915const ( 1916 IF_TYPE_OTHER = 1 1917 IF_TYPE_ETHERNET_CSMACD = 6 1918 IF_TYPE_ISO88025_TOKENRING = 9 1919 IF_TYPE_PPP = 23 1920 IF_TYPE_SOFTWARE_LOOPBACK = 24 1921 IF_TYPE_ATM = 37 1922 IF_TYPE_IEEE80211 = 71 1923 IF_TYPE_TUNNEL = 131 1924 IF_TYPE_IEEE1394 = 144 1925) 1926 1927type SocketAddress struct { 1928 Sockaddr *syscall.RawSockaddrAny 1929 SockaddrLength int32 1930} 1931 1932// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. 1933func (addr *SocketAddress) IP() net.IP { 1934 if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { 1935 return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] 1936 } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { 1937 return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] 1938 } 1939 return nil 1940} 1941 1942type IpAdapterUnicastAddress struct { 1943 Length uint32 1944 Flags uint32 1945 Next *IpAdapterUnicastAddress 1946 Address SocketAddress 1947 PrefixOrigin int32 1948 SuffixOrigin int32 1949 DadState int32 1950 ValidLifetime uint32 1951 PreferredLifetime uint32 1952 LeaseLifetime uint32 1953 OnLinkPrefixLength uint8 1954} 1955 1956type IpAdapterAnycastAddress struct { 1957 Length uint32 1958 Flags uint32 1959 Next *IpAdapterAnycastAddress 1960 Address SocketAddress 1961} 1962 1963type IpAdapterMulticastAddress struct { 1964 Length uint32 1965 Flags uint32 1966 Next *IpAdapterMulticastAddress 1967 Address SocketAddress 1968} 1969 1970type IpAdapterDnsServerAdapter struct { 1971 Length uint32 1972 Reserved uint32 1973 Next *IpAdapterDnsServerAdapter 1974 Address SocketAddress 1975} 1976 1977type IpAdapterPrefix struct { 1978 Length uint32 1979 Flags uint32 1980 Next *IpAdapterPrefix 1981 Address SocketAddress 1982 PrefixLength uint32 1983} 1984 1985type IpAdapterAddresses struct { 1986 Length uint32 1987 IfIndex uint32 1988 Next *IpAdapterAddresses 1989 AdapterName *byte 1990 FirstUnicastAddress *IpAdapterUnicastAddress 1991 FirstAnycastAddress *IpAdapterAnycastAddress 1992 FirstMulticastAddress *IpAdapterMulticastAddress 1993 FirstDnsServerAddress *IpAdapterDnsServerAdapter 1994 DnsSuffix *uint16 1995 Description *uint16 1996 FriendlyName *uint16 1997 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte 1998 PhysicalAddressLength uint32 1999 Flags uint32 2000 Mtu uint32 2001 IfType uint32 2002 OperStatus uint32 2003 Ipv6IfIndex uint32 2004 ZoneIndices [16]uint32 2005 FirstPrefix *IpAdapterPrefix 2006 /* more fields might be present here. */ 2007} 2008 2009const ( 2010 IfOperStatusUp = 1 2011 IfOperStatusDown = 2 2012 IfOperStatusTesting = 3 2013 IfOperStatusUnknown = 4 2014 IfOperStatusDormant = 5 2015 IfOperStatusNotPresent = 6 2016 IfOperStatusLowerLayerDown = 7 2017) 2018 2019// Console related constants used for the mode parameter to SetConsoleMode. See 2020// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. 2021 2022const ( 2023 ENABLE_PROCESSED_INPUT = 0x1 2024 ENABLE_LINE_INPUT = 0x2 2025 ENABLE_ECHO_INPUT = 0x4 2026 ENABLE_WINDOW_INPUT = 0x8 2027 ENABLE_MOUSE_INPUT = 0x10 2028 ENABLE_INSERT_MODE = 0x20 2029 ENABLE_QUICK_EDIT_MODE = 0x40 2030 ENABLE_EXTENDED_FLAGS = 0x80 2031 ENABLE_AUTO_POSITION = 0x100 2032 ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 2033 2034 ENABLE_PROCESSED_OUTPUT = 0x1 2035 ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 2036 ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 2037 DISABLE_NEWLINE_AUTO_RETURN = 0x8 2038 ENABLE_LVB_GRID_WORLDWIDE = 0x10 2039) 2040 2041type Coord struct { 2042 X int16 2043 Y int16 2044} 2045 2046type SmallRect struct { 2047 Left int16 2048 Top int16 2049 Right int16 2050 Bottom int16 2051} 2052 2053// Used with GetConsoleScreenBuffer to retrieve information about a console 2054// screen buffer. See 2055// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str 2056// for details. 2057 2058type ConsoleScreenBufferInfo struct { 2059 Size Coord 2060 CursorPosition Coord 2061 Attributes uint16 2062 Window SmallRect 2063 MaximumWindowSize Coord 2064} 2065 2066const UNIX_PATH_MAX = 108 // defined in afunix.h 2067 2068const ( 2069 // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags 2070 JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 2071 JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 2072 JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 2073 JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 2074 JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 2075 JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 2076 JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 2077 JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 2078 JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 2079 JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 2080 JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 2081 JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 2082 JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 2083 JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 2084 JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 2085) 2086 2087type IO_COUNTERS struct { 2088 ReadOperationCount uint64 2089 WriteOperationCount uint64 2090 OtherOperationCount uint64 2091 ReadTransferCount uint64 2092 WriteTransferCount uint64 2093 OtherTransferCount uint64 2094} 2095 2096type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { 2097 BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION 2098 IoInfo IO_COUNTERS 2099 ProcessMemoryLimit uintptr 2100 JobMemoryLimit uintptr 2101 PeakProcessMemoryUsed uintptr 2102 PeakJobMemoryUsed uintptr 2103} 2104 2105const ( 2106 // UIRestrictionsClass 2107 JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 2108 JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 2109 JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 2110 JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 2111 JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 2112 JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 2113 JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 2114 JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 2115) 2116 2117type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { 2118 UIRestrictionsClass uint32 2119} 2120 2121const ( 2122 // JobObjectInformationClass 2123 JobObjectAssociateCompletionPortInformation = 7 2124 JobObjectBasicLimitInformation = 2 2125 JobObjectBasicUIRestrictions = 4 2126 JobObjectCpuRateControlInformation = 15 2127 JobObjectEndOfJobTimeInformation = 6 2128 JobObjectExtendedLimitInformation = 9 2129 JobObjectGroupInformation = 11 2130 JobObjectGroupInformationEx = 14 2131 JobObjectLimitViolationInformation2 = 35 2132 JobObjectNetRateControlInformation = 32 2133 JobObjectNotificationLimitInformation = 12 2134 JobObjectNotificationLimitInformation2 = 34 2135 JobObjectSecurityLimitInformation = 5 2136) 2137 2138const ( 2139 KF_FLAG_DEFAULT = 0x00000000 2140 KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 2141 KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 2142 KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 2143 KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 2144 KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 2145 KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 2146 KF_FLAG_CREATE = 0x00008000 2147 KF_FLAG_DONT_VERIFY = 0x00004000 2148 KF_FLAG_DONT_UNEXPAND = 0x00002000 2149 KF_FLAG_NO_ALIAS = 0x00001000 2150 KF_FLAG_INIT = 0x00000800 2151 KF_FLAG_DEFAULT_PATH = 0x00000400 2152 KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 2153 KF_FLAG_SIMPLE_IDLIST = 0x00000100 2154 KF_FLAG_ALIAS_ONLY = 0x80000000 2155) 2156 2157type OsVersionInfoEx struct { 2158 osVersionInfoSize uint32 2159 MajorVersion uint32 2160 MinorVersion uint32 2161 BuildNumber uint32 2162 PlatformId uint32 2163 CsdVersion [128]uint16 2164 ServicePackMajor uint16 2165 ServicePackMinor uint16 2166 SuiteMask uint16 2167 ProductType byte 2168 _ byte 2169} 2170 2171const ( 2172 EWX_LOGOFF = 0x00000000 2173 EWX_SHUTDOWN = 0x00000001 2174 EWX_REBOOT = 0x00000002 2175 EWX_FORCE = 0x00000004 2176 EWX_POWEROFF = 0x00000008 2177 EWX_FORCEIFHUNG = 0x00000010 2178 EWX_QUICKRESOLVE = 0x00000020 2179 EWX_RESTARTAPPS = 0x00000040 2180 EWX_HYBRID_SHUTDOWN = 0x00400000 2181 EWX_BOOTOPTIONS = 0x01000000 2182 2183 SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 2184 SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 2185 SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 2186 SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 2187 SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 2188 SHTDN_REASON_FLAG_PLANNED = 0x80000000 2189 SHTDN_REASON_MAJOR_OTHER = 0x00000000 2190 SHTDN_REASON_MAJOR_NONE = 0x00000000 2191 SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 2192 SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 2193 SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 2194 SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 2195 SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 2196 SHTDN_REASON_MAJOR_POWER = 0x00060000 2197 SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 2198 SHTDN_REASON_MINOR_OTHER = 0x00000000 2199 SHTDN_REASON_MINOR_NONE = 0x000000ff 2200 SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 2201 SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 2202 SHTDN_REASON_MINOR_UPGRADE = 0x00000003 2203 SHTDN_REASON_MINOR_RECONFIG = 0x00000004 2204 SHTDN_REASON_MINOR_HUNG = 0x00000005 2205 SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 2206 SHTDN_REASON_MINOR_DISK = 0x00000007 2207 SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 2208 SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 2209 SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a 2210 SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b 2211 SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c 2212 SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d 2213 SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e 2214 SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F 2215 SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 2216 SHTDN_REASON_MINOR_HOTFIX = 0x00000011 2217 SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 2218 SHTDN_REASON_MINOR_SECURITY = 0x00000013 2219 SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 2220 SHTDN_REASON_MINOR_WMI = 0x00000015 2221 SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 2222 SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 2223 SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 2224 SHTDN_REASON_MINOR_MMC = 0x00000019 2225 SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a 2226 SHTDN_REASON_MINOR_TERMSRV = 0x00000020 2227 SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 2228 SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 2229 SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE 2230 SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED 2231 SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff 2232 2233 SHUTDOWN_NORETRY = 0x1 2234) 2235 2236// Flags used for GetModuleHandleEx 2237const ( 2238 GET_MODULE_HANDLE_EX_FLAG_PIN = 1 2239 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 2240 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 2241) 2242 2243// MUI function flag values 2244const ( 2245 MUI_LANGUAGE_ID = 0x4 2246 MUI_LANGUAGE_NAME = 0x8 2247 MUI_MERGE_SYSTEM_FALLBACK = 0x10 2248 MUI_MERGE_USER_FALLBACK = 0x20 2249 MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK 2250 MUI_THREAD_LANGUAGES = 0x40 2251 MUI_CONSOLE_FILTER = 0x100 2252 MUI_COMPLEX_SCRIPT_FILTER = 0x200 2253 MUI_RESET_FILTERS = 0x001 2254 MUI_USER_PREFERRED_UI_LANGUAGES = 0x10 2255 MUI_USE_INSTALLED_LANGUAGES = 0x20 2256 MUI_USE_SEARCH_ALL_LANGUAGES = 0x40 2257 MUI_LANG_NEUTRAL_PE_FILE = 0x100 2258 MUI_NON_LANG_NEUTRAL_FILE = 0x200 2259 MUI_MACHINE_LANGUAGE_SETTINGS = 0x400 2260 MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001 2261 MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002 2262 MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004 2263 MUI_QUERY_TYPE = 0x001 2264 MUI_QUERY_CHECKSUM = 0x002 2265 MUI_QUERY_LANGUAGE_NAME = 0x004 2266 MUI_QUERY_RESOURCE_TYPES = 0x008 2267 MUI_FILEINFO_VERSION = 0x001 2268 2269 MUI_FULL_LANGUAGE = 0x01 2270 MUI_PARTIAL_LANGUAGE = 0x02 2271 MUI_LIP_LANGUAGE = 0x04 2272 MUI_LANGUAGE_INSTALLED = 0x20 2273 MUI_LANGUAGE_LICENSED = 0x40 2274) 2275 2276// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx 2277const ( 2278 FileBasicInfo = 0 2279 FileStandardInfo = 1 2280 FileNameInfo = 2 2281 FileRenameInfo = 3 2282 FileDispositionInfo = 4 2283 FileAllocationInfo = 5 2284 FileEndOfFileInfo = 6 2285 FileStreamInfo = 7 2286 FileCompressionInfo = 8 2287 FileAttributeTagInfo = 9 2288 FileIdBothDirectoryInfo = 10 2289 FileIdBothDirectoryRestartInfo = 11 2290 FileIoPriorityHintInfo = 12 2291 FileRemoteProtocolInfo = 13 2292 FileFullDirectoryInfo = 14 2293 FileFullDirectoryRestartInfo = 15 2294 FileStorageInfo = 16 2295 FileAlignmentInfo = 17 2296 FileIdInfo = 18 2297 FileIdExtdDirectoryInfo = 19 2298 FileIdExtdDirectoryRestartInfo = 20 2299 FileDispositionInfoEx = 21 2300 FileRenameInfoEx = 22 2301 FileCaseSensitiveInfo = 23 2302 FileNormalizedNameInfo = 24 2303) 2304 2305// LoadLibrary flags for determining from where to search for a DLL 2306const ( 2307 DONT_RESOLVE_DLL_REFERENCES = 0x1 2308 LOAD_LIBRARY_AS_DATAFILE = 0x2 2309 LOAD_WITH_ALTERED_SEARCH_PATH = 0x8 2310 LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10 2311 LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20 2312 LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40 2313 LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80 2314 LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100 2315 LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200 2316 LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400 2317 LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800 2318 LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000 2319 LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000 2320 LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 2321 LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000 2322) 2323 2324// RegNotifyChangeKeyValue notifyFilter flags. 2325const ( 2326 // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. 2327 REG_NOTIFY_CHANGE_NAME = 0x00000001 2328 2329 // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. 2330 REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 2331 2332 // 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. 2333 REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 2334 2335 // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. 2336 REG_NOTIFY_CHANGE_SECURITY = 0x00000008 2337 2338 // 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. 2339 REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 2340) 2341 2342type CommTimeouts struct { 2343 ReadIntervalTimeout uint32 2344 ReadTotalTimeoutMultiplier uint32 2345 ReadTotalTimeoutConstant uint32 2346 WriteTotalTimeoutMultiplier uint32 2347 WriteTotalTimeoutConstant uint32 2348} 2349 2350// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING. 2351type NTUnicodeString struct { 2352 Length uint16 2353 MaximumLength uint16 2354 Buffer *uint16 2355} 2356 2357// NTString is an ANSI string for NT native APIs, corresponding to STRING. 2358type NTString struct { 2359 Length uint16 2360 MaximumLength uint16 2361 Buffer *byte 2362} 2363 2364type LIST_ENTRY struct { 2365 Flink *LIST_ENTRY 2366 Blink *LIST_ENTRY 2367} 2368 2369type RUNTIME_FUNCTION struct { 2370 BeginAddress uint32 2371 EndAddress uint32 2372 UnwindData uint32 2373} 2374 2375type LDR_DATA_TABLE_ENTRY struct { 2376 reserved1 [2]uintptr 2377 InMemoryOrderLinks LIST_ENTRY 2378 reserved2 [2]uintptr 2379 DllBase uintptr 2380 reserved3 [2]uintptr 2381 FullDllName NTUnicodeString 2382 reserved4 [8]byte 2383 reserved5 [3]uintptr 2384 reserved6 uintptr 2385 TimeDateStamp uint32 2386} 2387 2388type PEB_LDR_DATA struct { 2389 reserved1 [8]byte 2390 reserved2 [3]uintptr 2391 InMemoryOrderModuleList LIST_ENTRY 2392} 2393 2394type CURDIR struct { 2395 DosPath NTUnicodeString 2396 Handle Handle 2397} 2398 2399type RTL_DRIVE_LETTER_CURDIR struct { 2400 Flags uint16 2401 Length uint16 2402 TimeStamp uint32 2403 DosPath NTString 2404} 2405 2406type RTL_USER_PROCESS_PARAMETERS struct { 2407 MaximumLength, Length uint32 2408 2409 Flags, DebugFlags uint32 2410 2411 ConsoleHandle Handle 2412 ConsoleFlags uint32 2413 StandardInput, StandardOutput, StandardError Handle 2414 2415 CurrentDirectory CURDIR 2416 DllPath NTUnicodeString 2417 ImagePathName NTUnicodeString 2418 CommandLine NTUnicodeString 2419 Environment unsafe.Pointer 2420 2421 StartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32 2422 2423 WindowFlags, ShowWindowFlags uint32 2424 WindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString 2425 CurrentDirectories [32]RTL_DRIVE_LETTER_CURDIR 2426 2427 EnvironmentSize, EnvironmentVersion uintptr 2428 2429 PackageDependencyData unsafe.Pointer 2430 ProcessGroupId uint32 2431 LoaderThreads uint32 2432 2433 RedirectionDllName NTUnicodeString 2434 HeapPartitionName NTUnicodeString 2435 DefaultThreadpoolCpuSetMasks uintptr 2436 DefaultThreadpoolCpuSetMaskCount uint32 2437} 2438 2439type PEB struct { 2440 reserved1 [2]byte 2441 BeingDebugged byte 2442 BitField byte 2443 reserved3 uintptr 2444 ImageBaseAddress uintptr 2445 Ldr *PEB_LDR_DATA 2446 ProcessParameters *RTL_USER_PROCESS_PARAMETERS 2447 reserved4 [3]uintptr 2448 AtlThunkSListPtr uintptr 2449 reserved5 uintptr 2450 reserved6 uint32 2451 reserved7 uintptr 2452 reserved8 uint32 2453 AtlThunkSListPtr32 uint32 2454 reserved9 [45]uintptr 2455 reserved10 [96]byte 2456 PostProcessInitRoutine uintptr 2457 reserved11 [128]byte 2458 reserved12 [1]uintptr 2459 SessionId uint32 2460} 2461 2462type OBJECT_ATTRIBUTES struct { 2463 Length uint32 2464 RootDirectory Handle 2465 ObjectName *NTUnicodeString 2466 Attributes uint32 2467 SecurityDescriptor *SECURITY_DESCRIPTOR 2468 SecurityQoS *SECURITY_QUALITY_OF_SERVICE 2469} 2470 2471// Values for the Attributes member of OBJECT_ATTRIBUTES. 2472const ( 2473 OBJ_INHERIT = 0x00000002 2474 OBJ_PERMANENT = 0x00000010 2475 OBJ_EXCLUSIVE = 0x00000020 2476 OBJ_CASE_INSENSITIVE = 0x00000040 2477 OBJ_OPENIF = 0x00000080 2478 OBJ_OPENLINK = 0x00000100 2479 OBJ_KERNEL_HANDLE = 0x00000200 2480 OBJ_FORCE_ACCESS_CHECK = 0x00000400 2481 OBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800 2482 OBJ_DONT_REPARSE = 0x00001000 2483 OBJ_VALID_ATTRIBUTES = 0x00001FF2 2484) 2485 2486type IO_STATUS_BLOCK struct { 2487 Status NTStatus 2488 Information uintptr 2489} 2490 2491type RTLP_CURDIR_REF struct { 2492 RefCount int32 2493 Handle Handle 2494} 2495 2496type RTL_RELATIVE_NAME struct { 2497 RelativeName NTUnicodeString 2498 ContainingDirectory Handle 2499 CurDirRef *RTLP_CURDIR_REF 2500} 2501 2502const ( 2503 // CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile. 2504 FILE_SUPERSEDE = 0x00000000 2505 FILE_OPEN = 0x00000001 2506 FILE_CREATE = 0x00000002 2507 FILE_OPEN_IF = 0x00000003 2508 FILE_OVERWRITE = 0x00000004 2509 FILE_OVERWRITE_IF = 0x00000005 2510 FILE_MAXIMUM_DISPOSITION = 0x00000005 2511 2512 // CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile. 2513 FILE_DIRECTORY_FILE = 0x00000001 2514 FILE_WRITE_THROUGH = 0x00000002 2515 FILE_SEQUENTIAL_ONLY = 0x00000004 2516 FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008 2517 FILE_SYNCHRONOUS_IO_ALERT = 0x00000010 2518 FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 2519 FILE_NON_DIRECTORY_FILE = 0x00000040 2520 FILE_CREATE_TREE_CONNECTION = 0x00000080 2521 FILE_COMPLETE_IF_OPLOCKED = 0x00000100 2522 FILE_NO_EA_KNOWLEDGE = 0x00000200 2523 FILE_OPEN_REMOTE_INSTANCE = 0x00000400 2524 FILE_RANDOM_ACCESS = 0x00000800 2525 FILE_DELETE_ON_CLOSE = 0x00001000 2526 FILE_OPEN_BY_FILE_ID = 0x00002000 2527 FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 2528 FILE_NO_COMPRESSION = 0x00008000 2529 FILE_OPEN_REQUIRING_OPLOCK = 0x00010000 2530 FILE_DISALLOW_EXCLUSIVE = 0x00020000 2531 FILE_RESERVE_OPFILTER = 0x00100000 2532 FILE_OPEN_REPARSE_POINT = 0x00200000 2533 FILE_OPEN_NO_RECALL = 0x00400000 2534 FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000 2535 2536 // Parameter constants for NtCreateNamedPipeFile. 2537 2538 FILE_PIPE_BYTE_STREAM_TYPE = 0x00000000 2539 FILE_PIPE_MESSAGE_TYPE = 0x00000001 2540 2541 FILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000 2542 FILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002 2543 2544 FILE_PIPE_TYPE_VALID_MASK = 0x00000003 2545 2546 FILE_PIPE_BYTE_STREAM_MODE = 0x00000000 2547 FILE_PIPE_MESSAGE_MODE = 0x00000001 2548 2549 FILE_PIPE_QUEUE_OPERATION = 0x00000000 2550 FILE_PIPE_COMPLETE_OPERATION = 0x00000001 2551 2552 FILE_PIPE_INBOUND = 0x00000000 2553 FILE_PIPE_OUTBOUND = 0x00000001 2554 FILE_PIPE_FULL_DUPLEX = 0x00000002 2555 2556 FILE_PIPE_DISCONNECTED_STATE = 0x00000001 2557 FILE_PIPE_LISTENING_STATE = 0x00000002 2558 FILE_PIPE_CONNECTED_STATE = 0x00000003 2559 FILE_PIPE_CLOSING_STATE = 0x00000004 2560 2561 FILE_PIPE_CLIENT_END = 0x00000000 2562 FILE_PIPE_SERVER_END = 0x00000001 2563) 2564 2565const ( 2566 // FileInformationClass for NtSetInformationFile 2567 FileBasicInformation = 4 2568 FileRenameInformation = 10 2569 FileDispositionInformation = 13 2570 FilePositionInformation = 14 2571 FileEndOfFileInformation = 20 2572 FileValidDataLengthInformation = 39 2573 FileShortNameInformation = 40 2574 FileIoPriorityHintInformation = 43 2575 FileReplaceCompletionInformation = 61 2576 FileDispositionInformationEx = 64 2577 FileCaseSensitiveInformation = 71 2578 FileLinkInformation = 72 2579 FileCaseSensitiveInformationForceAccessCheck = 75 2580 FileKnownFolderInformation = 76 2581 2582 // Flags for FILE_RENAME_INFORMATION 2583 FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001 2584 FILE_RENAME_POSIX_SEMANTICS = 0x00000002 2585 FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004 2586 FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 2587 FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 2588 FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 2589 FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030 2590 FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040 2591 FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080 2592 FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100 2593 FILE_RENAME_FORCE_RESIZE_SR = 0x00000180 2594 2595 // Flags for FILE_DISPOSITION_INFORMATION_EX 2596 FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000 2597 FILE_DISPOSITION_DELETE = 0x00000001 2598 FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002 2599 FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004 2600 FILE_DISPOSITION_ON_CLOSE = 0x00000008 2601 FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010 2602 2603 // Flags for FILE_CASE_SENSITIVE_INFORMATION 2604 FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001 2605 2606 // Flags for FILE_LINK_INFORMATION 2607 FILE_LINK_REPLACE_IF_EXISTS = 0x00000001 2608 FILE_LINK_POSIX_SEMANTICS = 0x00000002 2609 FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 2610 FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 2611 FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 2612 FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030 2613 FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040 2614 FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080 2615 FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100 2616 FILE_LINK_FORCE_RESIZE_SR = 0x00000180 2617) 2618 2619// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. 2620const ( 2621 ProcessBasicInformation = iota 2622 ProcessQuotaLimits 2623 ProcessIoCounters 2624 ProcessVmCounters 2625 ProcessTimes 2626 ProcessBasePriority 2627 ProcessRaisePriority 2628 ProcessDebugPort 2629 ProcessExceptionPort 2630 ProcessAccessToken 2631 ProcessLdtInformation 2632 ProcessLdtSize 2633 ProcessDefaultHardErrorMode 2634 ProcessIoPortHandlers 2635 ProcessPooledUsageAndLimits 2636 ProcessWorkingSetWatch 2637 ProcessUserModeIOPL 2638 ProcessEnableAlignmentFaultFixup 2639 ProcessPriorityClass 2640 ProcessWx86Information 2641 ProcessHandleCount 2642 ProcessAffinityMask 2643 ProcessPriorityBoost 2644 ProcessDeviceMap 2645 ProcessSessionInformation 2646 ProcessForegroundInformation 2647 ProcessWow64Information 2648 ProcessImageFileName 2649 ProcessLUIDDeviceMapsEnabled 2650 ProcessBreakOnTermination 2651 ProcessDebugObjectHandle 2652 ProcessDebugFlags 2653 ProcessHandleTracing 2654 ProcessIoPriority 2655 ProcessExecuteFlags 2656 ProcessTlsInformation 2657 ProcessCookie 2658 ProcessImageInformation 2659 ProcessCycleTime 2660 ProcessPagePriority 2661 ProcessInstrumentationCallback 2662 ProcessThreadStackAllocation 2663 ProcessWorkingSetWatchEx 2664 ProcessImageFileNameWin32 2665 ProcessImageFileMapping 2666 ProcessAffinityUpdateMode 2667 ProcessMemoryAllocationMode 2668 ProcessGroupInformation 2669 ProcessTokenVirtualizationEnabled 2670 ProcessConsoleHostProcess 2671 ProcessWindowInformation 2672 ProcessHandleInformation 2673 ProcessMitigationPolicy 2674 ProcessDynamicFunctionTableInformation 2675 ProcessHandleCheckingMode 2676 ProcessKeepAliveCount 2677 ProcessRevokeFileHandles 2678 ProcessWorkingSetControl 2679 ProcessHandleTable 2680 ProcessCheckStackExtentsMode 2681 ProcessCommandLineInformation 2682 ProcessProtectionInformation 2683 ProcessMemoryExhaustion 2684 ProcessFaultInformation 2685 ProcessTelemetryIdInformation 2686 ProcessCommitReleaseInformation 2687 ProcessDefaultCpuSetsInformation 2688 ProcessAllowedCpuSetsInformation 2689 ProcessSubsystemProcess 2690 ProcessJobMemoryInformation 2691 ProcessInPrivate 2692 ProcessRaiseUMExceptionOnInvalidHandleClose 2693 ProcessIumChallengeResponse 2694 ProcessChildProcessInformation 2695 ProcessHighGraphicsPriorityInformation 2696 ProcessSubsystemInformation 2697 ProcessEnergyValues 2698 ProcessActivityThrottleState 2699 ProcessActivityThrottlePolicy 2700 ProcessWin32kSyscallFilterInformation 2701 ProcessDisableSystemAllowedCpuSets 2702 ProcessWakeInformation 2703 ProcessEnergyTrackingState 2704 ProcessManageWritesToExecutableMemory 2705 ProcessCaptureTrustletLiveDump 2706 ProcessTelemetryCoverage 2707 ProcessEnclaveInformation 2708 ProcessEnableReadWriteVmLogging 2709 ProcessUptimeInformation 2710 ProcessImageSection 2711 ProcessDebugAuthInformation 2712 ProcessSystemResourceManagement 2713 ProcessSequenceNumber 2714 ProcessLoaderDetour 2715 ProcessSecurityDomainInformation 2716 ProcessCombineSecurityDomainsInformation 2717 ProcessEnableLogging 2718 ProcessLeapSecondInformation 2719 ProcessFiberShadowStackAllocation 2720 ProcessFreeFiberShadowStackAllocation 2721 ProcessAltSystemCallInformation 2722 ProcessDynamicEHContinuationTargets 2723 ProcessDynamicEnforcedCetCompatibleRanges 2724) 2725 2726type PROCESS_BASIC_INFORMATION struct { 2727 ExitStatus NTStatus 2728 PebBaseAddress *PEB 2729 AffinityMask uintptr 2730 BasePriority int32 2731 UniqueProcessId uintptr 2732 InheritedFromUniqueProcessId uintptr 2733} 2734 2735// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation 2736const ( 2737 SystemBasicInformation = iota 2738 SystemProcessorInformation 2739 SystemPerformanceInformation 2740 SystemTimeOfDayInformation 2741 SystemPathInformation 2742 SystemProcessInformation 2743 SystemCallCountInformation 2744 SystemDeviceInformation 2745 SystemProcessorPerformanceInformation 2746 SystemFlagsInformation 2747 SystemCallTimeInformation 2748 SystemModuleInformation 2749 SystemLocksInformation 2750 SystemStackTraceInformation 2751 SystemPagedPoolInformation 2752 SystemNonPagedPoolInformation 2753 SystemHandleInformation 2754 SystemObjectInformation 2755 SystemPageFileInformation 2756 SystemVdmInstemulInformation 2757 SystemVdmBopInformation 2758 SystemFileCacheInformation 2759 SystemPoolTagInformation 2760 SystemInterruptInformation 2761 SystemDpcBehaviorInformation 2762 SystemFullMemoryInformation 2763 SystemLoadGdiDriverInformation 2764 SystemUnloadGdiDriverInformation 2765 SystemTimeAdjustmentInformation 2766 SystemSummaryMemoryInformation 2767 SystemMirrorMemoryInformation 2768 SystemPerformanceTraceInformation 2769 systemObsolete0 2770 SystemExceptionInformation 2771 SystemCrashDumpStateInformation 2772 SystemKernelDebuggerInformation 2773 SystemContextSwitchInformation 2774 SystemRegistryQuotaInformation 2775 SystemExtendServiceTableInformation 2776 SystemPrioritySeperation 2777 SystemVerifierAddDriverInformation 2778 SystemVerifierRemoveDriverInformation 2779 SystemProcessorIdleInformation 2780 SystemLegacyDriverInformation 2781 SystemCurrentTimeZoneInformation 2782 SystemLookasideInformation 2783 SystemTimeSlipNotification 2784 SystemSessionCreate 2785 SystemSessionDetach 2786 SystemSessionInformation 2787 SystemRangeStartInformation 2788 SystemVerifierInformation 2789 SystemVerifierThunkExtend 2790 SystemSessionProcessInformation 2791 SystemLoadGdiDriverInSystemSpace 2792 SystemNumaProcessorMap 2793 SystemPrefetcherInformation 2794 SystemExtendedProcessInformation 2795 SystemRecommendedSharedDataAlignment 2796 SystemComPlusPackage 2797 SystemNumaAvailableMemory 2798 SystemProcessorPowerInformation 2799 SystemEmulationBasicInformation 2800 SystemEmulationProcessorInformation 2801 SystemExtendedHandleInformation 2802 SystemLostDelayedWriteInformation 2803 SystemBigPoolInformation 2804 SystemSessionPoolTagInformation 2805 SystemSessionMappedViewInformation 2806 SystemHotpatchInformation 2807 SystemObjectSecurityMode 2808 SystemWatchdogTimerHandler 2809 SystemWatchdogTimerInformation 2810 SystemLogicalProcessorInformation 2811 SystemWow64SharedInformationObsolete 2812 SystemRegisterFirmwareTableInformationHandler 2813 SystemFirmwareTableInformation 2814 SystemModuleInformationEx 2815 SystemVerifierTriageInformation 2816 SystemSuperfetchInformation 2817 SystemMemoryListInformation 2818 SystemFileCacheInformationEx 2819 SystemThreadPriorityClientIdInformation 2820 SystemProcessorIdleCycleTimeInformation 2821 SystemVerifierCancellationInformation 2822 SystemProcessorPowerInformationEx 2823 SystemRefTraceInformation 2824 SystemSpecialPoolInformation 2825 SystemProcessIdInformation 2826 SystemErrorPortInformation 2827 SystemBootEnvironmentInformation 2828 SystemHypervisorInformation 2829 SystemVerifierInformationEx 2830 SystemTimeZoneInformation 2831 SystemImageFileExecutionOptionsInformation 2832 SystemCoverageInformation 2833 SystemPrefetchPatchInformation 2834 SystemVerifierFaultsInformation 2835 SystemSystemPartitionInformation 2836 SystemSystemDiskInformation 2837 SystemProcessorPerformanceDistribution 2838 SystemNumaProximityNodeInformation 2839 SystemDynamicTimeZoneInformation 2840 SystemCodeIntegrityInformation 2841 SystemProcessorMicrocodeUpdateInformation 2842 SystemProcessorBrandString 2843 SystemVirtualAddressInformation 2844 SystemLogicalProcessorAndGroupInformation 2845 SystemProcessorCycleTimeInformation 2846 SystemStoreInformation 2847 SystemRegistryAppendString 2848 SystemAitSamplingValue 2849 SystemVhdBootInformation 2850 SystemCpuQuotaInformation 2851 SystemNativeBasicInformation 2852 systemSpare1 2853 SystemLowPriorityIoInformation 2854 SystemTpmBootEntropyInformation 2855 SystemVerifierCountersInformation 2856 SystemPagedPoolInformationEx 2857 SystemSystemPtesInformationEx 2858 SystemNodeDistanceInformation 2859 SystemAcpiAuditInformation 2860 SystemBasicPerformanceInformation 2861 SystemQueryPerformanceCounterInformation 2862 SystemSessionBigPoolInformation 2863 SystemBootGraphicsInformation 2864 SystemScrubPhysicalMemoryInformation 2865 SystemBadPageInformation 2866 SystemProcessorProfileControlArea 2867 SystemCombinePhysicalMemoryInformation 2868 SystemEntropyInterruptTimingCallback 2869 SystemConsoleInformation 2870 SystemPlatformBinaryInformation 2871 SystemThrottleNotificationInformation 2872 SystemHypervisorProcessorCountInformation 2873 SystemDeviceDataInformation 2874 SystemDeviceDataEnumerationInformation 2875 SystemMemoryTopologyInformation 2876 SystemMemoryChannelInformation 2877 SystemBootLogoInformation 2878 SystemProcessorPerformanceInformationEx 2879 systemSpare0 2880 SystemSecureBootPolicyInformation 2881 SystemPageFileInformationEx 2882 SystemSecureBootInformation 2883 SystemEntropyInterruptTimingRawInformation 2884 SystemPortableWorkspaceEfiLauncherInformation 2885 SystemFullProcessInformation 2886 SystemKernelDebuggerInformationEx 2887 SystemBootMetadataInformation 2888 SystemSoftRebootInformation 2889 SystemElamCertificateInformation 2890 SystemOfflineDumpConfigInformation 2891 SystemProcessorFeaturesInformation 2892 SystemRegistryReconciliationInformation 2893 SystemEdidInformation 2894 SystemManufacturingInformation 2895 SystemEnergyEstimationConfigInformation 2896 SystemHypervisorDetailInformation 2897 SystemProcessorCycleStatsInformation 2898 SystemVmGenerationCountInformation 2899 SystemTrustedPlatformModuleInformation 2900 SystemKernelDebuggerFlags 2901 SystemCodeIntegrityPolicyInformation 2902 SystemIsolatedUserModeInformation 2903 SystemHardwareSecurityTestInterfaceResultsInformation 2904 SystemSingleModuleInformation 2905 SystemAllowedCpuSetsInformation 2906 SystemDmaProtectionInformation 2907 SystemInterruptCpuSetsInformation 2908 SystemSecureBootPolicyFullInformation 2909 SystemCodeIntegrityPolicyFullInformation 2910 SystemAffinitizedInterruptProcessorInformation 2911 SystemRootSiloInformation 2912) 2913 2914type RTL_PROCESS_MODULE_INFORMATION struct { 2915 Section Handle 2916 MappedBase uintptr 2917 ImageBase uintptr 2918 ImageSize uint32 2919 Flags uint32 2920 LoadOrderIndex uint16 2921 InitOrderIndex uint16 2922 LoadCount uint16 2923 OffsetToFileName uint16 2924 FullPathName [256]byte 2925} 2926 2927type RTL_PROCESS_MODULES struct { 2928 NumberOfModules uint32 2929 Modules [1]RTL_PROCESS_MODULE_INFORMATION 2930} 2931 2932// Constants for LocalAlloc flags. 2933const ( 2934 LMEM_FIXED = 0x0 2935 LMEM_MOVEABLE = 0x2 2936 LMEM_NOCOMPACT = 0x10 2937 LMEM_NODISCARD = 0x20 2938 LMEM_ZEROINIT = 0x40 2939 LMEM_MODIFY = 0x80 2940 LMEM_DISCARDABLE = 0xf00 2941 LMEM_VALID_FLAGS = 0xf72 2942 LMEM_INVALID_HANDLE = 0x8000 2943 LHND = LMEM_MOVEABLE | LMEM_ZEROINIT 2944 LPTR = LMEM_FIXED | LMEM_ZEROINIT 2945 NONZEROLHND = LMEM_MOVEABLE 2946 NONZEROLPTR = LMEM_FIXED 2947) 2948 2949// Constants for the CreateNamedPipe-family of functions. 2950const ( 2951 PIPE_ACCESS_INBOUND = 0x1 2952 PIPE_ACCESS_OUTBOUND = 0x2 2953 PIPE_ACCESS_DUPLEX = 0x3 2954 2955 PIPE_CLIENT_END = 0x0 2956 PIPE_SERVER_END = 0x1 2957 2958 PIPE_WAIT = 0x0 2959 PIPE_NOWAIT = 0x1 2960 PIPE_READMODE_BYTE = 0x0 2961 PIPE_READMODE_MESSAGE = 0x2 2962 PIPE_TYPE_BYTE = 0x0 2963 PIPE_TYPE_MESSAGE = 0x4 2964 PIPE_ACCEPT_REMOTE_CLIENTS = 0x0 2965 PIPE_REJECT_REMOTE_CLIENTS = 0x8 2966 2967 PIPE_UNLIMITED_INSTANCES = 255 2968) 2969 2970// Constants for security attributes when opening named pipes. 2971const ( 2972 SECURITY_ANONYMOUS = SecurityAnonymous << 16 2973 SECURITY_IDENTIFICATION = SecurityIdentification << 16 2974 SECURITY_IMPERSONATION = SecurityImpersonation << 16 2975 SECURITY_DELEGATION = SecurityDelegation << 16 2976 2977 SECURITY_CONTEXT_TRACKING = 0x40000 2978 SECURITY_EFFECTIVE_ONLY = 0x80000 2979 2980 SECURITY_SQOS_PRESENT = 0x100000 2981 SECURITY_VALID_SQOS_FLAGS = 0x1f0000 2982) 2983 2984// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro. 2985type ResourceID uint16 2986 2987// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID, 2988// or a string, to specify a resource or resource type by name. 2989type ResourceIDOrString interface{} 2990 2991// Predefined resource names and types. 2992var ( 2993 // Predefined names. 2994 CREATEPROCESS_MANIFEST_RESOURCE_ID ResourceID = 1 2995 ISOLATIONAWARE_MANIFEST_RESOURCE_ID ResourceID = 2 2996 ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3 2997 ISOLATIONPOLICY_MANIFEST_RESOURCE_ID ResourceID = 4 2998 ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID ResourceID = 5 2999 MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 1 // inclusive 3000 MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 16 // inclusive 3001 3002 // Predefined types. 3003 RT_CURSOR ResourceID = 1 3004 RT_BITMAP ResourceID = 2 3005 RT_ICON ResourceID = 3 3006 RT_MENU ResourceID = 4 3007 RT_DIALOG ResourceID = 5 3008 RT_STRING ResourceID = 6 3009 RT_FONTDIR ResourceID = 7 3010 RT_FONT ResourceID = 8 3011 RT_ACCELERATOR ResourceID = 9 3012 RT_RCDATA ResourceID = 10 3013 RT_MESSAGETABLE ResourceID = 11 3014 RT_GROUP_CURSOR ResourceID = 12 3015 RT_GROUP_ICON ResourceID = 14 3016 RT_VERSION ResourceID = 16 3017 RT_DLGINCLUDE ResourceID = 17 3018 RT_PLUGPLAY ResourceID = 19 3019 RT_VXD ResourceID = 20 3020 RT_ANICURSOR ResourceID = 21 3021 RT_ANIICON ResourceID = 22 3022 RT_HTML ResourceID = 23 3023 RT_MANIFEST ResourceID = 24 3024) 3025 3026type VS_FIXEDFILEINFO struct { 3027 Signature uint32 3028 StrucVersion uint32 3029 FileVersionMS uint32 3030 FileVersionLS uint32 3031 ProductVersionMS uint32 3032 ProductVersionLS uint32 3033 FileFlagsMask uint32 3034 FileFlags uint32 3035 FileOS uint32 3036 FileType uint32 3037 FileSubtype uint32 3038 FileDateMS uint32 3039 FileDateLS uint32 3040} 3041 3042type COAUTHIDENTITY struct { 3043 User *uint16 3044 UserLength uint32 3045 Domain *uint16 3046 DomainLength uint32 3047 Password *uint16 3048 PasswordLength uint32 3049 Flags uint32 3050} 3051 3052type COAUTHINFO struct { 3053 AuthnSvc uint32 3054 AuthzSvc uint32 3055 ServerPrincName *uint16 3056 AuthnLevel uint32 3057 ImpersonationLevel uint32 3058 AuthIdentityData *COAUTHIDENTITY 3059 Capabilities uint32 3060} 3061 3062type COSERVERINFO struct { 3063 Reserved1 uint32 3064 Aame *uint16 3065 AuthInfo *COAUTHINFO 3066 Reserved2 uint32 3067} 3068 3069type BIND_OPTS3 struct { 3070 CbStruct uint32 3071 Flags uint32 3072 Mode uint32 3073 TickCountDeadline uint32 3074 TrackFlags uint32 3075 ClassContext uint32 3076 Locale uint32 3077 ServerInfo *COSERVERINFO 3078 Hwnd HWND 3079} 3080 3081const ( 3082 CLSCTX_INPROC_SERVER = 0x1 3083 CLSCTX_INPROC_HANDLER = 0x2 3084 CLSCTX_LOCAL_SERVER = 0x4 3085 CLSCTX_INPROC_SERVER16 = 0x8 3086 CLSCTX_REMOTE_SERVER = 0x10 3087 CLSCTX_INPROC_HANDLER16 = 0x20 3088 CLSCTX_RESERVED1 = 0x40 3089 CLSCTX_RESERVED2 = 0x80 3090 CLSCTX_RESERVED3 = 0x100 3091 CLSCTX_RESERVED4 = 0x200 3092 CLSCTX_NO_CODE_DOWNLOAD = 0x400 3093 CLSCTX_RESERVED5 = 0x800 3094 CLSCTX_NO_CUSTOM_MARSHAL = 0x1000 3095 CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000 3096 CLSCTX_NO_FAILURE_LOG = 0x4000 3097 CLSCTX_DISABLE_AAA = 0x8000 3098 CLSCTX_ENABLE_AAA = 0x10000 3099 CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 3100 CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000 3101 CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000 3102 CLSCTX_ENABLE_CLOAKING = 0x100000 3103 CLSCTX_APPCONTAINER = 0x400000 3104 CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000 3105 CLSCTX_PS_DLL = 0x80000000 3106 3107 COINIT_MULTITHREADED = 0x0 3108 COINIT_APARTMENTTHREADED = 0x2 3109 COINIT_DISABLE_OLE1DDE = 0x4 3110 COINIT_SPEED_OVER_MEMORY = 0x8 3111) 3112 3113// Flag for QueryFullProcessImageName. 3114const PROCESS_NAME_NATIVE = 1 3115 3116type ModuleInfo struct { 3117 BaseOfDll uintptr 3118 SizeOfImage uint32 3119 EntryPoint uintptr 3120} 3121