winapi

package module
v0.0.0-...-7134645 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2022 License: GPL-3.0 Imports: 5 Imported by: 0

README

winapi

=========

winapi is a Windows API wrapper package for Go.

Setup

Make sure you have a working Go installation. See Getting Started

Now run go get github.com/James-Ye/winapi

Documentation

Overview

winnt.go

Index

Constants

View Source
const (
	MAX_ADAPTER_DESCRIPTION_LENGTH = 128 // arb.
	MAX_ADAPTER_NAME_LENGTH        = 256 // arb.
	MAX_ADAPTER_ADDRESS_LENGTH     = 8   // arb.
	DEFAULT_MINIMUM_ENTITIES       = 32  // arb.
	MAX_HOSTNAME_LEN               = 128 // arb.
	MAX_DOMAIN_NAME_LEN            = 128 // arb.
	MAX_SCOPE_ID_LEN               = 256 // arb.
	MAX_DHCPV6_DUID_LENGTH         = 130 // RFC 3315.
)
View Source
const (
	//
	// The th32ProcessID argument is only used if TH32CS_SNAPHEAPLIST or
	// TH32CS_SNAPMODULE is specified. th32ProcessID == 0 means the current
	// process.
	//
	// NOTE that all of the snapshots are global except for the heap and module
	//      lists which are process specific. To enumerate the heap or module
	//      state for all WIN32 processes call with TH32CS_SNAPALL and the
	//      current process. Then for each process in the TH32CS_SNAPPROCESS
	//      list that isn't the current process, do a call with just
	//      TH32CS_SNAPHEAPLIST and/or TH32CS_SNAPMODULE.
	//
	// dwFlags
	//
	TH32CS_SNAPHEAPLIST = 0x00000001
	TH32CS_SNAPPROCESS  = 0x00000002
	TH32CS_SNAPTHREAD   = 0x00000004
	TH32CS_SNAPMODULE   = 0x00000008
	TH32CS_SNAPMODULE32 = 0x00000010
	TH32CS_SNAPALL      = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
	TH32CS_INHERIT      = 0x80000000
)
View Source
const (
	TUNNEL_TYPE_NONE   _TUNNEL_TYPE = 0
	TUNNEL_TYPE_OTHER  _TUNNEL_TYPE = 1
	TUNNEL_TYPE_DIRECT _TUNNEL_TYPE = 2
	TUNNEL_TYPE_6TO4   _TUNNEL_TYPE = 11
	TUNNEL_TYPE_ISATAP _TUNNEL_TYPE = 13
	TUNNEL_TYPE_TEREDO _TUNNEL_TYPE = 14
)
View Source
const (
	IfOperStatusUp if_oper_status = 1
	IfOperStatusDown
	IfOperStatusTesting
	IfOperStatusUnknown
	IfOperStatusDormant
	IfOperStatusNotPresent
	IfOperStatusLowerLayerDown
)
View Source
const (
	NET_IF_CONNECTION_DEDICATED _NET_IF_CONNECTION_TYPE = 1
	NET_IF_CONNECTION_PASSIVE
	NET_IF_CONNECTION_DEMAND
	NET_IF_CONNECTION_MAXIMUM
)
View Source
const (
	ERROR_SUCCESS             = 0
	ERROR_INVALID_FUNCTION    = 1
	ERROR_FILE_NOT_FOUND      = 2
	ERROR_INVALID_PARAMETER   = 87
	ERROR_INSUFFICIENT_BUFFER = 122
	ERROR_MORE_DATA           = 234
)

Error codes

