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