Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F10433352
types_windows.go
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
38 KB
Subscribers
None
types_windows.go
View Options
// 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
"syscall"
const
(
// Windows errors.
ERROR_FILE_NOT_FOUND
syscall
.
Errno
=
2
ERROR_PATH_NOT_FOUND
syscall
.
Errno
=
3
ERROR_ACCESS_DENIED
syscall
.
Errno
=
5
ERROR_NO_MORE_FILES
syscall
.
Errno
=
18
ERROR_HANDLE_EOF
syscall
.
Errno
=
38
ERROR_NETNAME_DELETED
syscall
.
Errno
=
64
ERROR_FILE_EXISTS
syscall
.
Errno
=
80
ERROR_BROKEN_PIPE
syscall
.
Errno
=
109
ERROR_BUFFER_OVERFLOW
syscall
.
Errno
=
111
ERROR_INSUFFICIENT_BUFFER
syscall
.
Errno
=
122
ERROR_MOD_NOT_FOUND
syscall
.
Errno
=
126
ERROR_PROC_NOT_FOUND
syscall
.
Errno
=
127
ERROR_ALREADY_EXISTS
syscall
.
Errno
=
183
ERROR_ENVVAR_NOT_FOUND
syscall
.
Errno
=
203
ERROR_MORE_DATA
syscall
.
Errno
=
234
ERROR_OPERATION_ABORTED
syscall
.
Errno
=
995
ERROR_IO_PENDING
syscall
.
Errno
=
997
ERROR_SERVICE_SPECIFIC_ERROR
syscall
.
Errno
=
1066
ERROR_NOT_FOUND
syscall
.
Errno
=
1168
ERROR_PRIVILEGE_NOT_HELD
syscall
.
Errno
=
1314
WSAEACCES
syscall
.
Errno
=
10013
WSAEMSGSIZE
syscall
.
Errno
=
10040
WSAECONNRESET
syscall
.
Errno
=
10054
)
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
(
GENERIC_READ
=
0x80000000
GENERIC_WRITE
=
0x40000000
GENERIC_EXECUTE
=
0x20000000
GENERIC_ALL
=
0x10000000
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_REPARSE_POINT
=
0x00200000
FILE_FLAG_BACKUP_SEMANTICS
=
0x02000000
FILE_FLAG_OVERLAPPED
=
0x40000000
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_TIMEOUT
=
258
WAIT_ABANDONED
=
0x00000080
WAIT_OBJECT_0
=
0x00000000
WAIT_FAILED
=
0xFFFFFFFF
PROCESS_TERMINATE
=
1
PROCESS_QUERY_INFORMATION
=
0x00000400
SYNCHRONIZE
=
0x00100000
FILE_MAP_COPY
=
0x01
FILE_MAP_WRITE
=
0x02
FILE_MAP_READ
=
0x04
FILE_MAP_EXECUTE
=
0x20
CTRL_C_EVENT
=
0
CTRL_BREAK_EVENT
=
1
// 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
(
// 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
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
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
CRYPT_VERIFYCONTEXT
=
0xF0000000
CRYPT_NEWKEYSET
=
0x00000008
CRYPT_DELETEKEYSET
=
0x00000010
CRYPT_MACHINE_KEYSET
=
0x00000020
CRYPT_SILENT
=
0x00000040
CRYPT_DEFAULT_CONTAINER_OPTIONAL
=
0x00000080
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
/* 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
CERT_E_EXPIRED
=
0x800B0101
CERT_E_ROLE
=
0x800B0103
CERT_E_PURPOSE
=
0x800B0106
CERT_E_UNTRUSTEDROOT
=
0x800B0109
CERT_E_CN_NO_MATCH
=
0x800B010F
/* 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
)
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"
)
)
// 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
SecurityAttributes
struct
{
Length
uint32
SecurityDescriptor
uintptr
InheritHandle
uint32
}
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
}
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
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
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_INET6
=
23
AF_NETBIOS
=
17
SOCK_STREAM
=
1
SOCK_DGRAM
=
2
SOCK_RAW
=
3
SOCK_SEQPACKET
=
5
IPPROTO_IP
=
0
IPPROTO_IPV6
=
0x29
IPPROTO_TCP
=
6
IPPROTO_UDP
=
17
SOL_SOCKET
=
0xffff
SO_REUSEADDR
=
4
SO_KEEPALIVE
=
8
SO_DONTROUTE
=
16
SO_BROADCAST
=
32
SO_LINGER
=
128
SO_RCVBUF
=
0x1002
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_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
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
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
}
// 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
(
DNS_INFO_NO_RECORDS
=
0x251D
)
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
{
// Not implemented
}
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
}
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
)
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
)
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
}
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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jan 20, 3:11 AM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3137555
Attached To
rWCLI writeas-cli
Event Timeline
Log In to Comment