View Source
const (
	STANDARD_RIGHTS_REQUIRED = 0x000F0000
	SYNCHRONIZE              = 0x00100000
	EVENT_ALL_ACCESS         = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
)
View Source
const (
	//
	// These values are from iptypes.h.
	// They need to fit in a 4 bit field.
	//
	IpPrefixOriginOther _NL_PREFIX_ORIGIN = 0
	IpPrefixOriginManual
	IpPrefixOriginWellKnown
	IpPrefixOriginDhcp
	IpPrefixOriginRouterAdvertisement
	IpPrefixOriginUnchanged _NL_PREFIX_ORIGIN = 1 << 4
)
View Source
const (
	//
	// TODO: Remove the Nlso* definitions.
	//
	NlsoOther _NL_SUFFIX_ORIGIN = 0
	NlsoManual
	NlsoWellKnown
	NlsoDhcp
	NlsoLinkLayerAddress
	NlsoRandom

	//
	// These values are from in iptypes.h.
	// They need to fit in a 4 bit field.
	//
	IpSuffixOriginOther _NL_SUFFIX_ORIGIN = 0
	IpSuffixOriginManual
	IpSuffixOriginWellKnown
	IpSuffixOriginDhcp
	IpSuffixOriginLinkLayerAddress
	IpSuffixOriginRandom
	IpSuffixOriginUnchanged _NL_SUFFIX_ORIGIN = 1 << 4
)
View Source
const (
	//
	// TODO: Remove the Nlds* definitions.
	//
	NldsInvalid _NL_DAD_STATE = 0
	NldsTentative
	NldsDuplicate
	NldsDeprecated
	NldsPreferred

	//
	// These values are from in iptypes.h.
	//
	IpDadStateInvalid _NL_DAD_STATE = 0
	IpDadStateTentative
	IpDadStateDuplicate
	IpDadStateDeprecated
	IpDadStatePreferred
)
View Source
const (
	FALSE = 0
	TRUE  = 1
)
View Source
const (
	DETACHED_PROCESS = 0x00000008
	CREATE_NO_WINDOW = 0x08000000

	CREATE_NEW_CONSOLE = 0x00000010

	CREATE_NEW_PROCESS_GROUP   = 0x00000200
	CREATE_UNICODE_ENVIRONMENT = 0x00000400

	NORMAL_PRIORITY_CLASS   = 0x00000020
	IDLE_PRIORITY_CLASS     = 0x00000040
	HIGH_PRIORITY_CLASS     = 0x00000080
	REALTIME_PRIORITY_CLASS = 0x00000100

	STARTF_USESHOWWINDOW    = 0x00000001
	STARTF_USESIZE          = 0x00000002
	STARTF_USEPOSITION      = 0x00000004
	STARTF_USECOUNTCHARS    = 0x00000008
	STARTF_USEFILLATTRIBUTE = 0x00000010
	STARTF_RUNFULLSCREEN    = 0x00000020 // ignored for non-x86 platforms
	STARTF_FORCEONFEEDBACK  = 0x00000040
	STARTF_FORCEOFFFEEDBACK = 0x00000080
	STARTF_USESTDHANDLES    = 0x00000100
)
View Source
const (
	INVALID_HANDLE_VALUE     = syscall.Handle(0xFFFFFFFF)
	INVALID_FILE_SIZE        = 0xFFFFFFFF
	INVALID_SET_FILE_POINTER = 0xFFFFFFFF
	INVALID_FILE_ATTRIBUTES  = 0xFFFFFFFF
)
View Source
const ERROR_ALREADY_EXISTS uint32 = 183

MessageId: ERROR_ALREADY_EXISTS

MessageText:

Cannot create a file when that file already exists.

View Source
const MAX_PATH = 260

Variables

