| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package windows |
| |
| import ( |
| "net" |
| "syscall" |
| "unsafe" |
| ) |
| |
| // NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and |
| // other native functions. |
| type NTStatus uint32 |
| |
| const ( |
| // Invented values to support what package os expects. |
| O_RDONLY = 0x00000 |
| O_WRONLY = 0x00001 |
| O_RDWR = 0x00002 |
| O_CREAT = 0x00040 |
| O_EXCL = 0x00080 |
| O_NOCTTY = 0x00100 |
| O_TRUNC = 0x00200 |
| O_NONBLOCK = 0x00800 |
| O_APPEND = 0x00400 |
| O_SYNC = 0x01000 |
| O_ASYNC = 0x02000 |
| O_CLOEXEC = 0x80000 |
| ) |
| |
| const ( |
| // More invented values for signals |
| SIGHUP = Signal(0x1) |
| SIGINT = Signal(0x2) |
| SIGQUIT = Signal(0x3) |
| SIGILL = Signal(0x4) |
| SIGTRAP = Signal(0x5) |
| SIGABRT = Signal(0x6) |
| SIGBUS = Signal(0x7) |
| SIGFPE = Signal(0x8) |
| SIGKILL = Signal(0x9) |
| SIGSEGV = Signal(0xb) |
| SIGPIPE = Signal(0xd) |
| SIGALRM = Signal(0xe) |
| SIGTERM = Signal(0xf) |
| ) |
| |
| var signals = [...]string{ |
| 1: "hangup", |
| 2: "interrupt", |
| 3: "quit", |
| 4: "illegal instruction", |
| 5: "trace/breakpoint trap", |
| 6: "aborted", |
| 7: "bus error", |
| 8: "floating point exception", |
| 9: "killed", |
| 10: "user defined signal 1", |
| 11: "segmentation fault", |
| 12: "user defined signal 2", |
| 13: "broken pipe", |
| 14: "alarm clock", |
| 15: "terminated", |
| } |
| |
| const ( |
| FILE_LIST_DIRECTORY = 0x00000001 |
| FILE_APPEND_DATA = 0x00000004 |
| FILE_WRITE_ATTRIBUTES = 0x00000100 |
| |
| FILE_SHARE_READ = 0x00000001 |
| FILE_SHARE_WRITE = 0x00000002 |
| FILE_SHARE_DELETE = 0x00000004 |
| |
| FILE_ATTRIBUTE_READONLY = 0x00000001 |
| FILE_ATTRIBUTE_HIDDEN = 0x00000002 |
| FILE_ATTRIBUTE_SYSTEM = 0x00000004 |
| FILE_ATTRIBUTE_DIRECTORY = 0x00000010 |
| FILE_ATTRIBUTE_ARCHIVE = 0x00000020 |
| FILE_ATTRIBUTE_DEVICE = 0x00000040 |
| FILE_ATTRIBUTE_NORMAL = 0x00000080 |
| FILE_ATTRIBUTE_TEMPORARY = 0x00000100 |
| FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 |
| FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 |
| FILE_ATTRIBUTE_COMPRESSED = 0x00000800 |
| FILE_ATTRIBUTE_OFFLINE = 0x00001000 |
| FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 |
| FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 |
| FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 |
| FILE_ATTRIBUTE_VIRTUAL = 0x00010000 |
| FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 |
| FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 |
| FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 |
| |
| INVALID_FILE_ATTRIBUTES = 0xffffffff |
| |
| CREATE_NEW = 1 |
| CREATE_ALWAYS = 2 |
| OPEN_EXISTING = 3 |
| OPEN_ALWAYS = 4 |
| TRUNCATE_EXISTING = 5 |
| |
| FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 |
| FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 |
| FILE_FLAG_OPEN_NO_RECALL = 0x00100000 |
| FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 |
| FILE_FLAG_SESSION_AWARE = 0x00800000 |
| FILE_FLAG_POSIX_SEMANTICS = 0x01000000 |
| FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 |
| FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 |
| FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 |
| FILE_FLAG_RANDOM_ACCESS = 0x10000000 |
| FILE_FLAG_NO_BUFFERING = 0x20000000 |
| FILE_FLAG_OVERLAPPED = 0x40000000 |
| FILE_FLAG_WRITE_THROUGH = 0x80000000 |
| |
| HANDLE_FLAG_INHERIT = 0x00000001 |
| STARTF_USESTDHANDLES = 0x00000100 |
| STARTF_USESHOWWINDOW = 0x00000001 |
| DUPLICATE_CLOSE_SOURCE = 0x00000001 |
| DUPLICATE_SAME_ACCESS = 0x00000002 |
| |
| STD_INPUT_HANDLE = -10 & (1<<32 - 1) |
| STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) |
| STD_ERROR_HANDLE = -12 & (1<<32 - 1) |
| |
| FILE_BEGIN = 0 |
| FILE_CURRENT = 1 |
| FILE_END = 2 |
| |
| LANG_ENGLISH = 0x09 |
| SUBLANG_ENGLISH_US = 0x01 |
| |
| FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 |
| FORMAT_MESSAGE_IGNORE_INSERTS = 512 |
| FORMAT_MESSAGE_FROM_STRING = 1024 |
| FORMAT_MESSAGE_FROM_HMODULE = 2048 |
| FORMAT_MESSAGE_FROM_SYSTEM = 4096 |
| FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 |
| FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 |
| |
| MAX_PATH = 260 |
| MAX_LONG_PATH = 32768 |
| |
| MAX_COMPUTERNAME_LENGTH = 15 |
| |
| TIME_ZONE_ID_UNKNOWN = 0 |
| TIME_ZONE_ID_STANDARD = 1 |
| |
| TIME_ZONE_ID_DAYLIGHT = 2 |
| IGNORE = 0 |
| INFINITE = 0xffffffff |
| |
| WAIT_ABANDONED = 0x00000080 |
| WAIT_OBJECT_0 = 0x00000000 |
| WAIT_FAILED = 0xFFFFFFFF |
| |
| // Access rights for process. |
| PROCESS_CREATE_PROCESS = 0x0080 |
| PROCESS_CREATE_THREAD = 0x0002 |
| PROCESS_DUP_HANDLE = 0x0040 |
| PROCESS_QUERY_INFORMATION = 0x0400 |
| PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 |
| PROCESS_SET_INFORMATION = 0x0200 |
| PROCESS_SET_QUOTA = 0x0100 |
| PROCESS_SUSPEND_RESUME = 0x0800 |
| PROCESS_TERMINATE = 0x0001 |
| PROCESS_VM_OPERATION = 0x0008 |
| PROCESS_VM_READ = 0x0010 |
| PROCESS_VM_WRITE = 0x0020 |
| |
| // Access rights for thread. |
| THREAD_DIRECT_IMPERSONATION = 0x0200 |
| THREAD_GET_CONTEXT = 0x0008 |
| THREAD_IMPERSONATE = 0x0100 |
| THREAD_QUERY_INFORMATION = 0x0040 |
| THREAD_QUERY_LIMITED_INFORMATION = 0x0800 |
| THREAD_SET_CONTEXT = 0x0010 |
| THREAD_SET_INFORMATION = 0x0020 |
| THREAD_SET_LIMITED_INFORMATION = 0x0400 |
| THREAD_SET_THREAD_TOKEN = 0x0080 |
| THREAD_SUSPEND_RESUME = 0x0002 |
| THREAD_TERMINATE = 0x0001 |
| |
| FILE_MAP_COPY = 0x01 |
| FILE_MAP_WRITE = 0x02 |
| FILE_MAP_READ = 0x04 |
| FILE_MAP_EXECUTE = 0x20 |
| |
| CTRL_C_EVENT = 0 |
| CTRL_BREAK_EVENT = 1 |
| CTRL_CLOSE_EVENT = 2 |
| CTRL_LOGOFF_EVENT = 5 |
| CTRL_SHUTDOWN_EVENT = 6 |
| |
| // Windows reserves errors >= 1<<29 for application use. |
| APPLICATION_ERROR = 1 << 29 |
| ) |
| |
| const ( |
| // Process creation flags. |
| CREATE_BREAKAWAY_FROM_JOB = 0x01000000 |
| CREATE_DEFAULT_ERROR_MODE = 0x04000000 |
| CREATE_NEW_CONSOLE = 0x00000010 |
| CREATE_NEW_PROCESS_GROUP = 0x00000200 |
| CREATE_NO_WINDOW = 0x08000000 |
| CREATE_PROTECTED_PROCESS = 0x00040000 |
| CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 |
| CREATE_SEPARATE_WOW_VDM = 0x00000800 |
| CREATE_SHARED_WOW_VDM = 0x00001000 |
| CREATE_SUSPENDED = 0x00000004 |
| CREATE_UNICODE_ENVIRONMENT = 0x00000400 |
| DEBUG_ONLY_THIS_PROCESS = 0x00000002 |
| DEBUG_PROCESS = 0x00000001 |
| DETACHED_PROCESS = 0x00000008 |
| EXTENDED_STARTUPINFO_PRESENT = 0x00080000 |
| INHERIT_PARENT_AFFINITY = 0x00010000 |
| ) |
| |
| const ( |
| // attributes for ProcThreadAttributeList |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 |
| PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 |
| PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 |
| PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 |
| PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 |
| PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 |
| PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 |
| PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b |
| ) |
| |
| const ( |
| // flags for CreateToolhelp32Snapshot |
| TH32CS_SNAPHEAPLIST = 0x01 |
| TH32CS_SNAPPROCESS = 0x02 |
| TH32CS_SNAPTHREAD = 0x04 |
| TH32CS_SNAPMODULE = 0x08 |
| TH32CS_SNAPMODULE32 = 0x10 |
| TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD |
| TH32CS_INHERIT = 0x80000000 |
| ) |
| |
| const ( |
| // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW |
| FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 |
| FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 |
| FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 |
| FILE_NOTIFY_CHANGE_SIZE = 0x008 |
| FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 |
| FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 |
| FILE_NOTIFY_CHANGE_CREATION = 0x040 |
| FILE_NOTIFY_CHANGE_SECURITY = 0x100 |
| ) |
| |
| const ( |
| // do not reorder |
| FILE_ACTION_ADDED = iota + 1 |
| FILE_ACTION_REMOVED |
| FILE_ACTION_MODIFIED |
| FILE_ACTION_RENAMED_OLD_NAME |
| FILE_ACTION_RENAMED_NEW_NAME |
| ) |
| |
| const ( |
| // wincrypt.h |
| /* certenrolld_begin -- PROV_RSA_*/ |
| PROV_RSA_FULL = 1 |
| PROV_RSA_SIG = 2 |
| PROV_DSS = 3 |
| PROV_FORTEZZA = 4 |
| PROV_MS_EXCHANGE = 5 |
| PROV_SSL = 6 |
| PROV_RSA_SCHANNEL = 12 |
| PROV_DSS_DH = 13 |
| PROV_EC_ECDSA_SIG = 14 |
| PROV_EC_ECNRA_SIG = 15 |
| PROV_EC_ECDSA_FULL = 16 |
| PROV_EC_ECNRA_FULL = 17 |
| PROV_DH_SCHANNEL = 18 |
| PROV_SPYRUS_LYNKS = 20 |
| PROV_RNG = 21 |
| PROV_INTEL_SEC = 22 |
| PROV_REPLACE_OWF = 23 |
| PROV_RSA_AES = 24 |
| |
| /* dwFlags definitions for CryptAcquireContext */ |
| CRYPT_VERIFYCONTEXT = 0xF0000000 |
| CRYPT_NEWKEYSET = 0x00000008 |
| CRYPT_DELETEKEYSET = 0x00000010 |
| CRYPT_MACHINE_KEYSET = 0x00000020 |
| CRYPT_SILENT = 0x00000040 |
| CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 |
| |
| /* Flags for PFXImportCertStore */ |
| CRYPT_EXPORTABLE = 0x00000001 |
| CRYPT_USER_PROTECTED = 0x00000002 |
| CRYPT_USER_KEYSET = 0x00001000 |
| PKCS12_PREFER_CNG_KSP = 0x00000100 |
| PKCS12_ALWAYS_CNG_KSP = 0x00000200 |
| PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000 |
| PKCS12_NO_PERSIST_KEY = 0x00008000 |
| PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 |
| |
| /* Flags for CryptAcquireCertificatePrivateKey */ |
| CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 |
| CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 |
| CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 |
| CRYPT_ACQUIRE_NO_HEALING = 0x00000008 |
| CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 |
| CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 |
| CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 |
| CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 |
| CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 |
| CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 |
| |
| /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ |
| AT_KEYEXCHANGE = 1 |
| AT_SIGNATURE = 2 |
| CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF |
| |
| /* Default usage match type is AND with value zero */ |
| USAGE_MATCH_TYPE_AND = 0 |
| USAGE_MATCH_TYPE_OR = 1 |
| |
| /* msgAndCertEncodingType values for CertOpenStore function */ |
| X509_ASN_ENCODING = 0x00000001 |
| PKCS_7_ASN_ENCODING = 0x00010000 |
| |
| /* storeProvider values for CertOpenStore function */ |
| CERT_STORE_PROV_MSG = 1 |
| CERT_STORE_PROV_MEMORY = 2 |
| CERT_STORE_PROV_FILE = 3 |
| CERT_STORE_PROV_REG = 4 |
| CERT_STORE_PROV_PKCS7 = 5 |
| CERT_STORE_PROV_SERIALIZED = 6 |
| CERT_STORE_PROV_FILENAME_A = 7 |
| CERT_STORE_PROV_FILENAME_W = 8 |
| CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W |
| CERT_STORE_PROV_SYSTEM_A = 9 |
| CERT_STORE_PROV_SYSTEM_W = 10 |
| CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W |
| CERT_STORE_PROV_COLLECTION = 11 |
| CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 |
| CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 |
| CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W |
| CERT_STORE_PROV_PHYSICAL_W = 14 |
| CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W |
| CERT_STORE_PROV_SMART_CARD_W = 15 |
| CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W |
| CERT_STORE_PROV_LDAP_W = 16 |
| CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W |
| CERT_STORE_PROV_PKCS12 = 17 |
| |
| /* store characteristics (low WORD of flag) for CertOpenStore function */ |
| CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 |
| CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 |
| CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 |
| CERT_STORE_DELETE_FLAG = 0x00000010 |
| CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 |
| CERT_STORE_SHARE_STORE_FLAG = 0x00000040 |
| CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 |
| CERT_STORE_MANIFOLD_FLAG = 0x00000100 |
| CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 |
| CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 |
| CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 |
| CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 |
| CERT_STORE_CREATE_NEW_FLAG = 0x00002000 |
| CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 |
| CERT_STORE_READONLY_FLAG = 0x00008000 |
| |
| /* store locations (high WORD of flag) for CertOpenStore function */ |
| CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 |
| CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 |
| CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 |
| CERT_SYSTEM_STORE_SERVICES = 0x00050000 |
| CERT_SYSTEM_STORE_USERS = 0x00060000 |
| CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 |
| CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 |
| CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 |
| CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 |
| CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 |
| |
| /* Miscellaneous high-WORD flags for CertOpenStore function */ |
| CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 |
| CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 |
| CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 |
| CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 |
| CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 |
| CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 |
| CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 |
| CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 |
| CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 |
| CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 |
| CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 |
| |
| /* addDisposition values for CertAddCertificateContextToStore function */ |
| CERT_STORE_ADD_NEW = 1 |
| CERT_STORE_ADD_USE_EXISTING = 2 |
| CERT_STORE_ADD_REPLACE_EXISTING = 3 |
| CERT_STORE_ADD_ALWAYS = 4 |
| CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 |
| CERT_STORE_ADD_NEWER = 6 |
| CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 |
| |
| /* ErrorStatus values for CertTrustStatus struct */ |
| CERT_TRUST_NO_ERROR = 0x00000000 |
| CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 |
| CERT_TRUST_IS_REVOKED = 0x00000004 |
| CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 |
| CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 |
| CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 |
| CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 |
| CERT_TRUST_IS_CYCLIC = 0x00000080 |
| CERT_TRUST_INVALID_EXTENSION = 0x00000100 |
| CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 |
| CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 |
| CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 |
| CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 |
| CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 |
| CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 |
| CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 |
| CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 |
| CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 |
| CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 |
| CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 |
| CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 |
| CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 |
| CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 |
| CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 |
| CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 |
| |
| /* InfoStatus values for CertTrustStatus struct */ |
| CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 |
| CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 |
| CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 |
| CERT_TRUST_IS_SELF_SIGNED = 0x00000008 |
| CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 |
| CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 |
| CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 |
| CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 |
| CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 |
| CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 |
| CERT_TRUST_IS_CA_TRUSTED = 0x00004000 |
| CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 |
| |
| /* Certificate Information Flags */ |
| CERT_INFO_VERSION_FLAG = 1 |
| CERT_INFO_SERIAL_NUMBER_FLAG = 2 |
| CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 |
| CERT_INFO_ISSUER_FLAG = 4 |
| CERT_INFO_NOT_BEFORE_FLAG = 5 |
| CERT_INFO_NOT_AFTER_FLAG = 6 |
| CERT_INFO_SUBJECT_FLAG = 7 |
| CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 |
| CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 |
| CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 |
| CERT_INFO_EXTENSION_FLAG = 11 |
| |
| /* dwFindType for CertFindCertificateInStore */ |
| CERT_COMPARE_MASK = 0xFFFF |
| CERT_COMPARE_SHIFT = 16 |
| CERT_COMPARE_ANY = 0 |
| CERT_COMPARE_SHA1_HASH = 1 |
| CERT_COMPARE_NAME = 2 |
| CERT_COMPARE_ATTR = 3 |
| CERT_COMPARE_MD5_HASH = 4 |
| CERT_COMPARE_PROPERTY = 5 |
| CERT_COMPARE_PUBLIC_KEY = 6 |
| CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH |
| CERT_COMPARE_NAME_STR_A = 7 |
| CERT_COMPARE_NAME_STR_W = 8 |
| CERT_COMPARE_KEY_SPEC = 9 |
| CERT_COMPARE_ENHKEY_USAGE = 10 |
| CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE |
| CERT_COMPARE_SUBJECT_CERT = 11 |
| CERT_COMPARE_ISSUER_OF = 12 |
| CERT_COMPARE_EXISTING = 13 |
| CERT_COMPARE_SIGNATURE_HASH = 14 |
| CERT_COMPARE_KEY_IDENTIFIER = 15 |
| CERT_COMPARE_CERT_ID = 16 |
| CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 |
| CERT_COMPARE_PUBKEY_MD5_HASH = 18 |
| CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 |
| CERT_COMPARE_HASH_STR = 20 |
| CERT_COMPARE_HAS_PRIVATE_KEY = 21 |
| CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) |
| CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) |
| CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) |
| CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) |
| CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) |
| CERT_FIND_HASH = CERT_FIND_SHA1_HASH |
| CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) |
| CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) |
| CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) |
| CERT_FIND_SUBJECT_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) |
| CERT_FIND_ISSUER_NAME = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) |
| CERT_FIND_ISSUER_ATTR = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) |
| CERT_FIND_SUBJECT_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) |
| CERT_FIND_SUBJECT_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) |
| CERT_FIND_SUBJECT_STR = CERT_FIND_SUBJECT_STR_W |
| CERT_FIND_ISSUER_STR_A = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) |
| CERT_FIND_ISSUER_STR_W = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) |
| CERT_FIND_ISSUER_STR = CERT_FIND_ISSUER_STR_W |
| CERT_FIND_KEY_SPEC = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT) |
| CERT_FIND_ENHKEY_USAGE = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT) |
| CERT_FIND_CTL_USAGE = CERT_FIND_ENHKEY_USAGE |
| CERT_FIND_SUBJECT_CERT = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT) |
| CERT_FIND_ISSUER_OF = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT) |
| CERT_FIND_EXISTING = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT) |
| CERT_FIND_CERT_ID = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT) |
| CERT_FIND_CROSS_CERT_DIST_POINTS = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT) |
| CERT_FIND_PUBKEY_MD5_HASH = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT) |
| CERT_FIND_SUBJECT_INFO_ACCESS = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT) |
| CERT_FIND_HASH_STR = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT) |
| CERT_FIND_HAS_PRIVATE_KEY = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT) |
| CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 0x1 |
| CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 0x2 |
| CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4 |
| CERT_FIND_NO_ENHKEY_USAGE_FLAG = 0x8 |
| CERT_FIND_OR_ENHKEY_USAGE_FLAG = 0x10 |
| CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 0x20 |
| CERT_FIND_OPTIONAL_CTL_USAGE_FLAG = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG |
| CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG |
| CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG |
| CERT_FIND_NO_CTL_USAGE_FLAG = CERT_FIND_NO_ENHKEY_USAGE_FLAG |
| CERT_FIND_OR_CTL_USAGE_FLAG = CERT_FIND_OR_ENHKEY_USAGE_FLAG |
| CERT_FIND_VALID_CTL_USAGE_FLAG = CERT_FIND_VALID_ENHKEY_USAGE_FLAG |
| |
| /* policyOID values for CertVerifyCertificateChainPolicy function */ |
| CERT_CHAIN_POLICY_BASE = 1 |
| CERT_CHAIN_POLICY_AUTHENTICODE = 2 |
| CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 |
| CERT_CHAIN_POLICY_SSL = 4 |
| CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 |
| CERT_CHAIN_POLICY_NT_AUTH = 6 |
| CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 |
| CERT_CHAIN_POLICY_EV = 8 |
| CERT_CHAIN_POLICY_SSL_F12 = 9 |
| |
| /* flag for dwFindType CertFindChainInStore */ |
| CERT_CHAIN_FIND_BY_ISSUER = 1 |
| |
| /* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */ |
| CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 0x0001 |
| CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 0x0002 |
| CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004 |
| CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 0x0008 |
| CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 0x4000 |
| CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 0x8000 |
| |
| /* Certificate Store close flags */ |
| CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001 |
| CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002 |
| |
| /* CryptQueryObject object type */ |
| CERT_QUERY_OBJECT_FILE = 1 |
| CERT_QUERY_OBJECT_BLOB = 2 |
| |
| /* CryptQueryObject content type flags */ |
| CERT_QUERY_CONTENT_CERT = 1 |
| CERT_QUERY_CONTENT_CTL = 2 |
| CERT_QUERY_CONTENT_CRL = 3 |
| CERT_QUERY_CONTENT_SERIALIZED_STORE = 4 |
| CERT_QUERY_CONTENT_SERIALIZED_CERT = 5 |
| CERT_QUERY_CONTENT_SERIALIZED_CTL = 6 |
| CERT_QUERY_CONTENT_SERIALIZED_CRL = 7 |
| CERT_QUERY_CONTENT_PKCS7_SIGNED = 8 |
| CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9 |
| CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10 |
| CERT_QUERY_CONTENT_PKCS10 = 11 |
| CERT_QUERY_CONTENT_PFX = 12 |
| CERT_QUERY_CONTENT_CERT_PAIR = 13 |
| CERT_QUERY_CONTENT_PFX_AND_LOAD = 14 |
| CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT) |
| CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL) |
| CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL) |
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE) |
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT) |
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL) |
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL) |
| CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED) |
| CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED) |
| CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED) |
| CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10) |
| CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX) |
| CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR) |
| CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD) |
| 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) |
| 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) |
| |
| /* CryptQueryObject format type flags */ |
| CERT_QUERY_FORMAT_BINARY = 1 |
| CERT_QUERY_FORMAT_BASE64_ENCODED = 2 |
| CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3 |
| CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY) |
| CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED) |
| CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) |
| CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED) |
| |
| /* CertGetNameString name types */ |
| CERT_NAME_EMAIL_TYPE = 1 |
| CERT_NAME_RDN_TYPE = 2 |
| CERT_NAME_ATTR_TYPE = 3 |
| CERT_NAME_SIMPLE_DISPLAY_TYPE = 4 |
| CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5 |
| CERT_NAME_DNS_TYPE = 6 |
| CERT_NAME_URL_TYPE = 7 |
| CERT_NAME_UPN_TYPE = 8 |
| |
| /* CertGetNameString flags */ |
| CERT_NAME_ISSUER_FLAG = 0x1 |
| CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000 |
| CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2 |
| CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000 |
| |
| /* AuthType values for SSLExtraCertChainPolicyPara struct */ |
| AUTHTYPE_CLIENT = 1 |
| AUTHTYPE_SERVER = 2 |
| |
| /* Checks values for SSLExtraCertChainPolicyPara struct */ |
| SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 |
| SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 |
| SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 |
| SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 |
| SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 |
| |
| /* Flags for Crypt[Un]ProtectData */ |
| CRYPTPROTECT_UI_FORBIDDEN = 0x1 |
| CRYPTPROTECT_LOCAL_MACHINE = 0x4 |
| CRYPTPROTECT_CRED_SYNC = 0x8 |
| CRYPTPROTECT_AUDIT = 0x10 |
| CRYPTPROTECT_NO_RECOVERY = 0x20 |
| CRYPTPROTECT_VERIFY_PROTECTION = 0x40 |
| CRYPTPROTECT_CRED_REGENERATE = 0x80 |
| |
| /* Flags for CryptProtectPromptStruct */ |
| CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1 |
| CRYPTPROTECT_PROMPT_ON_PROTECT = 2 |
| CRYPTPROTECT_PROMPT_RESERVED = 4 |
| CRYPTPROTECT_PROMPT_STRONG = 8 |
| CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16 |
| ) |
| |
| const ( |
| // flags for SetErrorMode |
| SEM_FAILCRITICALERRORS = 0x0001 |
| SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 |
| SEM_NOGPFAULTERRORBOX = 0x0002 |
| SEM_NOOPENFILEERRORBOX = 0x8000 |
| ) |
| |
| const ( |
| // Priority class. |
| ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 |
| BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 |
| HIGH_PRIORITY_CLASS = 0x00000080 |
| IDLE_PRIORITY_CLASS = 0x00000040 |
| NORMAL_PRIORITY_CLASS = 0x00000020 |
| PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000 |
| PROCESS_MODE_BACKGROUND_END = 0x00200000 |
| REALTIME_PRIORITY_CLASS = 0x00000100 |
| ) |
| |
| /* wintrust.h constants for WinVerifyTrustEx */ |
| const ( |
| WTD_UI_ALL = 1 |
| WTD_UI_NONE = 2 |
| WTD_UI_NOBAD = 3 |
| WTD_UI_NOGOOD = 4 |
| |
| WTD_REVOKE_NONE = 0 |
| WTD_REVOKE_WHOLECHAIN = 1 |
| |
| WTD_CHOICE_FILE = 1 |
| WTD_CHOICE_CATALOG = 2 |
| WTD_CHOICE_BLOB = 3 |
| WTD_CHOICE_SIGNER = 4 |
| WTD_CHOICE_CERT = 5 |
| |
| WTD_STATEACTION_IGNORE = 0x00000000 |
| WTD_STATEACTION_VERIFY = 0x00000001 |
| WTD_STATEACTION_CLOSE = 0x00000002 |
| WTD_STATEACTION_AUTO_CACHE = 0x00000003 |
| WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004 |
| |
| WTD_USE_IE4_TRUST_FLAG = 0x1 |
| WTD_NO_IE4_CHAIN_FLAG = 0x2 |
| WTD_NO_POLICY_USAGE_FLAG = 0x4 |
| WTD_REVOCATION_CHECK_NONE = 0x10 |
| WTD_REVOCATION_CHECK_END_CERT = 0x20 |
| WTD_REVOCATION_CHECK_CHAIN = 0x40 |
| WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80 |
| WTD_SAFER_FLAG = 0x100 |
| WTD_HASH_ONLY_FLAG = 0x200 |
| WTD_USE_DEFAULT_OSVER_CHECK = 0x400 |
| WTD_LIFETIME_SIGNING_FLAG = 0x800 |
| WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000 |
| WTD_DISABLE_MD2_MD4 = 0x2000 |
| WTD_MOTW = 0x4000 |
| |
| WTD_UICONTEXT_EXECUTE = 0 |
| WTD_UICONTEXT_INSTALL = 1 |
| ) |
| |
| var ( |
| OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") |
| OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") |
| OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") |
| |
| WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{ |
| Data1: 0xaac56b, |
| Data2: 0xcd44, |
| Data3: 0x11d0, |
| Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee}, |
| } |
| ) |
| |
| // Pointer represents a pointer to an arbitrary Windows type. |
| // |
| // Pointer-typed fields may point to one of many different types. It's |
| // up to the caller to provide a pointer to the appropriate type, cast |
| // to Pointer. The caller must obey the unsafe.Pointer rules while |
| // doing so. |
| type Pointer *struct{} |
| |
| // Invented values to support what package os expects. |
| type Timeval struct { |
| Sec int32 |
| Usec int32 |
| } |
| |
| func (tv *Timeval) Nanoseconds() int64 { |
| return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 |
| } |
| |
| func NsecToTimeval(nsec int64) (tv Timeval) { |
| tv.Sec = int32(nsec / 1e9) |
| tv.Usec = int32(nsec % 1e9 / 1e3) |
| return |
| } |
| |
| type Overlapped struct { |
| Internal uintptr |
| InternalHigh uintptr |
| Offset uint32 |
| OffsetHigh uint32 |
| HEvent Handle |
| } |
| |
| type FileNotifyInformation struct { |
| NextEntryOffset uint32 |
| Action uint32 |
| FileNameLength uint32 |
| FileName uint16 |
| } |
| |
| type Filetime struct { |
| LowDateTime uint32 |
| HighDateTime uint32 |
| } |
| |
| // Nanoseconds returns Filetime ft in nanoseconds |
| // since Epoch (00:00:00 UTC, January 1, 1970). |
| func (ft *Filetime) Nanoseconds() int64 { |
| // 100-nanosecond intervals since January 1, 1601 |
| nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) |
| // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) |
| nsec -= 116444736000000000 |
| // convert into nanoseconds |
| nsec *= 100 |
| return nsec |
| } |
| |
| func NsecToFiletime(nsec int64) (ft Filetime) { |
| // convert into 100-nanosecond |
| nsec /= 100 |
| // change starting time to January 1, 1601 |
| nsec += 116444736000000000 |
| // split into high / low |
| ft.LowDateTime = uint32(nsec & 0xffffffff) |
| ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) |
| return ft |
| } |
| |
| type Win32finddata struct { |
| FileAttributes uint32 |
| CreationTime Filetime |
| LastAccessTime Filetime |
| LastWriteTime Filetime |
| FileSizeHigh uint32 |
| FileSizeLow uint32 |
| Reserved0 uint32 |
| Reserved1 uint32 |
| FileName [MAX_PATH - 1]uint16 |
| AlternateFileName [13]uint16 |
| } |
| |
| // This is the actual system call structure. |
| // Win32finddata is what we committed to in Go 1. |
| type win32finddata1 struct { |
| FileAttributes uint32 |
| CreationTime Filetime |
| LastAccessTime Filetime |
| LastWriteTime Filetime |
| FileSizeHigh uint32 |
| FileSizeLow uint32 |
| Reserved0 uint32 |
| Reserved1 uint32 |
| FileName [MAX_PATH]uint16 |
| AlternateFileName [14]uint16 |
| |
| // The Microsoft documentation for this struct¹ describes three additional |
| // fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields |
| // are empirically only present in the macOS port of the Win32 API,² and thus |
| // not needed for binaries built for Windows. |
| // |
| // ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe |
| // ² https://golang.org/issue/42637#issuecomment-760715755. |
| } |
| |
| func copyFindData(dst *Win32finddata, src *win32finddata1) { |
| dst.FileAttributes = src.FileAttributes |
| dst.CreationTime = src.CreationTime |
| dst.LastAccessTime = src.LastAccessTime |
| dst.LastWriteTime = src.LastWriteTime |
| dst.FileSizeHigh = src.FileSizeHigh |
| dst.FileSizeLow = src.FileSizeLow |
| dst.Reserved0 = src.Reserved0 |
| dst.Reserved1 = src.Reserved1 |
| |
| // The src is 1 element bigger than dst, but it must be NUL. |
| copy(dst.FileName[:], src.FileName[:]) |
| copy(dst.AlternateFileName[:], src.AlternateFileName[:]) |
| } |
| |
| type ByHandleFileInformation struct { |
| FileAttributes uint32 |
| CreationTime Filetime |
| LastAccessTime Filetime |
| LastWriteTime Filetime |
| VolumeSerialNumber uint32 |
| FileSizeHigh uint32 |
| FileSizeLow uint32 |
| NumberOfLinks uint32 |
| FileIndexHigh uint32 |
| FileIndexLow uint32 |
| } |
| |
| const ( |
| GetFileExInfoStandard = 0 |
| GetFileExMaxInfoLevel = 1 |
| ) |
| |
| type Win32FileAttributeData struct { |
| FileAttributes uint32 |
| CreationTime Filetime |
| LastAccessTime Filetime |
| LastWriteTime Filetime |
| FileSizeHigh uint32 |
| FileSizeLow uint32 |
| } |
| |
| // ShowWindow constants |
| const ( |
| // winuser.h |
| SW_HIDE = 0 |
| SW_NORMAL = 1 |
| SW_SHOWNORMAL = 1 |
| SW_SHOWMINIMIZED = 2 |
| SW_SHOWMAXIMIZED = 3 |
| SW_MAXIMIZE = 3 |
| SW_SHOWNOACTIVATE = 4 |
| SW_SHOW = 5 |
| SW_MINIMIZE = 6 |
| SW_SHOWMINNOACTIVE = 7 |
| SW_SHOWNA = 8 |
| SW_RESTORE = 9 |
| SW_SHOWDEFAULT = 10 |
| SW_FORCEMINIMIZE = 11 |
| ) |
| |
| type StartupInfo struct { |
| Cb uint32 |
| _ *uint16 |
| Desktop *uint16 |
| Title *uint16 |
| X uint32 |
| Y uint32 |
| XSize uint32 |
| YSize uint32 |
| XCountChars uint32 |
| YCountChars uint32 |
| FillAttribute uint32 |
| Flags uint32 |
| ShowWindow uint16 |
| _ uint16 |
| _ *byte |
| StdInput Handle |
| StdOutput Handle |
| StdErr Handle |
| } |
| |
| type StartupInfoEx struct { |
| StartupInfo |
| ProcThreadAttributeList *ProcThreadAttributeList |
| } |
| |
| // ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST. |
| // |
| // To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update |
| // it with ProcThreadAttributeListContainer.Update, free its memory using |
| // ProcThreadAttributeListContainer.Delete, and access the list itself using |
| // ProcThreadAttributeListContainer.List. |
| type ProcThreadAttributeList struct{} |
| |
| type ProcThreadAttributeListContainer struct { |
| data *ProcThreadAttributeList |
| heapAllocations []uintptr |
| } |
| |
| type ProcessInformation struct { |
| Process Handle |
| Thread Handle |
| ProcessId uint32 |
| ThreadId uint32 |
| } |
| |
| type ProcessEntry32 struct { |
| Size uint32 |
| Usage uint32 |
| ProcessID uint32 |
| DefaultHeapID uintptr |
| ModuleID uint32 |
| Threads uint32 |
| ParentProcessID uint32 |
| PriClassBase int32 |
| Flags uint32 |
| ExeFile [MAX_PATH]uint16 |
| } |
| |
| type ThreadEntry32 struct { |
| Size uint32 |
| Usage uint32 |
| ThreadID uint32 |
| OwnerProcessID uint32 |
| BasePri int32 |
| DeltaPri int32 |
| Flags uint32 |
| } |
| |
| type Systemtime struct { |
| Year uint16 |
| Month uint16 |
| DayOfWeek uint16 |
| Day uint16 |
| Hour uint16 |
| Minute uint16 |
| Second uint16 |
| Milliseconds uint16 |
| } |
| |
| type Timezoneinformation struct { |
| Bias int32 |
| StandardName [32]uint16 |
| StandardDate Systemtime |
| StandardBias int32 |
| DaylightName [32]uint16 |
| DaylightDate Systemtime |
| DaylightBias int32 |
| } |
| |
| // Socket related. |
| |
| const ( |
| AF_UNSPEC = 0 |
| AF_UNIX = 1 |
| AF_INET = 2 |
| AF_NETBIOS = 17 |
| AF_INET6 = 23 |
| AF_IRDA = 26 |
| AF_BTH = 32 |
| |
| SOCK_STREAM = 1 |
| SOCK_DGRAM = 2 |
| SOCK_RAW = 3 |
| SOCK_RDM = 4 |
| SOCK_SEQPACKET = 5 |
| |
| IPPROTO_IP = 0 |
| IPPROTO_ICMP = 1 |
| IPPROTO_IGMP = 2 |
| BTHPROTO_RFCOMM = 3 |
| IPPROTO_TCP = 6 |
| IPPROTO_UDP = 17 |
| IPPROTO_IPV6 = 41 |
| IPPROTO_ICMPV6 = 58 |
| IPPROTO_RM = 113 |
| |
| SOL_SOCKET = 0xffff |
| SO_REUSEADDR = 4 |
| SO_KEEPALIVE = 8 |
| SO_DONTROUTE = 16 |
| SO_BROADCAST = 32 |
| SO_LINGER = 128 |
| SO_RCVBUF = 0x1002 |
| SO_RCVTIMEO = 0x1006 |
| SO_SNDBUF = 0x1001 |
| SO_UPDATE_ACCEPT_CONTEXT = 0x700b |
| SO_UPDATE_CONNECT_CONTEXT = 0x7010 |
| |
| IOC_OUT = 0x40000000 |
| IOC_IN = 0x80000000 |
| IOC_VENDOR = 0x18000000 |
| IOC_INOUT = IOC_IN | IOC_OUT |
| IOC_WS2 = 0x08000000 |
| SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 |
| SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 |
| SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 |
| |
| // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 |
| |
| IP_HDRINCL = 0x2 |
| IP_TOS = 0x3 |
| IP_TTL = 0x4 |
| IP_MULTICAST_IF = 0x9 |
| IP_MULTICAST_TTL = 0xa |
| IP_MULTICAST_LOOP = 0xb |
| IP_ADD_MEMBERSHIP = 0xc |
| IP_DROP_MEMBERSHIP = 0xd |
| IP_PKTINFO = 0x13 |
| |
| IPV6_V6ONLY = 0x1b |
| IPV6_UNICAST_HOPS = 0x4 |
| IPV6_MULTICAST_IF = 0x9 |
| IPV6_MULTICAST_HOPS = 0xa |
| IPV6_MULTICAST_LOOP = 0xb |
| IPV6_JOIN_GROUP = 0xc |
| IPV6_LEAVE_GROUP = 0xd |
| IPV6_PKTINFO = 0x13 |
| |
| MSG_OOB = 0x1 |
| MSG_PEEK = 0x2 |
| MSG_DONTROUTE = 0x4 |
| MSG_WAITALL = 0x8 |
| |
| MSG_TRUNC = 0x0100 |
| MSG_CTRUNC = 0x0200 |
| MSG_BCAST = 0x0400 |
| MSG_MCAST = 0x0800 |
| |
| SOMAXCONN = 0x7fffffff |
| |
| TCP_NODELAY = 1 |
| |
| SHUT_RD = 0 |
| SHUT_WR = 1 |
| SHUT_RDWR = 2 |
| |
| WSADESCRIPTION_LEN = 256 |
| WSASYS_STATUS_LEN = 128 |
| ) |
| |
| type WSABuf struct { |
| Len uint32 |
| Buf *byte |
| } |
| |
| type WSAMsg struct { |
| Name *syscall.RawSockaddrAny |
| Namelen int32 |
| Buffers *WSABuf |
| BufferCount uint32 |
| Control WSABuf |
| Flags uint32 |
| } |
| |
| // Flags for WSASocket |
| const ( |
| WSA_FLAG_OVERLAPPED = 0x01 |
| WSA_FLAG_MULTIPOINT_C_ROOT = 0x02 |
| WSA_FLAG_MULTIPOINT_C_LEAF = 0x04 |
| WSA_FLAG_MULTIPOINT_D_ROOT = 0x08 |
| WSA_FLAG_MULTIPOINT_D_LEAF = 0x10 |
| WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40 |
| WSA_FLAG_NO_HANDLE_INHERIT = 0x80 |
| WSA_FLAG_REGISTERED_IO = 0x100 |
| ) |
| |
| // Invented values to support what package os expects. |
| const ( |
| S_IFMT = 0x1f000 |
| S_IFIFO = 0x1000 |
| S_IFCHR = 0x2000 |
| S_IFDIR = 0x4000 |
| S_IFBLK = 0x6000 |
| S_IFREG = 0x8000 |
| S_IFLNK = 0xa000 |
| S_IFSOCK = 0xc000 |
| S_ISUID = 0x800 |
| S_ISGID = 0x400 |
| S_ISVTX = 0x200 |
| S_IRUSR = 0x100 |
| S_IWRITE = 0x80 |
| S_IWUSR = 0x80 |
| S_IXUSR = 0x40 |
| ) |
| |
| const ( |
| FILE_TYPE_CHAR = 0x0002 |
| FILE_TYPE_DISK = 0x0001 |
| FILE_TYPE_PIPE = 0x0003 |
| FILE_TYPE_REMOTE = 0x8000 |
| FILE_TYPE_UNKNOWN = 0x0000 |
| ) |
| |
| type Hostent struct { |
| Name *byte |
| Aliases **byte |
| AddrType uint16 |
| Length uint16 |
| AddrList **byte |
| } |
| |
| type Protoent struct { |
| Name *byte |
| Aliases **byte |
| Proto uint16 |
| } |
| |
| const ( |
| DNS_TYPE_A = 0x0001 |
| DNS_TYPE_NS = 0x0002 |
| DNS_TYPE_MD = 0x0003 |
| DNS_TYPE_MF = 0x0004 |
| DNS_TYPE_CNAME = 0x0005 |
| DNS_TYPE_SOA = 0x0006 |
| DNS_TYPE_MB = 0x0007 |
| DNS_TYPE_MG = 0x0008 |
| DNS_TYPE_MR = 0x0009 |
| DNS_TYPE_NULL = 0x000a |
| DNS_TYPE_WKS = 0x000b |
| DNS_TYPE_PTR = 0x000c |
| DNS_TYPE_HINFO = 0x000d |
| DNS_TYPE_MINFO = 0x000e |
| DNS_TYPE_MX = 0x000f |
| DNS_TYPE_TEXT = 0x0010 |
| DNS_TYPE_RP = 0x0011 |
| DNS_TYPE_AFSDB = 0x0012 |
| DNS_TYPE_X25 = 0x0013 |
| DNS_TYPE_ISDN = 0x0014 |
| DNS_TYPE_RT = 0x0015 |
| DNS_TYPE_NSAP = 0x0016 |
| DNS_TYPE_NSAPPTR = 0x0017 |
| DNS_TYPE_SIG = 0x0018 |
| DNS_TYPE_KEY = 0x0019 |
| DNS_TYPE_PX = 0x001a |
| DNS_TYPE_GPOS = 0x001b |
| DNS_TYPE_AAAA = 0x001c |
| DNS_TYPE_LOC = 0x001d |
| DNS_TYPE_NXT = 0x001e |
| DNS_TYPE_EID = 0x001f |
| DNS_TYPE_NIMLOC = 0x0020 |
| DNS_TYPE_SRV = 0x0021 |
| DNS_TYPE_ATMA = 0x0022 |
| DNS_TYPE_NAPTR = 0x0023 |
| DNS_TYPE_KX = 0x0024 |
| DNS_TYPE_CERT = 0x0025 |
| DNS_TYPE_A6 = 0x0026 |
| DNS_TYPE_DNAME = 0x0027 |
| DNS_TYPE_SINK = 0x0028 |
| DNS_TYPE_OPT = 0x0029 |
| DNS_TYPE_DS = 0x002B |
| DNS_TYPE_RRSIG = 0x002E |
| DNS_TYPE_NSEC = 0x002F |
| DNS_TYPE_DNSKEY = 0x0030 |
| DNS_TYPE_DHCID = 0x0031 |
| DNS_TYPE_UINFO = 0x0064 |
| DNS_TYPE_UID = 0x0065 |
| DNS_TYPE_GID = 0x0066 |
| DNS_TYPE_UNSPEC = 0x0067 |
| DNS_TYPE_ADDRS = 0x00f8 |
| DNS_TYPE_TKEY = 0x00f9 |
| DNS_TYPE_TSIG = 0x00fa |
| DNS_TYPE_IXFR = 0x00fb |
| DNS_TYPE_AXFR = 0x00fc |
| DNS_TYPE_MAILB = 0x00fd |
| DNS_TYPE_MAILA = 0x00fe |
| DNS_TYPE_ALL = 0x00ff |
| DNS_TYPE_ANY = 0x00ff |
| DNS_TYPE_WINS = 0xff01 |
| DNS_TYPE_WINSR = 0xff02 |
| DNS_TYPE_NBSTAT = 0xff01 |
| ) |
| |
| const ( |
| // flags inside DNSRecord.Dw |
| DnsSectionQuestion = 0x0000 |
| DnsSectionAnswer = 0x0001 |
| DnsSectionAuthority = 0x0002 |
| DnsSectionAdditional = 0x0003 |
| ) |
| |
| type DNSSRVData struct { |
| Target *uint16 |
| Priority uint16 |
| Weight uint16 |
| Port uint16 |
| Pad uint16 |
| } |
| |
| type DNSPTRData struct { |
| Host *uint16 |
| } |
| |
| type DNSMXData struct { |
| NameExchange *uint16 |
| Preference uint16 |
| Pad uint16 |
| } |
| |
| type DNSTXTData struct { |
| StringCount uint16 |
| StringArray [1]*uint16 |
| } |
| |
| type DNSRecord struct { |
| Next *DNSRecord |
| Name *uint16 |
| Type uint16 |
| Length uint16 |
| Dw uint32 |
| Ttl uint32 |
| Reserved uint32 |
| Data [40]byte |
| } |
| |
| const ( |
| TF_DISCONNECT = 1 |
| TF_REUSE_SOCKET = 2 |
| TF_WRITE_BEHIND = 4 |
| TF_USE_DEFAULT_WORKER = 0 |
| TF_USE_SYSTEM_THREAD = 16 |
| TF_USE_KERNEL_APC = 32 |
| ) |
| |
| type TransmitFileBuffers struct { |
| Head uintptr |
| HeadLength uint32 |
| Tail uintptr |
| TailLength uint32 |
| } |
| |
| const ( |
| IFF_UP = 1 |
| IFF_BROADCAST = 2 |
| IFF_LOOPBACK = 4 |
| IFF_POINTTOPOINT = 8 |
| IFF_MULTICAST = 16 |
| ) |
| |
| const SIO_GET_INTERFACE_LIST = 0x4004747F |
| |
| // TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. |
| // will be fixed to change variable type as suitable. |
| |
| type SockaddrGen [24]byte |
| |
| type InterfaceInfo struct { |
| Flags uint32 |
| Address SockaddrGen |
| BroadcastAddress SockaddrGen |
| Netmask SockaddrGen |
| } |
| |
| type IpAddressString struct { |
| String [16]byte |
| } |
| |
| type IpMaskString IpAddressString |
| |
| type IpAddrString struct { |
| Next *IpAddrString |
| IpAddress IpAddressString |
| IpMask IpMaskString |
| Context uint32 |
| } |
| |
| const MAX_ADAPTER_NAME_LENGTH = 256 |
| const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 |
| const MAX_ADAPTER_ADDRESS_LENGTH = 8 |
| |
| type IpAdapterInfo struct { |
| Next *IpAdapterInfo |
| ComboIndex uint32 |
| AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte |
| Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte |
| AddressLength uint32 |
| Address [MAX_ADAPTER_ADDRESS_LENGTH]byte |
| Index uint32 |
| Type uint32 |
| DhcpEnabled uint32 |
| CurrentIpAddress *IpAddrString |
| IpAddressList IpAddrString |
| GatewayList IpAddrString |
| DhcpServer IpAddrString |
| HaveWins bool |
| PrimaryWinsServer IpAddrString |
| SecondaryWinsServer IpAddrString |
| LeaseObtained int64 |
| LeaseExpires int64 |
| } |
| |
| const MAXLEN_PHYSADDR = 8 |
| const MAX_INTERFACE_NAME_LEN = 256 |
| const MAXLEN_IFDESCR = 256 |
| |
| type MibIfRow struct { |
| Name [MAX_INTERFACE_NAME_LEN]uint16 |
| Index uint32 |
| Type uint32 |
| Mtu uint32 |
| Speed uint32 |
| PhysAddrLen uint32 |
| PhysAddr [MAXLEN_PHYSADDR]byte |
| AdminStatus uint32 |
| OperStatus uint32 |
| LastChange uint32 |
| InOctets uint32 |
| InUcastPkts uint32 |
| InNUcastPkts uint32 |
| InDiscards uint32 |
| InErrors uint32 |
| InUnknownProtos uint32 |
| OutOctets uint32 |
| OutUcastPkts uint32 |
| OutNUcastPkts uint32 |
| OutDiscards uint32 |
| OutErrors uint32 |
| OutQLen uint32 |
| DescrLen uint32 |
| Descr [MAXLEN_IFDESCR]byte |
| } |
| |
| type CertInfo struct { |
| Version uint32 |
| SerialNumber CryptIntegerBlob |
| SignatureAlgorithm CryptAlgorithmIdentifier |
| Issuer CertNameBlob |
| NotBefore Filetime |
| NotAfter Filetime |
| Subject CertNameBlob |
| SubjectPublicKeyInfo CertPublicKeyInfo |
| IssuerUniqueId CryptBitBlob |
| SubjectUniqueId CryptBitBlob |
| CountExtensions uint32 |
| Extensions *CertExtension |
| } |
| |
| type CertExtension struct { |
| ObjId *byte |
| Critical int32 |
| Value CryptObjidBlob |
| } |
| |
| type CryptAlgorithmIdentifier struct { |
| ObjId *byte |
| Parameters CryptObjidBlob |
| } |
| |
| type CertPublicKeyInfo struct { |
| Algorithm CryptAlgorithmIdentifier |
| PublicKey CryptBitBlob |
| } |
| |
| type DataBlob struct { |
| Size uint32 |
| Data *byte |
| } |
| type CryptIntegerBlob DataBlob |
| type CryptUintBlob DataBlob |
| type CryptObjidBlob DataBlob |
| type CertNameBlob DataBlob |
| type CertRdnValueBlob DataBlob |
| type CertBlob DataBlob |
| type CrlBlob DataBlob |
| type CryptDataBlob DataBlob |
| type CryptHashBlob DataBlob |
| type CryptDigestBlob DataBlob |
| type CryptDerBlob DataBlob |
| type CryptAttrBlob DataBlob |
| |
| type CryptBitBlob struct { |
| Size uint32 |
| Data *byte |
| UnusedBits uint32 |
| } |
| |
| type CertContext struct { |
| EncodingType uint32 |
| EncodedCert *byte |
| Length uint32 |
| CertInfo *CertInfo |
| Store Handle |
| } |
| |
| type CertChainContext struct { |
| Size uint32 |
| TrustStatus CertTrustStatus |
| ChainCount uint32 |
| Chains **CertSimpleChain |
| LowerQualityChainCount uint32 |
| LowerQualityChains **CertChainContext |
| HasRevocationFreshnessTime uint32 |
| RevocationFreshnessTime uint32 |
| } |
| |
| type CertTrustListInfo struct { |
| // Not implemented |
| } |
| |
| type CertSimpleChain struct { |
| Size uint32 |
| TrustStatus CertTrustStatus |
| NumElements uint32 |
| Elements **CertChainElement |
| TrustListInfo *CertTrustListInfo |
| HasRevocationFreshnessTime uint32 |
| RevocationFreshnessTime uint32 |
| } |
| |
| type CertChainElement struct { |
| Size uint32 |
| CertContext *CertContext |
| TrustStatus CertTrustStatus |
| RevocationInfo *CertRevocationInfo |
| IssuanceUsage *CertEnhKeyUsage |
| ApplicationUsage *CertEnhKeyUsage |
| ExtendedErrorInfo *uint16 |
| } |
| |
| type CertRevocationCrlInfo struct { |
| // Not implemented |
| } |
| |
| type CertRevocationInfo struct { |
| Size uint32 |
| RevocationResult uint32 |
| RevocationOid *byte |
| OidSpecificInfo Pointer |
| HasFreshnessTime uint32 |
| FreshnessTime uint32 |
| CrlInfo *CertRevocationCrlInfo |
| } |
| |
| type CertTrustStatus struct { |
| ErrorStatus uint32 |
| InfoStatus uint32 |
| } |
| |
| type CertUsageMatch struct { |
| Type uint32 |
| Usage CertEnhKeyUsage |
| } |
| |
| type CertEnhKeyUsage struct { |
| Length uint32 |
| UsageIdentifiers **byte |
| } |
| |
| type CertChainPara struct { |
| Size uint32 |
| RequestedUsage CertUsageMatch |
| RequstedIssuancePolicy CertUsageMatch |
| URLRetrievalTimeout uint32 |
| CheckRevocationFreshnessTime uint32 |
| RevocationFreshnessTime uint32 |
| CacheResync *Filetime |
| } |
| |
| type CertChainPolicyPara struct { |
| Size uint32 |
| Flags uint32 |
| ExtraPolicyPara Pointer |
| } |
| |
| type SSLExtraCertChainPolicyPara struct { |
| Size uint32 |
| AuthType uint32 |
| Checks uint32 |
| ServerName *uint16 |
| } |
| |
| type CertChainPolicyStatus struct { |
| Size uint32 |
| Error uint32 |
| ChainIndex uint32 |
| ElementIndex uint32 |
| ExtraPolicyStatus Pointer |
| } |
| |
| type CertPolicyInfo struct { |
| Identifier *byte |
| CountQualifiers uint32 |
| Qualifiers *CertPolicyQualifierInfo |
| } |
| |
| type CertPoliciesInfo struct { |
| Count uint32 |
| PolicyInfos *CertPolicyInfo |
| } |
| |
| type CertPolicyQualifierInfo struct { |
| // Not implemented |
| } |
| |
| type CertStrongSignPara struct { |
| Size uint32 |
| InfoChoice uint32 |
| InfoOrSerializedInfoOrOID unsafe.Pointer |
| } |
| |
| type CryptProtectPromptStruct struct { |
| Size uint32 |
| PromptFlags uint32 |
| App HWND |
| Prompt *uint16 |
| } |
| |
| type CertChainFindByIssuerPara struct { |
| Size uint32 |
| UsageIdentifier *byte |
| KeySpec uint32 |
| AcquirePrivateKeyFlags uint32 |
| IssuerCount uint32 |
| Issuer Pointer |
| FindCallback Pointer |
| FindArg Pointer |
| IssuerChainIndex *uint32 |
| IssuerElementIndex *uint32 |
| } |
| |
| type WinTrustData struct { |
| Size uint32 |
| PolicyCallbackData uintptr |
| SIPClientData uintptr |
| UIChoice uint32 |
| RevocationChecks uint32 |
| UnionChoice uint32 |
| FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer |
| StateAction uint32 |
| StateData Handle |
| URLReference *uint16 |
| ProvFlags uint32 |
| UIContext uint32 |
| SignatureSettings *WinTrustSignatureSettings |
| } |
| |
| type WinTrustFileInfo struct { |
| Size uint32 |
| FilePath *uint16 |
| File Handle |
| KnownSubject *GUID |
| } |
| |
| type WinTrustSignatureSettings struct { |
| Size uint32 |
| Index uint32 |
| Flags uint32 |
| SecondarySigs uint32 |
| VerifiedSigIndex uint32 |
| CryptoPolicy *CertStrongSignPara |
| } |
| |
| const ( |
| // do not reorder |
| HKEY_CLASSES_ROOT = 0x80000000 + iota |
| HKEY_CURRENT_USER |
| HKEY_LOCAL_MACHINE |
| HKEY_USERS |
| HKEY_PERFORMANCE_DATA |
| HKEY_CURRENT_CONFIG |
| HKEY_DYN_DATA |
| |
| KEY_QUERY_VALUE = 1 |
| KEY_SET_VALUE = 2 |
| KEY_CREATE_SUB_KEY = 4 |
| KEY_ENUMERATE_SUB_KEYS = 8 |
| KEY_NOTIFY = 16 |
| KEY_CREATE_LINK = 32 |
| KEY_WRITE = 0x20006 |
| KEY_EXECUTE = 0x20019 |
| KEY_READ = 0x20019 |
| KEY_WOW64_64KEY = 0x0100 |
| KEY_WOW64_32KEY = 0x0200 |
| KEY_ALL_ACCESS = 0xf003f |
| ) |
| |
| const ( |
| // do not reorder |
| REG_NONE = iota |
| REG_SZ |
| REG_EXPAND_SZ |
| REG_BINARY |
| REG_DWORD_LITTLE_ENDIAN |
| REG_DWORD_BIG_ENDIAN |
| REG_LINK |
| REG_MULTI_SZ |
| REG_RESOURCE_LIST |
| REG_FULL_RESOURCE_DESCRIPTOR |
| REG_RESOURCE_REQUIREMENTS_LIST |
| REG_QWORD_LITTLE_ENDIAN |
| REG_DWORD = REG_DWORD_LITTLE_ENDIAN |
| REG_QWORD = REG_QWORD_LITTLE_ENDIAN |
| ) |
| |
| const ( |
| EVENT_MODIFY_STATE = 0x0002 |
| EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 |
| |
| MUTANT_QUERY_STATE = 0x0001 |
| MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE |
| |
| SEMAPHORE_MODIFY_STATE = 0x0002 |
| SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 |
| |
| TIMER_QUERY_STATE = 0x0001 |
| TIMER_MODIFY_STATE = 0x0002 |
| TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE |
| |
| MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE |
| MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS |
| |
| CREATE_EVENT_MANUAL_RESET = 0x1 |
| CREATE_EVENT_INITIAL_SET = 0x2 |
| CREATE_MUTEX_INITIAL_OWNER = 0x1 |
| ) |
| |
| type AddrinfoW struct { |
| Flags int32 |
| Family int32 |
| Socktype int32 |
| Protocol int32 |
| Addrlen uintptr |
| Canonname *uint16 |
| Addr uintptr |
| Next *AddrinfoW |
| } |
| |
| const ( |
| AI_PASSIVE = 1 |
| AI_CANONNAME = 2 |
| AI_NUMERICHOST = 4 |
| ) |
| |
| type GUID struct { |
| Data1 uint32 |
| Data2 uint16 |
| Data3 uint16 |
| Data4 [8]byte |
| } |
| |
| var WSAID_CONNECTEX = GUID{ |
| 0x25a207b9, |
| 0xddf3, |
| 0x4660, |
| [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, |
| } |
| |
| var WSAID_WSASENDMSG = GUID{ |
| 0xa441e712, |
| 0x754f, |
| 0x43ca, |
| [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, |
| } |
| |
| var WSAID_WSARECVMSG = GUID{ |
| 0xf689d7c8, |
| 0x6f1f, |
| 0x436b, |
| [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, |
| } |
| |
| const ( |
| FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 |
| FILE_SKIP_SET_EVENT_ON_HANDLE = 2 |
| ) |
| |
| const ( |
| WSAPROTOCOL_LEN = 255 |
| MAX_PROTOCOL_CHAIN = 7 |
| BASE_PROTOCOL = 1 |
| LAYERED_PROTOCOL = 0 |
| |
| XP1_CONNECTIONLESS = 0x00000001 |
| XP1_GUARANTEED_DELIVERY = 0x00000002 |
| XP1_GUARANTEED_ORDER = 0x00000004 |
| XP1_MESSAGE_ORIENTED = 0x00000008 |
| XP1_PSEUDO_STREAM = 0x00000010 |
| XP1_GRACEFUL_CLOSE = 0x00000020 |
| XP1_EXPEDITED_DATA = 0x00000040 |
| XP1_CONNECT_DATA = 0x00000080 |
| XP1_DISCONNECT_DATA = 0x00000100 |
| XP1_SUPPORT_BROADCAST = 0x00000200 |
| XP1_SUPPORT_MULTIPOINT = 0x00000400 |
| XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 |
| XP1_MULTIPOINT_DATA_PLANE = 0x00001000 |
| XP1_QOS_SUPPORTED = 0x00002000 |
| XP1_UNI_SEND = 0x00008000 |
| XP1_UNI_RECV = 0x00010000 |
| XP1_IFS_HANDLES = 0x00020000 |
| XP1_PARTIAL_MESSAGE = 0x00040000 |
| XP1_SAN_SUPPORT_SDP = 0x00080000 |
| |
| PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 |
| PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 |
| PFL_HIDDEN = 0x00000004 |
| PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 |
| PFL_NETWORKDIRECT_PROVIDER = 0x00000010 |
| ) |
| |
| type WSAProtocolInfo struct { |
| ServiceFlags1 uint32 |
| ServiceFlags2 uint32 |
| ServiceFlags3 uint32 |
| ServiceFlags4 uint32 |
| ProviderFlags uint32 |
| ProviderId GUID |
| CatalogEntryId uint32 |
| ProtocolChain WSAProtocolChain |
| Version int32 |
| AddressFamily int32 |
| MaxSockAddr int32 |
| MinSockAddr int32 |
| SocketType int32 |
| Protocol int32 |
| ProtocolMaxOffset int32 |
| NetworkByteOrder int32 |
| SecurityScheme int32 |
| MessageSize uint32 |
| ProviderReserved uint32 |
| ProtocolName [WSAPROTOCOL_LEN + 1]uint16 |
| } |
| |
| type WSAProtocolChain struct { |
| ChainLen int32 |
| ChainEntries [MAX_PROTOCOL_CHAIN]uint32 |
| } |
| |
| type TCPKeepalive struct { |
| OnOff uint32 |
| Time uint32 |
| Interval uint32 |
| } |
| |
| type symbolicLinkReparseBuffer struct { |
| SubstituteNameOffset uint16 |
| SubstituteNameLength uint16 |
| PrintNameOffset uint16 |
| PrintNameLength uint16 |
| Flags uint32 |
| PathBuffer [1]uint16 |
| } |
| |
| type mountPointReparseBuffer struct { |
| SubstituteNameOffset uint16 |
| SubstituteNameLength uint16 |
| PrintNameOffset uint16 |
| PrintNameLength uint16 |
| PathBuffer [1]uint16 |
| } |
| |
| type reparseDataBuffer struct { |
| ReparseTag uint32 |
| ReparseDataLength uint16 |
| Reserved uint16 |
| |
| // GenericReparseBuffer |
| reparseBuffer byte |
| } |
| |
| const ( |
| FSCTL_GET_REPARSE_POINT = 0x900A8 |
| MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 |
| IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 |
| IO_REPARSE_TAG_SYMLINK = 0xA000000C |
| SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 |
| ) |
| |
| const ( |
| ComputerNameNetBIOS = 0 |
| ComputerNameDnsHostname = 1 |
| ComputerNameDnsDomain = 2 |
| ComputerNameDnsFullyQualified = 3 |
| ComputerNamePhysicalNetBIOS = 4 |
| ComputerNamePhysicalDnsHostname = 5 |
| ComputerNamePhysicalDnsDomain = 6 |
| ComputerNamePhysicalDnsFullyQualified = 7 |
| ComputerNameMax = 8 |
| ) |
| |
| // For MessageBox() |
| const ( |
| MB_OK = 0x00000000 |
| MB_OKCANCEL = 0x00000001 |
| MB_ABORTRETRYIGNORE = 0x00000002 |
| MB_YESNOCANCEL = 0x00000003 |
| MB_YESNO = 0x00000004 |
| MB_RETRYCANCEL = 0x00000005 |
| MB_CANCELTRYCONTINUE = 0x00000006 |
| MB_ICONHAND = 0x00000010 |
| MB_ICONQUESTION = 0x00000020 |
| MB_ICONEXCLAMATION = 0x00000030 |
| MB_ICONASTERISK = 0x00000040 |
| MB_USERICON = 0x00000080 |
| MB_ICONWARNING = MB_ICONEXCLAMATION |
| MB_ICONERROR = MB_ICONHAND |
| MB_ICONINFORMATION = MB_ICONASTERISK |
| MB_ICONSTOP = MB_ICONHAND |
| MB_DEFBUTTON1 = 0x00000000 |
| MB_DEFBUTTON2 = 0x00000100 |
| MB_DEFBUTTON3 = 0x00000200 |
| MB_DEFBUTTON4 = 0x00000300 |
| MB_APPLMODAL = 0x00000000 |
| MB_SYSTEMMODAL = 0x00001000 |
| MB_TASKMODAL = 0x00002000 |
| MB_HELP = 0x00004000 |
| MB_NOFOCUS = 0x00008000 |
| MB_SETFOREGROUND = 0x00010000 |
| MB_DEFAULT_DESKTOP_ONLY = 0x00020000 |
| MB_TOPMOST = 0x00040000 |
| MB_RIGHT = 0x00080000 |
| MB_RTLREADING = 0x00100000 |
| MB_SERVICE_NOTIFICATION = 0x00200000 |
| ) |
| |
| const ( |
| MOVEFILE_REPLACE_EXISTING = 0x1 |
| MOVEFILE_COPY_ALLOWED = 0x2 |
| MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 |
| MOVEFILE_WRITE_THROUGH = 0x8 |
| MOVEFILE_CREATE_HARDLINK = 0x10 |
| MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 |
| ) |
| |
| const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 |
| |
| const ( |
| IF_TYPE_OTHER = 1 |
| IF_TYPE_ETHERNET_CSMACD = 6 |
| IF_TYPE_ISO88025_TOKENRING = 9 |
| IF_TYPE_PPP = 23 |
| IF_TYPE_SOFTWARE_LOOPBACK = 24 |
| IF_TYPE_ATM = 37 |
| IF_TYPE_IEEE80211 = 71 |
| IF_TYPE_TUNNEL = 131 |
| IF_TYPE_IEEE1394 = 144 |
| ) |
| |
| type SocketAddress struct { |
| Sockaddr *syscall.RawSockaddrAny |
| SockaddrLength int32 |
| } |
| |
| // IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. |
| func (addr *SocketAddress) IP() net.IP { |
| if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { |
| return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] |
| } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { |
| return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] |
| } |
| return nil |
| } |
| |
| type IpAdapterUnicastAddress struct { |
| Length uint32 |
| Flags uint32 |
| Next *IpAdapterUnicastAddress |
| Address SocketAddress |
| PrefixOrigin int32 |
| SuffixOrigin int32 |
| DadState int32 |
| ValidLifetime uint32 |
| PreferredLifetime uint32 |
| LeaseLifetime uint32 |
| OnLinkPrefixLength uint8 |
| } |
| |
| type IpAdapterAnycastAddress struct { |
| Length uint32 |
| Flags uint32 |
| Next *IpAdapterAnycastAddress |
| Address SocketAddress |
| } |
| |
| type IpAdapterMulticastAddress struct { |
| Length uint32 |
| Flags uint32 |
| Next *IpAdapterMulticastAddress |
| Address SocketAddress |
| } |
| |
| type IpAdapterDnsServerAdapter struct { |
| Length uint32 |
| Reserved uint32 |
| Next *IpAdapterDnsServerAdapter |
| Address SocketAddress |
| } |
| |
| type IpAdapterPrefix struct { |
| Length uint32 |
| Flags uint32 |
| Next *IpAdapterPrefix |
| Address SocketAddress |
| PrefixLength uint32 |
| } |
| |
| type IpAdapterAddresses struct { |
| Length uint32 |
| IfIndex uint32 |
| Next *IpAdapterAddresses |
| AdapterName *byte |
| FirstUnicastAddress *IpAdapterUnicastAddress |
| FirstAnycastAddress *IpAdapterAnycastAddress |
| FirstMulticastAddress *IpAdapterMulticastAddress |
| FirstDnsServerAddress *IpAdapterDnsServerAdapter |
| DnsSuffix *uint16 |
| Description *uint16 |
| FriendlyName *uint16 |
| PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte |
| PhysicalAddressLength uint32 |
| Flags uint32 |
| Mtu uint32 |
| IfType uint32 |
| OperStatus uint32 |
| Ipv6IfIndex uint32 |
| ZoneIndices [16]uint32 |
| FirstPrefix *IpAdapterPrefix |
| /* more fields might be present here. */ |
| } |
| |
| const ( |
| IfOperStatusUp = 1 |
| IfOperStatusDown = 2 |
| IfOperStatusTesting = 3 |
| IfOperStatusUnknown = 4 |
| IfOperStatusDormant = 5 |
| IfOperStatusNotPresent = 6 |
| IfOperStatusLowerLayerDown = 7 |
| ) |
| |
| // Console related constants used for the mode parameter to SetConsoleMode. See |
| // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. |
| |
| const ( |
| ENABLE_PROCESSED_INPUT = 0x1 |
| ENABLE_LINE_INPUT = 0x2 |
| ENABLE_ECHO_INPUT = 0x4 |
| ENABLE_WINDOW_INPUT = 0x8 |
| ENABLE_MOUSE_INPUT = 0x10 |
| ENABLE_INSERT_MODE = 0x20 |
| ENABLE_QUICK_EDIT_MODE = 0x40 |
| ENABLE_EXTENDED_FLAGS = 0x80 |
| ENABLE_AUTO_POSITION = 0x100 |
| ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 |
| |
| ENABLE_PROCESSED_OUTPUT = 0x1 |
| ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 |
| ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 |
| DISABLE_NEWLINE_AUTO_RETURN = 0x8 |
| ENABLE_LVB_GRID_WORLDWIDE = 0x10 |
| ) |
| |
| type Coord struct { |
| X int16 |
| Y int16 |
| } |
| |
| type SmallRect struct { |
| Left int16 |
| Top int16 |
| Right int16 |
| Bottom int16 |
| } |
| |
| // Used with GetConsoleScreenBuffer to retrieve information about a console |
| // screen buffer. See |
| // https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str |
| // for details. |
| |
| type ConsoleScreenBufferInfo struct { |
| Size Coord |
| CursorPosition Coord |
| Attributes uint16 |
| Window SmallRect |
| MaximumWindowSize Coord |
| } |
| |
| const UNIX_PATH_MAX = 108 // defined in afunix.h |
| |
| const ( |
| // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags |
| JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 |
| JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 |
| JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 |
| JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 |
| JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 |
| JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 |
| JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 |
| JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 |
| JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 |
| JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 |
| JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 |
| JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 |
| JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 |
| JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 |
| JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 |
| ) |
| |
| type IO_COUNTERS struct { |
| ReadOperationCount uint64 |
| WriteOperationCount uint64 |
| OtherOperationCount uint64 |
| ReadTransferCount uint64 |
| WriteTransferCount uint64 |
| OtherTransferCount uint64 |
| } |
| |
| type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { |
| BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION |
| IoInfo IO_COUNTERS |
| ProcessMemoryLimit uintptr |
| JobMemoryLimit uintptr |
| PeakProcessMemoryUsed uintptr |
| PeakJobMemoryUsed uintptr |
| } |
| |
| const ( |
| // UIRestrictionsClass |
| JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 |
| JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 |
| JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 |
| JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 |
| JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 |
| JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 |
| JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 |
| JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 |
| ) |
| |
| type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { |
| UIRestrictionsClass uint32 |
| } |
| |
| const ( |
| // JobObjectInformationClass |
| JobObjectAssociateCompletionPortInformation = 7 |
| JobObjectBasicLimitInformation = 2 |
| JobObjectBasicUIRestrictions = 4 |
| JobObjectCpuRateControlInformation = 15 |
| JobObjectEndOfJobTimeInformation = 6 |
| JobObjectExtendedLimitInformation = 9 |
| JobObjectGroupInformation = 11 |
| JobObjectGroupInformationEx = 14 |
| JobObjectLimitViolationInformation2 = 35 |
| JobObjectNetRateControlInformation = 32 |
| JobObjectNotificationLimitInformation = 12 |
| JobObjectNotificationLimitInformation2 = 34 |
| JobObjectSecurityLimitInformation = 5 |
| ) |
| |
| const ( |
| KF_FLAG_DEFAULT = 0x00000000 |
| KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 |
| KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 |
| KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 |
| KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 |
| KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 |
| KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 |
| KF_FLAG_CREATE = 0x00008000 |
| KF_FLAG_DONT_VERIFY = 0x00004000 |
| KF_FLAG_DONT_UNEXPAND = 0x00002000 |
| KF_FLAG_NO_ALIAS = 0x00001000 |
| KF_FLAG_INIT = 0x00000800 |
| KF_FLAG_DEFAULT_PATH = 0x00000400 |
| KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 |
| KF_FLAG_SIMPLE_IDLIST = 0x00000100 |
| KF_FLAG_ALIAS_ONLY = 0x80000000 |
| ) |
| |
| type OsVersionInfoEx struct { |
| osVersionInfoSize uint32 |
| MajorVersion uint32 |
| MinorVersion uint32 |
| BuildNumber uint32 |
| PlatformId uint32 |
| CsdVersion [128]uint16 |
| ServicePackMajor uint16 |
| ServicePackMinor uint16 |
| SuiteMask uint16 |
| ProductType byte |
| _ byte |
| } |
| |
| const ( |
| EWX_LOGOFF = 0x00000000 |
| EWX_SHUTDOWN = 0x00000001 |
| EWX_REBOOT = 0x00000002 |
| EWX_FORCE = 0x00000004 |
| EWX_POWEROFF = 0x00000008 |
| EWX_FORCEIFHUNG = 0x00000010 |
| EWX_QUICKRESOLVE = 0x00000020 |
| EWX_RESTARTAPPS = 0x00000040 |
| EWX_HYBRID_SHUTDOWN = 0x00400000 |
| EWX_BOOTOPTIONS = 0x01000000 |
| |
| SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 |
| SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 |
| SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 |
| SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 |
| SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 |
| SHTDN_REASON_FLAG_PLANNED = 0x80000000 |
| SHTDN_REASON_MAJOR_OTHER = 0x00000000 |
| SHTDN_REASON_MAJOR_NONE = 0x00000000 |
| SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 |
| SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 |
| SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 |
| SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 |
| SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 |
| SHTDN_REASON_MAJOR_POWER = 0x00060000 |
| SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 |
| SHTDN_REASON_MINOR_OTHER = 0x00000000 |
| SHTDN_REASON_MINOR_NONE = 0x000000ff |
| SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 |
| SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 |
| SHTDN_REASON_MINOR_UPGRADE = 0x00000003 |
| SHTDN_REASON_MINOR_RECONFIG = 0x00000004 |
| SHTDN_REASON_MINOR_HUNG = 0x00000005 |
| SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 |
| SHTDN_REASON_MINOR_DISK = 0x00000007 |
| SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 |
| SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 |
| SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a |
| SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b |
| SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c |
| SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d |
| SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e |
| SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F |
| SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 |
| SHTDN_REASON_MINOR_HOTFIX = 0x00000011 |
| SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 |
| SHTDN_REASON_MINOR_SECURITY = 0x00000013 |
| SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 |
| SHTDN_REASON_MINOR_WMI = 0x00000015 |
| SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 |
| SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 |
| SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 |
| SHTDN_REASON_MINOR_MMC = 0x00000019 |
| SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a |
| SHTDN_REASON_MINOR_TERMSRV = 0x00000020 |
| SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 |
| SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 |
| SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE |
| SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED |
| SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff |
| |
| SHUTDOWN_NORETRY = 0x1 |
| ) |
| |
| // Flags used for GetModuleHandleEx |
| const ( |
| GET_MODULE_HANDLE_EX_FLAG_PIN = 1 |
| GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 |
| GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 |
| ) |
| |
| // MUI function flag values |
| const ( |
| MUI_LANGUAGE_ID = 0x4 |
| MUI_LANGUAGE_NAME = 0x8 |
| MUI_MERGE_SYSTEM_FALLBACK = 0x10 |
| MUI_MERGE_USER_FALLBACK = 0x20 |
| MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK |
| MUI_THREAD_LANGUAGES = 0x40 |
| MUI_CONSOLE_FILTER = 0x100 |
| MUI_COMPLEX_SCRIPT_FILTER = 0x200 |
| MUI_RESET_FILTERS = 0x001 |
| MUI_USER_PREFERRED_UI_LANGUAGES = 0x10 |
| MUI_USE_INSTALLED_LANGUAGES = 0x20 |
| MUI_USE_SEARCH_ALL_LANGUAGES = 0x40 |
| MUI_LANG_NEUTRAL_PE_FILE = 0x100 |
| MUI_NON_LANG_NEUTRAL_FILE = 0x200 |
| MUI_MACHINE_LANGUAGE_SETTINGS = 0x400 |
| MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001 |
| MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002 |
| MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004 |
| MUI_QUERY_TYPE = 0x001 |
| MUI_QUERY_CHECKSUM = 0x002 |
| MUI_QUERY_LANGUAGE_NAME = 0x004 |
| MUI_QUERY_RESOURCE_TYPES = 0x008 |
| MUI_FILEINFO_VERSION = 0x001 |
| |
| MUI_FULL_LANGUAGE = 0x01 |
| MUI_PARTIAL_LANGUAGE = 0x02 |
| MUI_LIP_LANGUAGE = 0x04 |
| MUI_LANGUAGE_INSTALLED = 0x20 |
| MUI_LANGUAGE_LICENSED = 0x40 |
| ) |
| |
| // FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx |
| const ( |
| FileBasicInfo = 0 |
| FileStandardInfo = 1 |
| FileNameInfo = 2 |
| FileRenameInfo = 3 |
| FileDispositionInfo = 4 |
| FileAllocationInfo = 5 |
| FileEndOfFileInfo = 6 |
| FileStreamInfo = 7 |
| FileCompressionInfo = 8 |
| FileAttributeTagInfo = 9 |
| FileIdBothDirectoryInfo = 10 |
| FileIdBothDirectoryRestartInfo = 11 |
| FileIoPriorityHintInfo = 12 |
| FileRemoteProtocolInfo = 13 |
| FileFullDirectoryInfo = 14 |
| FileFullDirectoryRestartInfo = 15 |
| FileStorageInfo = 16 |
| FileAlignmentInfo = 17 |
| FileIdInfo = 18 |
| FileIdExtdDirectoryInfo = 19 |
| FileIdExtdDirectoryRestartInfo = 20 |
| FileDispositionInfoEx = 21 |
| FileRenameInfoEx = 22 |
| FileCaseSensitiveInfo = 23 |
| FileNormalizedNameInfo = 24 |
| ) |
| |
| // LoadLibrary flags for determining from where to search for a DLL |
| const ( |
| DONT_RESOLVE_DLL_REFERENCES = 0x1 |
| LOAD_LIBRARY_AS_DATAFILE = 0x2 |
| LOAD_WITH_ALTERED_SEARCH_PATH = 0x8 |
| LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10 |
| LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20 |
| LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40 |
| LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80 |
| LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100 |
| LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200 |
| LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400 |
| LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800 |
| LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000 |
| LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000 |
| LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 |
| LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000 |
| ) |
| |
| // RegNotifyChangeKeyValue notifyFilter flags. |
| const ( |
| // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. |
| REG_NOTIFY_CHANGE_NAME = 0x00000001 |
| |
| // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. |
| REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 |
| |
| // 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. |
| REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 |
| |
| // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. |
| REG_NOTIFY_CHANGE_SECURITY = 0x00000008 |
| |
| // 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. |
| REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 |
| ) |
| |
| type CommTimeouts struct { |
| ReadIntervalTimeout uint32 |
| ReadTotalTimeoutMultiplier uint32 |
| ReadTotalTimeoutConstant uint32 |
| WriteTotalTimeoutMultiplier uint32 |
| WriteTotalTimeoutConstant uint32 |
| } |
| |
| // NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING. |
| type NTUnicodeString struct { |
| Length uint16 |
| MaximumLength uint16 |
| Buffer *uint16 |
| } |
| |
| // NTString is an ANSI string for NT native APIs, corresponding to STRING. |
| type NTString struct { |
| Length uint16 |
| MaximumLength uint16 |
| Buffer *byte |
| } |
| |
| type LIST_ENTRY struct { |
| Flink *LIST_ENTRY |
| Blink *LIST_ENTRY |
| } |
| |
| type LDR_DATA_TABLE_ENTRY struct { |
| reserved1 [2]uintptr |
| InMemoryOrderLinks LIST_ENTRY |
| reserved2 [2]uintptr |
| DllBase uintptr |
| reserved3 [2]uintptr |
| FullDllName NTUnicodeString |
| reserved4 [8]byte |
| reserved5 [3]uintptr |
| reserved6 uintptr |
| TimeDateStamp uint32 |
| } |
| |
| type PEB_LDR_DATA struct { |
| reserved1 [8]byte |
| reserved2 [3]uintptr |
| InMemoryOrderModuleList LIST_ENTRY |
| } |
| |
| type CURDIR struct { |
| DosPath NTUnicodeString |
| Handle Handle |
| } |
| |
| type RTL_DRIVE_LETTER_CURDIR struct { |
| Flags uint16 |
| Length uint16 |
| TimeStamp uint32 |
| DosPath NTString |
| } |
| |
| type RTL_USER_PROCESS_PARAMETERS struct { |
| MaximumLength, Length uint32 |
| |
| Flags, DebugFlags uint32 |
| |
| ConsoleHandle Handle |
| ConsoleFlags uint32 |
| StandardInput, StandardOutput, StandardError Handle |
| |
| CurrentDirectory CURDIR |
| DllPath NTUnicodeString |
| ImagePathName NTUnicodeString |
| CommandLine NTUnicodeString |
| Environment unsafe.Pointer |
| |
| StartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32 |
| |
| WindowFlags, ShowWindowFlags uint32 |
| WindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString |
| CurrentDirectories [32]RTL_DRIVE_LETTER_CURDIR |
| |
| EnvironmentSize, EnvironmentVersion uintptr |
| |
| PackageDependencyData unsafe.Pointer |
| ProcessGroupId uint32 |
| LoaderThreads uint32 |
| |
| RedirectionDllName NTUnicodeString |
| HeapPartitionName NTUnicodeString |
| DefaultThreadpoolCpuSetMasks uintptr |
| DefaultThreadpoolCpuSetMaskCount uint32 |
| } |
| |
| type PEB struct { |
| reserved1 [2]byte |
| BeingDebugged byte |
| BitField byte |
| reserved3 uintptr |
| ImageBaseAddress uintptr |
| Ldr *PEB_LDR_DATA |
| ProcessParameters *RTL_USER_PROCESS_PARAMETERS |
| reserved4 [3]uintptr |
| AtlThunkSListPtr uintptr |
| reserved5 uintptr |
| reserved6 uint32 |
| reserved7 uintptr |
| reserved8 uint32 |
| AtlThunkSListPtr32 uint32 |
| reserved9 [45]uintptr |
| reserved10 [96]byte |
| PostProcessInitRoutine uintptr |
| reserved11 [128]byte |
| reserved12 [1]uintptr |
| SessionId uint32 |
| } |
| |
| type OBJECT_ATTRIBUTES struct { |
| Length uint32 |
| RootDirectory Handle |
| ObjectName *NTUnicodeString |
| Attributes uint32 |
| SecurityDescriptor *SECURITY_DESCRIPTOR |
| SecurityQoS *SECURITY_QUALITY_OF_SERVICE |
| } |
| |
| // Values for the Attributes member of OBJECT_ATTRIBUTES. |
| const ( |
| OBJ_INHERIT = 0x00000002 |
| OBJ_PERMANENT = 0x00000010 |
| OBJ_EXCLUSIVE = 0x00000020 |
| OBJ_CASE_INSENSITIVE = 0x00000040 |
| OBJ_OPENIF = 0x00000080 |
| OBJ_OPENLINK = 0x00000100 |
| OBJ_KERNEL_HANDLE = 0x00000200 |
| OBJ_FORCE_ACCESS_CHECK = 0x00000400 |
| OBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800 |
| OBJ_DONT_REPARSE = 0x00001000 |
| OBJ_VALID_ATTRIBUTES = 0x00001FF2 |
| ) |
| |
| type IO_STATUS_BLOCK struct { |
| Status NTStatus |
| Information uintptr |
| } |
| |
| type RTLP_CURDIR_REF struct { |
| RefCount int32 |
| Handle Handle |
| } |
| |
| type RTL_RELATIVE_NAME struct { |
| RelativeName NTUnicodeString |
| ContainingDirectory Handle |
| CurDirRef *RTLP_CURDIR_REF |
| } |
| |
| const ( |
| // CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile. |
| FILE_SUPERSEDE = 0x00000000 |
| FILE_OPEN = 0x00000001 |
| FILE_CREATE = 0x00000002 |
| FILE_OPEN_IF = 0x00000003 |
| FILE_OVERWRITE = 0x00000004 |
| FILE_OVERWRITE_IF = 0x00000005 |
| FILE_MAXIMUM_DISPOSITION = 0x00000005 |
| |
| // CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile. |
| FILE_DIRECTORY_FILE = 0x00000001 |
| FILE_WRITE_THROUGH = 0x00000002 |
| FILE_SEQUENTIAL_ONLY = 0x00000004 |
| FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008 |
| FILE_SYNCHRONOUS_IO_ALERT = 0x00000010 |
| FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 |
| FILE_NON_DIRECTORY_FILE = 0x00000040 |
| FILE_CREATE_TREE_CONNECTION = 0x00000080 |
| FILE_COMPLETE_IF_OPLOCKED = 0x00000100 |
| FILE_NO_EA_KNOWLEDGE = 0x00000200 |
| FILE_OPEN_REMOTE_INSTANCE = 0x00000400 |
| FILE_RANDOM_ACCESS = 0x00000800 |
| FILE_DELETE_ON_CLOSE = 0x00001000 |
| FILE_OPEN_BY_FILE_ID = 0x00002000 |
| FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 |
| FILE_NO_COMPRESSION = 0x00008000 |
| FILE_OPEN_REQUIRING_OPLOCK = 0x00010000 |
| FILE_DISALLOW_EXCLUSIVE = 0x00020000 |
| FILE_RESERVE_OPFILTER = 0x00100000 |
| FILE_OPEN_REPARSE_POINT = 0x00200000 |
| FILE_OPEN_NO_RECALL = 0x00400000 |
| FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000 |
| |
| // Parameter constants for NtCreateNamedPipeFile. |
| |
| FILE_PIPE_BYTE_STREAM_TYPE = 0x00000000 |
| FILE_PIPE_MESSAGE_TYPE = 0x00000001 |
| |
| FILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000 |
| FILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002 |
| |
| FILE_PIPE_TYPE_VALID_MASK = 0x00000003 |
| |
| FILE_PIPE_BYTE_STREAM_MODE = 0x00000000 |
| FILE_PIPE_MESSAGE_MODE = 0x00000001 |
| |
| FILE_PIPE_QUEUE_OPERATION = 0x00000000 |
| FILE_PIPE_COMPLETE_OPERATION = 0x00000001 |
| |
| FILE_PIPE_INBOUND = 0x00000000 |
| FILE_PIPE_OUTBOUND = 0x00000001 |
| FILE_PIPE_FULL_DUPLEX = 0x00000002 |
| |
| FILE_PIPE_DISCONNECTED_STATE = 0x00000001 |
| FILE_PIPE_LISTENING_STATE = 0x00000002 |
| FILE_PIPE_CONNECTED_STATE = 0x00000003 |
| FILE_PIPE_CLOSING_STATE = 0x00000004 |
| |
| FILE_PIPE_CLIENT_END = 0x00000000 |
| FILE_PIPE_SERVER_END = 0x00000001 |
| ) |
| |
| // ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. |
| const ( |
| ProcessBasicInformation = iota |
| ProcessQuotaLimits |
| ProcessIoCounters |
| ProcessVmCounters |
| ProcessTimes |
| ProcessBasePriority |
| ProcessRaisePriority |
| ProcessDebugPort |
| ProcessExceptionPort |
| ProcessAccessToken |
| ProcessLdtInformation |
| ProcessLdtSize |
| ProcessDefaultHardErrorMode |
| ProcessIoPortHandlers |
| ProcessPooledUsageAndLimits |
| ProcessWorkingSetWatch |
| ProcessUserModeIOPL |
| ProcessEnableAlignmentFaultFixup |
| ProcessPriorityClass |
| ProcessWx86Information |
| ProcessHandleCount |
| ProcessAffinityMask |
| ProcessPriorityBoost |
| ProcessDeviceMap |
| ProcessSessionInformation |
| ProcessForegroundInformation |
| ProcessWow64Information |
| ProcessImageFileName |
| ProcessLUIDDeviceMapsEnabled |
| ProcessBreakOnTermination |
| ProcessDebugObjectHandle |
| ProcessDebugFlags |
| ProcessHandleTracing |
| ProcessIoPriority |
| ProcessExecuteFlags |
| ProcessTlsInformation |
| ProcessCookie |
| ProcessImageInformation |
| ProcessCycleTime |
| ProcessPagePriority |
| ProcessInstrumentationCallback |
| ProcessThreadStackAllocation |
| ProcessWorkingSetWatchEx |
| ProcessImageFileNameWin32 |
| ProcessImageFileMapping |
| ProcessAffinityUpdateMode |
| ProcessMemoryAllocationMode |
| ProcessGroupInformation |
| ProcessTokenVirtualizationEnabled |
| ProcessConsoleHostProcess |
| ProcessWindowInformation |
| ProcessHandleInformation |
| ProcessMitigationPolicy |
| ProcessDynamicFunctionTableInformation |
| ProcessHandleCheckingMode |
| ProcessKeepAliveCount |
| ProcessRevokeFileHandles |
| ProcessWorkingSetControl |
| ProcessHandleTable |
| ProcessCheckStackExtentsMode |
| ProcessCommandLineInformation |
| ProcessProtectionInformation |
| ProcessMemoryExhaustion |
| ProcessFaultInformation |
| ProcessTelemetryIdInformation |
| ProcessCommitReleaseInformation |
| ProcessDefaultCpuSetsInformation |
| ProcessAllowedCpuSetsInformation |
| ProcessSubsystemProcess |
| ProcessJobMemoryInformation |
| ProcessInPrivate |
| ProcessRaiseUMExceptionOnInvalidHandleClose |
| ProcessIumChallengeResponse |
| ProcessChildProcessInformation |
| ProcessHighGraphicsPriorityInformation |
| ProcessSubsystemInformation |
| ProcessEnergyValues |
| ProcessActivityThrottleState |
| ProcessActivityThrottlePolicy |
| ProcessWin32kSyscallFilterInformation |
| ProcessDisableSystemAllowedCpuSets |
| ProcessWakeInformation |
| ProcessEnergyTrackingState |
| ProcessManageWritesToExecutableMemory |
| ProcessCaptureTrustletLiveDump |
| ProcessTelemetryCoverage |
| ProcessEnclaveInformation |
| ProcessEnableReadWriteVmLogging |
| ProcessUptimeInformation |
| ProcessImageSection |
| ProcessDebugAuthInformation |
| ProcessSystemResourceManagement |
| ProcessSequenceNumber |
| ProcessLoaderDetour |
| ProcessSecurityDomainInformation |
| ProcessCombineSecurityDomainsInformation |
| ProcessEnableLogging |
| ProcessLeapSecondInformation |
| ProcessFiberShadowStackAllocation |
| ProcessFreeFiberShadowStackAllocation |
| ProcessAltSystemCallInformation |
| ProcessDynamicEHContinuationTargets |
| ProcessDynamicEnforcedCetCompatibleRanges |
| ) |
| |
| type PROCESS_BASIC_INFORMATION struct { |
| ExitStatus NTStatus |
| PebBaseAddress *PEB |
| AffinityMask uintptr |
| BasePriority int32 |
| UniqueProcessId uintptr |
| InheritedFromUniqueProcessId uintptr |
| } |
| |
| // Constants for LocalAlloc flags. |
| const ( |
| LMEM_FIXED = 0x0 |
| LMEM_MOVEABLE = 0x2 |
| LMEM_NOCOMPACT = 0x10 |
| LMEM_NODISCARD = 0x20 |
| LMEM_ZEROINIT = 0x40 |
| LMEM_MODIFY = 0x80 |
| LMEM_DISCARDABLE = 0xf00 |
| LMEM_VALID_FLAGS = 0xf72 |
| LMEM_INVALID_HANDLE = 0x8000 |
| LHND = LMEM_MOVEABLE | LMEM_ZEROINIT |
| LPTR = LMEM_FIXED | LMEM_ZEROINIT |
| NONZEROLHND = LMEM_MOVEABLE |
| NONZEROLPTR = LMEM_FIXED |
| ) |
| |
| // Constants for the CreateNamedPipe-family of functions. |
| const ( |
| PIPE_ACCESS_INBOUND = 0x1 |
| PIPE_ACCESS_OUTBOUND = 0x2 |
| PIPE_ACCESS_DUPLEX = 0x3 |
| |
| PIPE_CLIENT_END = 0x0 |
| PIPE_SERVER_END = 0x1 |
| |
| PIPE_WAIT = 0x0 |
| PIPE_NOWAIT = 0x1 |
| PIPE_READMODE_BYTE = 0x0 |
| PIPE_READMODE_MESSAGE = 0x2 |
| PIPE_TYPE_BYTE = 0x0 |
| PIPE_TYPE_MESSAGE = 0x4 |
| PIPE_ACCEPT_REMOTE_CLIENTS = 0x0 |
| PIPE_REJECT_REMOTE_CLIENTS = 0x8 |
| |
| PIPE_UNLIMITED_INSTANCES = 255 |
| ) |
| |
| // Constants for security attributes when opening named pipes. |
| const ( |
| SECURITY_ANONYMOUS = SecurityAnonymous << 16 |
| SECURITY_IDENTIFICATION = SecurityIdentification << 16 |
| SECURITY_IMPERSONATION = SecurityImpersonation << 16 |
| SECURITY_DELEGATION = SecurityDelegation << 16 |
| |
| SECURITY_CONTEXT_TRACKING = 0x40000 |
| SECURITY_EFFECTIVE_ONLY = 0x80000 |
| |
| SECURITY_SQOS_PRESENT = 0x100000 |
| SECURITY_VALID_SQOS_FLAGS = 0x1f0000 |
| ) |
| |
| // ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro. |
| type ResourceID uint16 |
| |
| // ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID, |
| // or a string, to specify a resource or resource type by name. |
| type ResourceIDOrString interface{} |
| |
| // Predefined resource names and types. |
| var ( |
| // Predefined names. |
| CREATEPROCESS_MANIFEST_RESOURCE_ID ResourceID = 1 |
| ISOLATIONAWARE_MANIFEST_RESOURCE_ID ResourceID = 2 |
| ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3 |
| ISOLATIONPOLICY_MANIFEST_RESOURCE_ID ResourceID = 4 |
| ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID ResourceID = 5 |
| MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 1 // inclusive |
| MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 16 // inclusive |
| |
| // Predefined types. |
| RT_CURSOR ResourceID = 1 |
| RT_BITMAP ResourceID = 2 |
| RT_ICON ResourceID = 3 |
| RT_MENU ResourceID = 4 |
| RT_DIALOG ResourceID = 5 |
| RT_STRING ResourceID = 6 |
| RT_FONTDIR ResourceID = 7 |
| RT_FONT ResourceID = 8 |
| RT_ACCELERATOR ResourceID = 9 |
| RT_RCDATA ResourceID = 10 |
| RT_MESSAGETABLE ResourceID = 11 |
| RT_GROUP_CURSOR ResourceID = 12 |
| RT_GROUP_ICON ResourceID = 14 |
| RT_VERSION ResourceID = 16 |
| RT_DLGINCLUDE ResourceID = 17 |
| RT_PLUGPLAY ResourceID = 19 |
| RT_VXD ResourceID = 20 |
| RT_ANICURSOR ResourceID = 21 |
| RT_ANIICON ResourceID = 22 |
| RT_HTML ResourceID = 23 |
| RT_MANIFEST ResourceID = 24 |
| ) |
| |
| type COAUTHIDENTITY struct { |
| User *uint16 |
| UserLength uint32 |
| Domain *uint16 |
| DomainLength uint32 |
| Password *uint16 |
| PasswordLength uint32 |
| Flags uint32 |
| } |
| |
| type COAUTHINFO struct { |
| AuthnSvc uint32 |
| AuthzSvc uint32 |
| ServerPrincName *uint16 |
| AuthnLevel uint32 |
| ImpersonationLevel uint32 |
| AuthIdentityData *COAUTHIDENTITY |
| Capabilities uint32 |
| } |
| |
| type COSERVERINFO struct { |
| Reserved1 uint32 |
| Aame *uint16 |
| AuthInfo *COAUTHINFO |
| Reserved2 uint32 |
| } |
| |
| type BIND_OPTS3 struct { |
| CbStruct uint32 |
| Flags uint32 |
| Mode uint32 |
| TickCountDeadline uint32 |
| TrackFlags uint32 |
| ClassContext uint32 |
| Locale uint32 |
| ServerInfo *COSERVERINFO |
| Hwnd HWND |
| } |
| |
| const ( |
| CLSCTX_INPROC_SERVER = 0x1 |
| CLSCTX_INPROC_HANDLER = 0x2 |
| CLSCTX_LOCAL_SERVER = 0x4 |
| CLSCTX_INPROC_SERVER16 = 0x8 |
| CLSCTX_REMOTE_SERVER = 0x10 |
| CLSCTX_INPROC_HANDLER16 = 0x20 |
| CLSCTX_RESERVED1 = 0x40 |
| CLSCTX_RESERVED2 = 0x80 |
| CLSCTX_RESERVED3 = 0x100 |
| CLSCTX_RESERVED4 = 0x200 |
| CLSCTX_NO_CODE_DOWNLOAD = 0x400 |
| CLSCTX_RESERVED5 = 0x800 |
| CLSCTX_NO_CUSTOM_MARSHAL = 0x1000 |
| CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000 |
| CLSCTX_NO_FAILURE_LOG = 0x4000 |
| CLSCTX_DISABLE_AAA = 0x8000 |
| CLSCTX_ENABLE_AAA = 0x10000 |
| CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 |
| CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000 |
| CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000 |
| CLSCTX_ENABLE_CLOAKING = 0x100000 |
| CLSCTX_APPCONTAINER = 0x400000 |
| CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000 |
| CLSCTX_PS_DLL = 0x80000000 |
| |
| COINIT_MULTITHREADED = 0x0 |
| COINIT_APARTMENTTHREADED = 0x2 |
| COINIT_DISABLE_OLE1DDE = 0x4 |
| COINIT_SPEED_OVER_MEMORY = 0x8 |
| ) |
| |
| // Flag for QueryFullProcessImageName. |
| const PROCESS_NAME_NATIVE = 1 |