diff --git a/Gopkg.lock b/Gopkg.lock index 0cc758c..1edfb52 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -37,14 +37,6 @@ version = "v1.0.0" [[projects]] - branch = "master" - digest = "1:99c6a6dab47067c9b898e8c8b13d130c6ab4ffbcc4b7cc6236c2cd0b1e344f5b" - name = "github.com/shirou/w32" - packages = ["."] - pruneopts = "UT" - revision = "bb4de0191aa41b5507caa14b0650cdbddcd9280b" - -[[projects]] digest = "1:5da8ce674952566deae4dbc23d07c85caafc6cfa815b0b3e03e41979cedb8750" name = "github.com/stretchr/testify" packages = [ @@ -57,7 +49,7 @@ [[projects]] branch = "master" - digest = "1:4d36bc09c4ad87e371dce781b6bec6164de89e4e32fda093f780fcafc69bfee8" + digest = "1:d6ee10ad98c51535647d18a5f327e7e13c863e14ac4044cf7fcaedf570e17341" name = "golang.org/x/sys" packages = [ "unix", @@ -66,14 +58,13 @@ "windows/svc/mgr", ] pruneopts = "UT" - revision = "fc99dfbffb4e5ed5758a37e31dd861afe285406b" + revision = "d32e6e3b99c40f2bfaea45ea9596ed539eed1c0d" [solve-meta] analyzer-name = "dep" analyzer-version = 1 input-imports = [ "github.com/StackExchange/wmi", - "github.com/shirou/w32", "github.com/stretchr/testify/assert", "github.com/stretchr/testify/require", "golang.org/x/sys/unix", diff --git a/Gopkg.toml b/Gopkg.toml index c53eeac..bf57845 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -30,10 +30,6 @@ version = "1.0.0" [[constraint]] - branch = "master" - name = "github.com/shirou/w32" - -[[constraint]] name = "github.com/stretchr/testify" version = "1.2.2" diff --git a/process/process_windows.go b/process/process_windows.go index d42b34f..ad23726 100644 --- a/process/process_windows.go +++ b/process/process_windows.go @@ -15,7 +15,6 @@ import ( cpu "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/internal/common" net "github.com/shirou/gopsutil/net" - "github.com/shirou/w32" "golang.org/x/sys/windows" ) @@ -160,8 +159,8 @@ func pidsWithContext(ctx context.Context) ([]int32, error) { for { ps := make([]uint32, psSize) - if !w32.EnumProcesses(ps, uint32(len(ps)), &read) { - return nil, fmt.Errorf("could not get w32.EnumProcesses") + if err := windows.EnumProcesses(ps, &read); err != nil { + return nil, err } if uint32(len(ps)) == read { // ps buffer was too small to host every results, retry with a bigger one psSize += 1024 @@ -599,24 +598,24 @@ func (p *Process) Children() ([]*Process, error) { func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { out := []*Process{} - snap := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPPROCESS, uint32(0)) - if snap == 0 { - return out, windows.GetLastError() + snap, err := windows.CreateToolhelp32Snapshot(windows.TH32CS_SNAPPROCESS, uint32(0)) + if err != nil { + return out, err } - defer w32.CloseHandle(snap) - var pe32 w32.PROCESSENTRY32 - pe32.DwSize = uint32(unsafe.Sizeof(pe32)) - if !w32.Process32First(snap, &pe32) { - return out, windows.GetLastError() + defer windows.CloseHandle(snap) + var pe32 windows.ProcessEntry32 + pe32.Size = uint32(unsafe.Sizeof(pe32)) + if err := windows.Process32First(snap, &pe32); err != nil { + return out, err } for { - if pe32.Th32ParentProcessID == uint32(p.Pid) { - p, err := NewProcess(int32(pe32.Th32ProcessID)) + if pe32.ParentProcessID == uint32(p.Pid) { + p, err := NewProcess(int32(pe32.ProcessID)) if err == nil { out = append(out, p) } } - if !w32.Process32Next(snap, &pe32) { + if err = windows.Process32Next(snap, &pe32); err != nil { break } } @@ -692,16 +691,13 @@ func (p *Process) Terminate() error { } func (p *Process) TerminateWithContext(ctx context.Context) error { - // PROCESS_TERMINATE = 0x0001 - proc := w32.OpenProcess(0x0001, false, uint32(p.Pid)) - ret := w32.TerminateProcess(proc, 0) - w32.CloseHandle(proc) - - if ret == false { - return windows.GetLastError() - } else { - return nil + proc, err := windows.OpenProcess(windows.PROCESS_TERMINATE, false, uint32(p.Pid)) + if err != nil { + return err } + err = windows.TerminateProcess(proc, 0) + windows.CloseHandle(proc) + return err } func (p *Process) Kill() error { @@ -714,22 +710,22 @@ func (p *Process) KillWithContext(ctx context.Context) error { } func getFromSnapProcess(pid int32) (int32, int32, string, error) { - snap := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPPROCESS, uint32(pid)) - if snap == 0 { - return 0, 0, "", windows.GetLastError() + snap, err := windows.CreateToolhelp32Snapshot(windows.TH32CS_SNAPPROCESS, uint32(pid)) + if err != nil { + return 0, 0, "", err } - defer w32.CloseHandle(snap) - var pe32 w32.PROCESSENTRY32 - pe32.DwSize = uint32(unsafe.Sizeof(pe32)) - if !w32.Process32First(snap, &pe32) { - return 0, 0, "", windows.GetLastError() + defer windows.CloseHandle(snap) + var pe32 windows.ProcessEntry32 + pe32.Size = uint32(unsafe.Sizeof(pe32)) + if err = windows.Process32First(snap, &pe32); err != nil { + return 0, 0, "", err } for { - if pe32.Th32ProcessID == uint32(pid) { - szexe := windows.UTF16ToString(pe32.SzExeFile[:]) - return int32(pe32.Th32ParentProcessID), int32(pe32.CntThreads), szexe, nil + if pe32.ProcessID == uint32(pid) { + szexe := windows.UTF16ToString(pe32.ExeFile[:]) + return int32(pe32.ParentProcessID), int32(pe32.Threads), szexe, nil } - if !w32.Process32Next(snap, &pe32) { + if err = windows.Process32Next(snap, &pe32); err != nil { break } }