Documentation ¶
Overview ¶
Package winapi contains various low-level bindings to Windows APIs. It can be thought of as an extension to golang.org/x/sys/windows.
Index ¶
- Constants
- func ConvertStringSetToSlice(buf []byte) ([]string, error)
- func NTSuccess(status uint32) bool
- type DevPropKey
- type FILE_ID_INFO
- type FileDispositionInformationEx
- type FileLinkInformation
- type IOStatusBlock
- type JOBOBJECT_ASSOCIATE_COMPLETION_PORT
- type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
- type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
- type JOBOBJECT_BASIC_LIMIT_INFORMATION
- type JOBOBJECT_BASIC_PROCESS_ID_LIST
- type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION
- type JOBOBJECT_IO_ATTRIBUTION_INFORMATION
- type JOBOBJECT_IO_ATTRIBUTION_STATS
- type JOBOBJECT_IO_RATE_CONTROL_INFORMATION
- type JOBOBJECT_MEMORY_USAGE_INFORMATION
- type ObjectAttributes
- type ObjectDirectoryInformation
- type UnicodeString
Constants ¶
const ( STATUS_REPARSE_POINT_ENCOUNTERED = 0xC000050B ERROR_NO_MORE_ITEMS = 0x103 ERROR_MORE_DATA syscall.Errno = 234 )
const ( FileLinkInformationClass = 11 FileDispositionInformationExClass = 64 FILE_READ_ATTRIBUTES = 0x0080 FILE_WRITE_ATTRIBUTES = 0x0100 DELETE = 0x10000 FILE_OPEN = 1 FILE_CREATE = 2 FILE_LIST_DIRECTORY = 0x00000001 FILE_DIRECTORY_FILE = 0x00000001 FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 FILE_OPEN_REPARSE_POINT = 0x00200000 FILE_DISPOSITION_DELETE = 0x00000001 OBJ_DONT_REPARSE = 0x1000 STATUS_MORE_ENTRIES = 0x105 STATUS_NO_MORE_ENTRIES = 0x8000001a )
const ( JOB_OBJECT_MSG_END_OF_JOB_TIME uint32 = 1 JOB_OBJECT_MSG_END_OF_PROCESS_TIME uint32 = 2 JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT uint32 = 3 JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO uint32 = 4 JOB_OBJECT_MSG_NEW_PROCESS uint32 = 6 JOB_OBJECT_MSG_EXIT_PROCESS uint32 = 7 JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS uint32 = 8 JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT uint32 = 9 JOB_OBJECT_MSG_JOB_MEMORY_LIMIT uint32 = 10 JOB_OBJECT_MSG_NOTIFICATION_LIMIT uint32 = 11 )
Messages that can be received from an assigned io completion port. https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port
const ( JOB_OBJECT_CPU_RATE_CONTROL_ENABLE uint32 = 1 << iota JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE )
const ( JobObjectBasicAccountingInformation uint32 = 1 JobObjectBasicProcessIdList uint32 = 3 JobObjectBasicAndIoAccountingInformation uint32 = 8 JobObjectLimitViolationInformation uint32 = 13 JobObjectMemoryUsageInformation uint32 = 28 JobObjectNotificationLimitInformation2 uint32 = 33 JobObjectIoAttribution uint32 = 42 )
JobObjectInformationClass values. Used for a call to QueryInformationJobObject
https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/nf-jobapi2-queryinformationjobobject
const ( LOGON32_LOGON_INTERACTIVE uint32 = 2 LOGON32_LOGON_NETWORK uint32 = 3 LOGON32_LOGON_BATCH uint32 = 4 LOGON32_LOGON_SERVICE uint32 = 5 LOGON32_LOGON_UNLOCK uint32 = 7 LOGON32_LOGON_NETWORK_CLEARTEXT uint32 = 8 LOGON32_LOGON_NEW_CREDENTIALS uint32 = 9 )
Logon types
const ( LOGON32_PROVIDER_DEFAULT uint32 = 0 LOGON32_PROVIDER_WINNT40 uint32 = 2 LOGON32_PROVIDER_WINNT50 uint32 = 3 )
Logon providers
const ALL_PROCESSOR_GROUPS = 0xFFFF
Get count from all processor groups. https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups
const (
FileIdInfo = 18
)
Select entries from FILE_INFO_BY_HANDLE_CLASS.
C declaration:
typedef enum _FILE_INFO_BY_HANDLE_CLASS { FileBasicInfo, FileStandardInfo, FileNameInfo, FileRenameInfo, FileDispositionInfo, FileAllocationInfo, FileEndOfFileInfo, FileStreamInfo, FileCompressionInfo, FileAttributeTagInfo, FileIdBothDirectoryInfo, FileIdBothDirectoryRestartInfo, FileIoPriorityHintInfo, FileRemoteProtocolInfo, FileFullDirectoryInfo, FileFullDirectoryRestartInfo, FileStorageInfo, FileAlignmentInfo, FileIdInfo, FileIdExtdDirectoryInfo, FileIdExtdDirectoryRestartInfo, FileDispositionInfoEx, FileRenameInfoEx, FileCaseSensitiveInfo, FileNormalizedNameInfo, MaximumFileInfoByHandleClass } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
Documentation: https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ne-minwinbase-file_info_by_handle_class
const JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE uint32 = 0x1
const JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1
IO limit flags
const PROCESS_ALL_ACCESS uint32 = 2097151
Variables ¶
This section is empty.
Functions ¶
func ConvertStringSetToSlice ¶
ConvertStringSetToSlice is a helper function used to convert the contents of `buf` into a string slice. `buf` contains a set of null terminated strings with an additional null at the end to indicate the end of the set.
Types ¶
type DevPropKey ¶
type FILE_ID_INFO ¶
C declaration:
typedef struct _FILE_ID_INFO { ULONGLONG VolumeSerialNumber; FILE_ID_128 FileId; } FILE_ID_INFO, *PFILE_ID_INFO;
Documentation: https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-file_id_info
type FileDispositionInformationEx ¶
type FileDispositionInformationEx struct {
Flags uintptr
}
type FileLinkInformation ¶
type IOStatusBlock ¶
type IOStatusBlock struct {
Status, Information uintptr
}
type JOBOBJECT_ASSOCIATE_COMPLETION_PORT ¶
type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION ¶
type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION ¶
type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION struct { BasicInfo JOBOBJECT_BASIC_ACCOUNTING_INFORMATION IoInfo windows.IO_COUNTERS }
type JOBOBJECT_BASIC_LIMIT_INFORMATION ¶
type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { PerProcessUserTimeLimit int64 PerJobUserTimeLimit int64 LimitFlags uint32 MinimumWorkingSetSize uintptr MaximumWorkingSetSize uintptr ActiveProcessLimit uint32 Affinity uintptr PriorityClass uint32 SchedulingClass uint32 }
https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_limit_information
type JOBOBJECT_BASIC_PROCESS_ID_LIST ¶
type JOBOBJECT_BASIC_PROCESS_ID_LIST struct { NumberOfAssignedProcesses uint32 NumberOfProcessIdsInList uint32 ProcessIdList [1]uintptr }
https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_process_id_list
func (*JOBOBJECT_BASIC_PROCESS_ID_LIST) AllPids ¶
func (p *JOBOBJECT_BASIC_PROCESS_ID_LIST) AllPids() []uintptr
AllPids returns all the process Ids in the job object.
type JOBOBJECT_IO_ATTRIBUTION_INFORMATION ¶
type JOBOBJECT_IO_ATTRIBUTION_INFORMATION struct { ControlFlags uint32 ReadStats JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats JOBOBJECT_IO_ATTRIBUTION_STATS }
typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION { ULONG ControlFlags; JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats; JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats; } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION;
type JOBOBJECT_IO_ATTRIBUTION_STATS ¶
type JOBOBJECT_IO_ATTRIBUTION_STATS struct { IoCount uintptr TotalNonOverlappedQueueTime uint64 TotalNonOverlappedServiceTime uint64 TotalSize uint64 }
typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS { ULONG_PTR IoCount; ULONGLONG TotalNonOverlappedQueueTime; ULONGLONG TotalNonOverlappedServiceTime; ULONGLONG TotalSize; } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS;
type JOBOBJECT_IO_RATE_CONTROL_INFORMATION ¶
type JOBOBJECT_MEMORY_USAGE_INFORMATION ¶
typedef struct _JOBOBJECT_MEMORY_USAGE_INFORMATION { ULONG64 JobMemory; ULONG64 PeakJobMemoryUsed; } JOBOBJECT_MEMORY_USAGE_INFORMATION, *PJOBOBJECT_MEMORY_USAGE_INFORMATION;
type ObjectAttributes ¶
type ObjectDirectoryInformation ¶
type ObjectDirectoryInformation struct { Name UnicodeString TypeName UnicodeString }
type UnicodeString ¶
func NewUnicodeString ¶
func NewUnicodeString(s string) (*UnicodeString, error)
NewUnicodeString allocates a new UnicodeString and copies `s` into the buffer of the new UnicodeString.
func (UnicodeString) String ¶
func (uni UnicodeString) String() string
String converts a UnicodeString to a golang string