Skip to content

Commit

Permalink
Merge pull request #1712 from al-online/numfds_for_windows
Browse files Browse the repository at this point in the history
implement process:NumFDs for Windows
  • Loading branch information
shirou authored Sep 24, 2024
2 parents 6c06ac9 + 462736c commit fdc3c05
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion process/process_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ var (
procGetPriorityClass = common.Modkernel32.NewProc("GetPriorityClass")
procGetProcessIoCounters = common.Modkernel32.NewProc("GetProcessIoCounters")
procGetNativeSystemInfo = common.Modkernel32.NewProc("GetNativeSystemInfo")
procGetProcessHandleCount = common.Modkernel32.NewProc("GetProcessHandleCount")

processorArchitecture uint
)
Expand Down Expand Up @@ -548,8 +549,21 @@ func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitche
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) {
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) {
Expand Down

0 comments on commit fdc3c05

Please sign in to comment.