mirror of
https://github.com/shirou/gopsutil.git
synced 2025-05-04 22:17:34 +08:00
Merge pull request #1712 from al-online/numfds_for_windows
implement process:NumFDs for Windows
This commit is contained in:
commit
fdc3c05c92
@ -43,6 +43,7 @@ var (
|
|||||||
procGetPriorityClass = common.Modkernel32.NewProc("GetPriorityClass")
|
procGetPriorityClass = common.Modkernel32.NewProc("GetPriorityClass")
|
||||||
procGetProcessIoCounters = common.Modkernel32.NewProc("GetProcessIoCounters")
|
procGetProcessIoCounters = common.Modkernel32.NewProc("GetProcessIoCounters")
|
||||||
procGetNativeSystemInfo = common.Modkernel32.NewProc("GetNativeSystemInfo")
|
procGetNativeSystemInfo = common.Modkernel32.NewProc("GetNativeSystemInfo")
|
||||||
|
procGetProcessHandleCount = common.Modkernel32.NewProc("GetProcessHandleCount")
|
||||||
|
|
||||||
processorArchitecture uint
|
processorArchitecture uint
|
||||||
)
|
)
|
||||||
@ -548,8 +549,21 @@ func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitche
|
|||||||
return nil, common.ErrNotImplementedError
|
return nil, common.ErrNotImplementedError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NumFDsWithContext returns the number of handles for a process on Windows,
|
||||||
|
// not the number of file descriptors (FDs).
|
||||||
func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) {
|
func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) {
|
||||||
return 0, common.ErrNotImplementedError
|
handle, err := windows.OpenProcess(processQueryInformation, false, uint32(p.Pid))
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
defer windows.CloseHandle(handle)
|
||||||
|
|
||||||
|
var handleCount uint32
|
||||||
|
ret, _, err := procGetProcessHandleCount.Call(uintptr(handle), uintptr(unsafe.Pointer(&handleCount)))
|
||||||
|
if ret == 0 {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return int32(handleCount), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) {
|
func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user