View Source
var (
	PROCESSOR_ARCHITECTURE_INTEL          = 0
	PROCESSOR_ARCHITECTURE_MIPS           = 1
	PROCESSOR_ARCHITECTURE_ALPHA          = 2
	PROCESSOR_ARCHITECTURE_PPC            = 3
	PROCESSOR_ARCHITECTURE_SHX            = 4
	PROCESSOR_ARCHITECTURE_ARM            = 5
	PROCESSOR_ARCHITECTURE_IA64           = 6
	PROCESSOR_ARCHITECTURE_ALPHA64        = 7
	PROCESSOR_ARCHITECTURE_MSIL           = 8
	PROCESSOR_ARCHITECTURE_AMD64          = 9
	PROCESSOR_ARCHITECTURE_IA32_ON_WIN64  = 10
	PROCESSOR_ARCHITECTURE_NEUTRAL        = 11
	PROCESSOR_ARCHITECTURE_ARM64          = 12
	PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 = 13
	PROCESSOR_ARCHITECTURE_IA32_ON_ARM64  = 14

	PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF

	PRODUCT_UNDEFINED = 0x00000000

	PRODUCT_ULTIMATE                     = 0x00000001
	PRODUCT_HOME_BASIC                   = 0x00000002
	PRODUCT_HOME_PREMIUM                 = 0x00000003
	PRODUCT_ENTERPRISE                   = 0x00000004
	PRODUCT_HOME_BASIC_N                 = 0x00000005
	PRODUCT_BUSINESS                     = 0x00000006
	PRODUCT_STANDARD_SERVER              = 0x00000007
	PRODUCT_DATACENTER_SERVER            = 0x00000008
	PRODUCT_SMALLBUSINESS_SERVER         = 0x00000009
	PRODUCT_ENTERPRISE_SERVER            = 0x0000000A
	PRODUCT_STARTER                      = 0x0000000B
	PRODUCT_DATACENTER_SERVER_CORE       = 0x0000000C
	PRODUCT_STANDARD_SERVER_CORE         = 0x0000000D
	PRODUCT_ENTERPRISE_SERVER_CORE       = 0x0000000E
	PRODUCT_ENTERPRISE_SERVER_IA64       = 0x0000000F
	PRODUCT_BUSINESS_N                   = 0x00000010
	PRODUCT_WEB_SERVER                   = 0x00000011
	PRODUCT_CLUSTER_SERVER               = 0x00000012
	PRODUCT_HOME_SERVER                  = 0x00000013
	PRODUCT_STORAGE_EXPRESS_SERVER       = 0x00000014
	PRODUCT_STORAGE_STANDARD_SERVER      = 0x00000015
	PRODUCT_STORAGE_WORKGROUP_SERVER     = 0x00000016
	PRODUCT_STORAGE_ENTERPRISE_SERVER    = 0x00000017
	PRODUCT_SERVER_FOR_SMALLBUSINESS     = 0x00000018
	PRODUCT_SMALLBUSINESS_SERVER_PREMIUM = 0x00000019

	PRODUCT_UNLICENSED = uint64(0xABCDABCD)

	VER_PLATFORM_WIN32s        = 0
	VER_PLATFORM_WIN32_WINDOWS = 1
	VER_PLATFORM_WIN32_NT      = 2

	VER_NT_WORKSTATION       = 0x0000001
	VER_NT_DOMAIN_CONTROLLER = 0x0000002
	VER_NT_SERVER            = 0x0000003

	GENERIC_READ    = 0x80000000
	GENERIC_WRITE   = 0x40000000
	GENERIC_EXECUTE = 0x20000000
	GENERIC_ALL     = 0x10000000

	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_VIRTUAL             = 0x00010000
	FILE_NOTIFY_CHANGE_FILE_NAME       = 0x00000001
	FILE_NOTIFY_CHANGE_DIR_NAME        = 0x00000002
	FILE_NOTIFY_CHANGE_ATTRIBUTES      = 0x00000004
	FILE_NOTIFY_CHANGE_SIZE            = 0x00000008
	FILE_NOTIFY_CHANGE_LAST_WRITE      = 0x00000010
	FILE_NOTIFY_CHANGE_LAST_ACCESS     = 0x00000020
	FILE_NOTIFY_CHANGE_CREATION        = 0x00000040
	FILE_NOTIFY_CHANGE_SECURITY        = 0x00000100
	FILE_ACTION_ADDED                  = 0x00000001
	FILE_ACTION_REMOVED                = 0x00000002
	FILE_ACTION_MODIFIED               = 0x00000003
	FILE_ACTION_RENAMED_OLD_NAME       = 0x00000004
	FILE_ACTION_RENAMED_NEW_NAME       = 0x00000005
	MAILSLOT_NO_MESSAGE                = 0xFFFFFFFF
	MAILSLOT_WAIT_FOREVER              = 0xFFFFFFFF
	FILE_CASE_SENSITIVE_SEARCH         = 0x00000001
	FILE_CASE_PRESERVED_NAMES          = 0x00000002
	FILE_UNICODE_ON_DISK               = 0x00000004
	FILE_PERSISTENT_ACLS               = 0x00000008
	FILE_FILE_COMPRESSION              = 0x00000010
	FILE_VOLUME_QUOTAS                 = 0x00000020
	FILE_SUPPORTS_SPARSE_FILES         = 0x00000040
	FILE_SUPPORTS_REPARSE_POINTS       = 0x00000080
	FILE_SUPPORTS_REMOTE_STORAGE       = 0x00000100
	FILE_VOLUME_IS_COMPRESSED          = 0x00008000
	FILE_SUPPORTS_OBJECT_IDS           = 0x00010000
	FILE_SUPPORTS_ENCRYPTION           = 0x00020000
	FILE_NAMED_STREAMS                 = 0x00040000
	FILE_READ_ONLY_VOLUME              = 0x00080000
	FILE_SEQUENTIAL_WRITE_ONCE         = 0x00100000
	FILE_SUPPORTS_TRANSACTIONS         = 0x00200000

	CREATE_NEW        = 1
	CREATE_ALWAYS     = 2
	OPEN_EXISTING     = 3
	OPEN_ALWAYS       = 4
	TRUNCATE_EXISTING = 5

	KEY_QUERY_VALUE        = 0x0001
	KEY_SET_VALUE          = 0x0002
	KEY_CREATE_SUB_KEY     = 0x0004
	KEY_ENUMERATE_SUB_KEYS = 0x0008
	KEY_NOTIFY             = 0x0010
	KEY_CREATE_LINK        = 0x0020
	KEY_WOW64_32KEY        = 0x0200
	KEY_WOW64_64KEY        = 0x0100
	KEY_WOW64_RES          = 0x0300

	//
	// MaximumAllowed access type
	//
	MAXIMUM_ALLOWED = 0x02000000
)

