mirror of
https://github.com/beego/bee.git
synced 2024-11-25 15:00:55 +00:00
115 lines
2.4 KiB
Go
115 lines
2.4 KiB
Go
package proc
|
|
|
|
import "unsafe"
|
|
|
|
const (
|
|
_CONTEXT_AMD64 = 0x100000
|
|
_CONTEXT_CONTROL = (_CONTEXT_AMD64 | 0x1)
|
|
_CONTEXT_INTEGER = (_CONTEXT_AMD64 | 0x2)
|
|
_CONTEXT_SEGMENTS = (_CONTEXT_AMD64 | 0x4)
|
|
_CONTEXT_FLOATING_POINT = (_CONTEXT_AMD64 | 0x8)
|
|
_CONTEXT_DEBUG_REGISTERS = (_CONTEXT_AMD64 | 0x10)
|
|
_CONTEXT_FULL = (_CONTEXT_CONTROL | _CONTEXT_INTEGER | _CONTEXT_FLOATING_POINT)
|
|
_CONTEXT_ALL = (_CONTEXT_CONTROL | _CONTEXT_INTEGER | _CONTEXT_SEGMENTS | _CONTEXT_FLOATING_POINT | _CONTEXT_DEBUG_REGISTERS)
|
|
_CONTEXT_EXCEPTION_ACTIVE = 0x8000000
|
|
_CONTEXT_SERVICE_ACTIVE = 0x10000000
|
|
_CONTEXT_EXCEPTION_REQUEST = 0x40000000
|
|
_CONTEXT_EXCEPTION_REPORTING = 0x80000000
|
|
)
|
|
|
|
type _M128A struct {
|
|
Low uint64
|
|
High int64
|
|
}
|
|
|
|
type _XMM_SAVE_AREA32 struct {
|
|
ControlWord uint16
|
|
StatusWord uint16
|
|
TagWord byte
|
|
Reserved1 byte
|
|
ErrorOpcode uint16
|
|
ErrorOffset uint32
|
|
ErrorSelector uint16
|
|
Reserved2 uint16
|
|
DataOffset uint32
|
|
DataSelector uint16
|
|
Reserved3 uint16
|
|
MxCsr uint32
|
|
MxCsr_Mask uint32
|
|
FloatRegisters [8]_M128A
|
|
XmmRegisters [256]byte
|
|
Reserved4 [96]byte
|
|
}
|
|
|
|
type _CONTEXT struct {
|
|
P1Home uint64
|
|
P2Home uint64
|
|
P3Home uint64
|
|
P4Home uint64
|
|
P5Home uint64
|
|
P6Home uint64
|
|
|
|
ContextFlags uint32
|
|
MxCsr uint32
|
|
|
|
SegCs uint16
|
|
SegDs uint16
|
|
SegEs uint16
|
|
SegFs uint16
|
|
SegGs uint16
|
|
SegSs uint16
|
|
EFlags uint32
|
|
|
|
Dr0 uint64
|
|
Dr1 uint64
|
|
Dr2 uint64
|
|
Dr3 uint64
|
|
Dr6 uint64
|
|
Dr7 uint64
|
|
|
|
Rax uint64
|
|
Rcx uint64
|
|
Rdx uint64
|
|
Rbx uint64
|
|
Rsp uint64
|
|
Rbp uint64
|
|
Rsi uint64
|
|
Rdi uint64
|
|
R8 uint64
|
|
R9 uint64
|
|
R10 uint64
|
|
R11 uint64
|
|
R12 uint64
|
|
R13 uint64
|
|
R14 uint64
|
|
R15 uint64
|
|
|
|
Rip uint64
|
|
|
|
FltSave _XMM_SAVE_AREA32
|
|
|
|
VectorRegister [26]_M128A
|
|
VectorControl uint64
|
|
|
|
DebugControl uint64
|
|
LastBranchToRip uint64
|
|
LastBranchFromRip uint64
|
|
LastExceptionToRip uint64
|
|
LastExceptionFromRip uint64
|
|
}
|
|
|
|
// newCONTEXT allocates Windows CONTEXT structure aligned to 16 bytes.
|
|
func newCONTEXT() *_CONTEXT {
|
|
var c *_CONTEXT
|
|
buf := make([]byte, unsafe.Sizeof(*c)+15)
|
|
return (*_CONTEXT)(unsafe.Pointer((uintptr(unsafe.Pointer(&buf[15]))) &^ 15))
|
|
}
|
|
|
|
type _DEBUG_EVENT struct {
|
|
DebugEventCode uint32
|
|
ProcessId uint32
|
|
ThreadId uint32
|
|
_ uint32 // to align Union properly
|
|
U [160]byte
|
|
}
|