- 修正 WTS 会话相关类型、枚举与活动会话选择逻辑 - 对齐 FILE_ID_DESCRIPTOR 布局与 FILE_ID_TYPE 语义,修复 OpenFileById 调用前提 - 修正 user32/shell32/kernel32 部分 API 的返回值、参数个数与错误处理 - 完善剪贴板更新格式读取的缓冲区重试逻辑 - 补充常用进程、线程、调试、桌面与会话 helper - 增加结构体布局、会话查询、剪贴板、CreateProcess 等回归测试 - 将默认 CreateProcess 相关测试切到 helper 进程,并保留显式开启的 cmd.exe 集成覆盖
187 lines
4.4 KiB
Go
187 lines
4.4 KiB
Go
package win32api
|
|
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
const (
|
|
WM_USER UINT = 0x0400
|
|
)
|
|
|
|
type (
|
|
ATOM uint16
|
|
BOOL int32
|
|
COLORREF uint32
|
|
DWM_FRAME_COUNT uint64
|
|
DWORD uint32
|
|
LPDWORD *uint32
|
|
DWORDLONG uint64
|
|
HACCEL HANDLE
|
|
HANDLE uintptr
|
|
HBITMAP HANDLE
|
|
HBRUSH HANDLE
|
|
HCURSOR HANDLE
|
|
HDC HANDLE
|
|
HDESK HANDLE
|
|
HDROP HANDLE
|
|
HDWP HANDLE
|
|
HENHMETAFILE HANDLE
|
|
HFONT HANDLE
|
|
HGDIOBJ HANDLE
|
|
HGLOBAL HANDLE
|
|
HGLRC HANDLE
|
|
HHOOK HANDLE
|
|
HICON HANDLE
|
|
HIMAGELIST HANDLE
|
|
HINSTANCE HANDLE
|
|
HKEY HANDLE
|
|
HKL HANDLE
|
|
HMENU HANDLE
|
|
HMODULE HANDLE
|
|
HMONITOR HANDLE
|
|
HPEN HANDLE
|
|
HRESULT int32
|
|
HRGN HANDLE
|
|
HRSRC HANDLE
|
|
HTHUMBNAIL HANDLE
|
|
HWND HANDLE
|
|
LPARAM uintptr
|
|
LPCVOID unsafe.Pointer
|
|
LPVOID unsafe.Pointer
|
|
LRESULT uintptr
|
|
LPCWSTR *uint16
|
|
PVOID unsafe.Pointer
|
|
QPC_TIME uint64
|
|
ULONG uint32
|
|
ULONG_PTR uintptr
|
|
WPARAM uintptr
|
|
WTS_CONNECTSTATE_CLASS int32
|
|
WTS_INFO_CLASS int32
|
|
TRACEHANDLE uintptr
|
|
TOKEN HANDLE
|
|
LPWSTR *uint16
|
|
TOKEN_TYPE int32
|
|
SW int32
|
|
SECURITY_IMPERSONATION_LEVEL int32
|
|
WCHAR uint16
|
|
WORD uint16
|
|
USN int64
|
|
LARGE_INTEGER LONGLONG
|
|
LONGLONG int64
|
|
UINT uint32
|
|
)
|
|
|
|
type WTS_SESSION_INFO struct {
|
|
SessionID DWORD
|
|
WinStationName *uint16
|
|
State WTS_CONNECTSTATE_CLASS
|
|
}
|
|
|
|
const (
|
|
WTS_CURRENT_SERVER_HANDLE uintptr = 0
|
|
WTS_CURRENT_SESSION DWORD = 0xFFFFFFFF
|
|
)
|
|
const (
|
|
WTSActive WTS_CONNECTSTATE_CLASS = iota
|
|
WTSConnected
|
|
WTSConnectQuery
|
|
WTSShadow
|
|
WTSDisconnected
|
|
WTSIdle
|
|
WTSListen
|
|
WTSReset
|
|
WTSDown
|
|
WTSInit
|
|
)
|
|
const (
|
|
WTSInitialProgram WTS_INFO_CLASS = iota
|
|
WTSApplicationName
|
|
WTSWorkingDirectory
|
|
WTSOEMId
|
|
WTSSessionId
|
|
WTSUserName
|
|
WTSWinStationName
|
|
WTSDomainName
|
|
WTSConnectState
|
|
WTSClientBuildNumber
|
|
WTSClientName
|
|
WTSClientDirectory
|
|
WTSClientProductId
|
|
WTSClientHardwareId
|
|
WTSClientAddress
|
|
WTSClientDisplay
|
|
WTSClientProtocolType
|
|
WTSIdleTime
|
|
WTSLogonTime
|
|
WTSIncomingBytes
|
|
WTSOutgoingBytes
|
|
WTSIncomingFrames
|
|
WTSOutgoingFrames
|
|
WTSClientInfo
|
|
WTSSessionInfo
|
|
WTSSessionInfoEx
|
|
WTSConfigInfo
|
|
WTSValidationInfo
|
|
WTSSessionAddressV4
|
|
WTSIsRemoteSession
|
|
)
|
|
const (
|
|
SecurityAnonymous SECURITY_IMPERSONATION_LEVEL = iota
|
|
SecurityIdentification
|
|
SecurityImpersonation
|
|
SecurityDelegation
|
|
)
|
|
const (
|
|
TokenPrimary TOKEN_TYPE = iota + 1
|
|
TokenImpersonazion
|
|
)
|
|
const (
|
|
SW_HIDE SW = 0
|
|
SW_SHOWNORMAL = 1
|
|
SW_NORMAL = 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_MAX = 1
|
|
)
|
|
const (
|
|
CREATE_UNICODE_ENVIRONMENT DWORD = 0x00000400
|
|
CREATE_NO_WINDOW DWORD = 0x08000000
|
|
CREATE_NEW_CONSOLE DWORD = 0x00000010
|
|
)
|
|
|
|
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
|
|
}
|