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