判断操作系统的量

Functions

func CharsPtr

func CharsPtr(s string) uintptr

func CloseHandle

func CloseHandle(hObject syscall.Handle) bool

func CreateEnvironmentBlock

func CreateEnvironmentBlock(hToken syscall.Handle, bInherit bool) (unsafe.Pointer, bool)

func CreateFile

func CreateFile(lpFileName *uint16, dwDesiredAccess DWORD, dwShareMode DWORD, lpSecurityAttributes LPSECURITY_ATTRIBUTES, dwCreationDisposition DWORD, dwFlagsAndAttributes DWORD, hTemplateFile syscall.Handle) syscall.Handle

func CreateMutex

func CreateMutex(lpMutexAttributes LPSECURITY_ATTRIBUTES, bInitialOwner bool, lpName *uint16) (syscall.Handle, error)

func CreateProcessA

func CreateProcessA(strApplicationName string, strCommandLine string,
	lpProcessAttributes LPSECURITY_ATTRIBUTES, lpThreadAttributes LPSECURITY_ATTRIBUTES,
	bInheritHandles bool, dwCreationFlags DWORD, lpEnvironment unsafe.Pointer, strCurrentDirectory string,
	lpStartupInfo LPSTARTUPINFO, lpProcessInformation LPPROCESS_INFORMATION) (bool, syscall.Errno)

func CreateProcessAsUser

func CreateProcessAsUser(hToken syscall.Handle, strApplicationName string, strCommandLine string,
	lpProcessAttributes LPSECURITY_ATTRIBUTES, lpThreadAttributes LPSECURITY_ATTRIBUTES,
	bInheritHandles bool, dwCreationFlags DWORD, lpEnvironment unsafe.Pointer, strCurrentDirectory string,
	lpStartupInfo LPSTARTUPINFO, lpProcessInformation LPPROCESS_INFORMATION) (bool, syscall.Errno)

func CreateToolhelp32Snapshot

func CreateToolhelp32Snapshot(dwFlags DWORD, th32ProcessID DWORD) (syscall.Handle, syscall.Errno)

func DestroyEnvironmentBlock

func DestroyEnvironmentBlock(lpEnvironment unsafe.Pointer) bool

=============================================================================

DestroyEnvironmentBlock

Frees environment variables created by CreateEnvironmentBlock

lpEnvironment - A pointer to the environment block

Returns: true if successful

false if not.  syscall.Errno for more details

=============================================================================

func DeviceIoControl

func DeviceIoControl(hDevice syscall.Handle, dwIoControlCode DWORD, lpInBuffer unsafe.Pointer, nInBufferSize DWORD, lpOutBuffer unsafe.Pointer, nOutBufferSize DWORD, lpBytesReturned *DWORD, lpOverlapped LPOVERLAPPED) bool

func GetAdaptersAddresses

func GetAdaptersAddresses(Family uint64, Flags uint64, Reserved unsafe.Pointer, AdapterAddresses PIP_ADAPTER_ADDRESSES, SizePointer *uint64) uint64

func GetComputerName

func GetComputerName() (string, bool)

func GetCurrentProcess

func GetCurrentProcess() syscall.Handle

func GetModuleFileName

func GetModuleFileName(hModule HMODULE) (string, bool)

func GetTickCount

func GetTickCount() uint32

func GetVersionEx

func GetVersionEx(ov *OSVERSIONINFOA) bool

func HIWORD

func HIWORD(dw uint32) uint16

func IntPtr

func IntPtr(n int) uintptr

func IsWow64Process

func IsWow64Process(hProcess syscall.Handle) bool

func LOWORD

func LOWORD(dw uint32) uint16

func OpenEvent

func OpenEvent(desiredAccess uint32, bInheritHandle bool, lpName *uint16) syscall.Handle

func OpenProcess

func OpenProcess(dwDesiredAccess DWORD, bInheritHandle bool, dwProcessId DWORD) syscall.Handle

func PathQuoteSpaces

func PathQuoteSpaces(szPath *string) bool

func Process32First

func Process32First(hSnapshot syscall.Handle, lppe LPPROCESSENTRY32) bool

func Process32Next

func Process32Next(hSnapshot syscall.Handle, lppe LPPROCESSENTRY32) bool

func ReadFile

func ReadFile(hFile syscall.Handle, nNumberOfBytesToRead DWORD, lpNumberOfBytesRead *DWORD, lpOverlapped LPOVERLAPPED) bool

func ReleaseMutex

func ReleaseMutex(hMutex syscall.Handle) bool

func SHGetValueA

func SHGetValueA(hkey HKEY, subKey string, value string, pdwType *DWORD, pvData unsafe.Pointer, pcbData *DWORD) uint32

func SetEvent

func SetEvent(hEvent syscall.Handle) bool

func StrPtr

func StrPtr(s string) uintptr

func UTF16toString

func UTF16toString(p *uint16) string

UTF16toString converts a pointer to a UTF16 string into a Go string.

func WTSQueryUserToken

func WTSQueryUserToken(SessionId uint32, hToken syscall.Handle) (bool, syscall.Errno)

func Wow64DisableWow64FsRedirection

func Wow64DisableWow64FsRedirection() (unsafe.Pointer, bool)

func Wow64RevertWow64FsRedirection

func Wow64RevertWow64FsRedirection(OldValue unsafe.Pointer) bool

Types

type ADDRESS_FAMILY

type ADDRESS_FAMILY uint16

type ATOM

type ATOM uint16

type BOOL

type BOOL int32

func BoolToBOOL

func BoolToBOOL(value bool) BOOL

type BYTE

type BYTE uint16

type DWORD

type DWORD uint32
const (
	WAIT_FAILED   DWORD = 0xFFFFFFFF
	WAIT_OBJECT_0       = STATUS_WAIT_0 + 0
)
const (
	STATUS_WAIT_0 DWORD = 0x00000000
)

func WaitForSingleObject

func WaitForSingleObject(hHandle syscall.Handle, dwMilliseconds DWORD) DWORD

type DWORD_PTR

type DWORD_PTR uintptr // 不确定

type HGLOBAL

type HGLOBAL syscall.Handle

func GlobalAlloc

func GlobalAlloc(uFlags uint32, dwBytes uintptr) HGLOBAL

func GlobalFree

func GlobalFree(hMem HGLOBAL) HGLOBAL

type HINSTANCE

type HINSTANCE syscall.Handle

type HMODULE

type HMODULE uintptr

type HRESULT

type HRESULT uint32

type HRSRC

type HRSRC uintptr

type HWINEVENTHOOK

type HWINEVENTHOOK syscall.Handle

type IFTYPE

type IFTYPE uint64

type IF_INDEX

type IF_INDEX NET_IFINDEX

type IF_LUID

type IF_LUID NET_LUID

IF_LUID

Define the locally unique datalink interface identifier type. This type is persistable.

type IF_OPER_STATUS

type IF_OPER_STATUS if_oper_status

type IP_ADAPTER_ADDRESSES

type IP_ADAPTER_ADDRESSES IP_ADAPTER_ADDRESSES_LH

#if (NTDDI_VERSION >= NTDDI_LONGHORN)

type IP_ADAPTER_ADDRESSES_LH

type IP_ADAPTER_ADDRESSES_LH _IP_ADAPTER_ADDRESSES_LH

type IP_ADAPTER_ANYCAST_ADDRESS_XP

type IP_ADAPTER_ANYCAST_ADDRESS_XP _IP_ADAPTER_ANYCAST_ADDRESS_XP

type IP_ADAPTER_DNS_SERVER_ADDRESS_XP

type IP_ADAPTER_DNS_SERVER_ADDRESS_XP _IP_ADAPTER_DNS_SERVER_ADDRESS_XP

type IP_ADAPTER_GATEWAY_ADDRESS_LH

type IP_ADAPTER_GATEWAY_ADDRESS_LH _IP_ADAPTER_GATEWAY_ADDRESS_LH

type IP_ADAPTER_INFO

type IP_ADAPTER_INFO _IP_ADAPTER_INFO

type IP_ADAPTER_MULTICAST_ADDRESS_XP

type IP_ADAPTER_MULTICAST_ADDRESS_XP _IP_ADAPTER_MULTICAST_ADDRESS_XP

type IP_ADAPTER_PREFIX_XP

type IP_ADAPTER_PREFIX_XP _IP_ADAPTER_PREFIX_XP

type IP_ADAPTER_UNICAST_ADDRESS_LH

type IP_ADAPTER_UNICAST_ADDRESS_LH _IP_ADAPTER_UNICAST_ADDRESS_LH

type IP_ADAPTER_WINS_SERVER_ADDRESS_LH

type IP_ADAPTER_WINS_SERVER_ADDRESS_LH _IP_ADAPTER_WINS_SERVER_ADDRESS_LH

type IP_ADDRESS_STRING

type IP_ADDRESS_STRING struct {
	String [4 * 4]rune
}

IP_ADDRESS_STRING - store an IP address as a dotted decimal string

type IP_ADDR_STRING

type IP_ADDR_STRING _IP_ADDR_STRING

type IP_DAD_STATE

type IP_DAD_STATE NL_DAD_STATE

type IP_MASK_STRING

type IP_MASK_STRING IP_ADDRESS_STRING

type IP_PREFIX_ORIGIN

type IP_PREFIX_ORIGIN NL_PREFIX_ORIGIN

The following types require Winsock2.

type IP_SUFFIX_ORIGIN

type IP_SUFFIX_ORIGIN NL_SUFFIX_ORIGIN

type LANGID

type LANGID uint16

type LCID

type LCID uint32

type LCTYPE

type LCTYPE uint32

type LMSTR

type LMSTR *uint16

type LPBYTE

type LPBYTE *byte

type LPDWORD

type LPDWORD *uint32

type LPOVERLAPPED

type LPOVERLAPPED *_OVERLAPPED

type LPPROCESSENTRY32

type LPPROCESSENTRY32 *PROCESSENTRY32

type LPPROCESSENTRY32W

type LPPROCESSENTRY32W *PROCESSENTRY32W

type LPPROCESS_INFORMATION

type LPPROCESS_INFORMATION *PROCESS_INFORMATION

type LPSECURITY_ATTRIBUTES

type LPSECURITY_ATTRIBUTES *_SECURITY_ATTRIBUTES

type LPSOCKADDR

type LPSOCKADDR *sockaddr

type LPSOCKET_ADDRESS

type LPSOCKET_ADDRESS *_SOCKET_ADDRESS

type LPSTARTUPINFO

type LPSTARTUPINFO *STARTUPINFO

#ifdef UNICODE

type LPSTARTUPINFOW

type LPSTARTUPINFOW *STARTUPINFOW

type LPTSTR

type LPTSTR *uint16

type LPVOID

type LPVOID uintptr

type LPWSTR

type LPWSTR *uint16

type NET_IFINDEX

type NET_IFINDEX uint64

Interface Index (ifIndex)

type NET_IFTYPE

type NET_IFTYPE uint16

Interface Type (IANA ifType)

type NET_IF_COMPARTMENT_ID

type NET_IF_COMPARTMENT_ID uint32
const (
	NET_IF_COMPARTMENT_ID_UNSPECIFIED NET_IF_COMPARTMENT_ID = 0
	NET_IF_COMPARTMENT_ID_PRIMARY     NET_IF_COMPARTMENT_ID = 1
)

Define compartment ID type:

type NET_IF_CONNECTION_TYPE

type NET_IF_CONNECTION_TYPE _NET_IF_CONNECTION_TYPE

type NET_IF_NETWORK_GUID

type NET_IF_NETWORK_GUID syscall.GUID

Define NetworkGUID type:

type NET_LUID

type NET_LUID NET_LUID_LH

Need to make this visible on all platforms (for the purpose of IF_LUID).

type NET_LUID_LH

type NET_LUID_LH _NET_LUID_LH

type NL_DAD_STATE

type NL_DAD_STATE _NL_DAD_STATE

type NL_PREFIX_ORIGIN

type NL_PREFIX_ORIGIN _NL_PREFIX_ORIGIN

type NL_SUFFIX_ORIGIN

type NL_SUFFIX_ORIGIN _NL_SUFFIX_ORIGIN

type OSVERSIONINFOA

type OSVERSIONINFOA struct {
	OSVersionInfoSize uint32
	MajorVersion      uint32
	MinorVersion      uint32
	BuildNumber       uint32
	PlatformId        uint32
	SzCSDVersion      [128]rune // Maintenance string for PSS usage
}

type OSVersionInfoA

type OSVersionInfoA struct {
	OSVersionInfoSize DWORD     // 结构体大小, in bytes. Set this member to sizeof(OSVERSIONINFOEX).
	MajorVersion      DWORD     // 主版本号
	MinorVersion      DWORD     // 次版本号
	BuildNumber       DWORD     // 编译版本号
	PlatformId        DWORD     // 系统支持的平台
	CSDVersion        [128]byte // 系统补丁包的名称  CSDVersion[128]
}

#region OSVERSIONINFOA OSVERSIONINFOA structure (winnt.h) docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoa

typedef struct _OSVERSIONINFOA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;

type OSVersionInfoExA

type OSVersionInfoExA struct {
	OSVersionInfoSize DWORD     // 结构体大小, in bytes. Set this member to sizeof(OSVERSIONINFOEX).
	MajorVersion      DWORD     // 主版本号
	MinorVersion      DWORD     // 次版本号
	BuildNumber       DWORD     // 编译版本号
	PlatformId        DWORD     // 系统支持的平台
	CSDVersion        [128]byte // 系统补丁包的名称  CSDVersion[128]// 这个128是必须的 不然就会出现"The data area passed to a system call is too small."
	ServicePackMajor  WORD      // 系统补丁包的主版本
	ServicePackMinor  WORD      // 系统补丁包的次版本
	SuiteMask         WORD      // 标识系统上的程序组
	ProductType       byte      // 标识系统类型
	Reserved          byte      // 保留,未使用

} // 这个结构在Windows 2000后出现,老版本的OSVERSIONINFO结构没有wServicePackMajor、wServicePackMinor、wSuiteMask、wProductType和wReserved这几个成员。

func GetVersionExW

func GetVersionExW() (OSVersionInfoExA, error)

#region GetVersionExW 函数 (sysinfoapi.h) docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getversionexw

Kernel32.dll GetVersionExW function (sysinfoapi.h) NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExW(

[in, out] LPOSVERSIONINFOW lpVersionInformation

);

type OVERLAPPED

type OVERLAPPED _OVERLAPPED

type PIF_INDEX

type PIF_INDEX *NET_IFINDEX

type PIF_LUID

type PIF_LUID *NET_LUID

type PIP_ADAPTER_ADDRESSES

type PIP_ADAPTER_ADDRESSES *IP_ADAPTER_ADDRESSES_LH

type PIP_ADAPTER_ADDRESSES_LH

type PIP_ADAPTER_ADDRESSES_LH *_IP_ADAPTER_ADDRESSES_LH

type PIP_ADAPTER_ANYCAST_ADDRESS_XP

type PIP_ADAPTER_ANYCAST_ADDRESS_XP *_IP_ADAPTER_ANYCAST_ADDRESS_XP

type PIP_ADAPTER_DNS_SERVER_ADDRESS_XP

type PIP_ADAPTER_DNS_SERVER_ADDRESS_XP *_IP_ADAPTER_DNS_SERVER_ADDRESS_XP

type PIP_ADAPTER_GATEWAY_ADDRESS_LH

type PIP_ADAPTER_GATEWAY_ADDRESS_LH *_IP_ADAPTER_GATEWAY_ADDRESS_LH

type PIP_ADAPTER_INFO

type PIP_ADAPTER_INFO *IP_ADAPTER_INFO

type PIP_ADAPTER_MULTICAST_ADDRESS_XP

type PIP_ADAPTER_MULTICAST_ADDRESS_XP *_IP_ADAPTER_MULTICAST_ADDRESS_XP

type PIP_ADAPTER_PREFIX_XP

type PIP_ADAPTER_PREFIX_XP *_IP_ADAPTER_PREFIX_XP

type PIP_ADAPTER_UNICAST_ADDRESS_LH

type PIP_ADAPTER_UNICAST_ADDRESS_LH *_IP_ADAPTER_UNICAST_ADDRESS_LH

type PIP_ADAPTER_WINS_SERVER_ADDRESS_LH

type PIP_ADAPTER_WINS_SERVER_ADDRESS_LH *_IP_ADAPTER_WINS_SERVER_ADDRESS_LH

type PIP_ADDRESS_STRING

type PIP_ADDRESS_STRING *IP_ADDRESS_STRING

type PIP_ADDR_STRING

type PIP_ADDR_STRING *IP_ADDR_STRING

type PIP_MASK_STRING

type PIP_MASK_STRING *IP_ADDRESS_STRING

type PNET_IFINDEX

type PNET_IFINDEX *uint64

type PNET_IFTYPE

type PNET_IFTYPE *uint16

type PNET_IF_COMPARTMENT_ID

type PNET_IF_COMPARTMENT_ID *uint32

type PNET_IF_CONNECTION_TYPE

type PNET_IF_CONNECTION_TYPE *_NET_IF_CONNECTION_TYPE

type PNET_IF_NETWORK_GUID

type PNET_IF_NETWORK_GUID *syscall.GUID

type PNET_LUID

type PNET_LUID *NET_LUID

type PNET_LUID_LH

type PNET_LUID_LH *_NET_LUID_LH

type PPROCESSENTRY32

type PPROCESSENTRY32 *PROCESSENTRY32

type PPROCESSENTRY32W

type PPROCESSENTRY32W *PROCESSENTRY32W

type PPROCESS_INFORMATION

type PPROCESS_INFORMATION *PROCESS_INFORMATION

type PROCESSENTRY32

type PROCESSENTRY32 PROCESSENTRY32W

type PROCESSENTRY32W

type PROCESSENTRY32W tagPROCESSENTRY32W

type PROCESS_INFORMATION

type PROCESS_INFORMATION _PROCESS_INFORMATION

type PSECURITY_ATTRIBUTES

type PSECURITY_ATTRIBUTES *_SECURITY_ATTRIBUTES

type PSOCKADDR

type PSOCKADDR *sockaddr

type PSOCKET_ADDRESS

type PSOCKET_ADDRESS *_SOCKET_ADDRESS

type PTUNNEL_TYPE

type PTUNNEL_TYPE *_TUNNEL_TYPE

type SECURITY_ATTRIBUTES

type SECURITY_ATTRIBUTES _SECURITY_ATTRIBUTES

type SOCKADDR

type SOCKADDR sockaddr

type SOCKET_ADDRESS

type SOCKET_ADDRESS _SOCKET_ADDRESS

type STARTUPINFO

type STARTUPINFO STARTUPINFOW

#ifdef UNICODE

type STARTUPINFOW

type STARTUPINFOW _STARTUPINFOW

type TUNNEL_TYPE

type TUNNEL_TYPE _TUNNEL_TYPE

type Timeval

type Timeval struct {
	// contains filtered or unexported fields
}

* Structure used in select() call, taken from the BSD file sys/time.h.

type ULong

type ULong uint32
const (
	INADDR_NONE ULong = 0xffffffff
)

func Inet_addr

func Inet_addr(cp string) ULong

type WCHAR

type WCHAR uint16

type WORD

type WORD uint16

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL