我知道在通过托管语言(如 C#、Java 等)在 Windows 机器上遇到上下文切换时,无法侦听、检测和执行某些操作。但是,我想知道是否有一种方法可以使用汇编(或其他一些语言,也许是 C)?如果是这样,您能否提供一个小代码片段来说明如何执行此操作(因为我对内核编程相对较新)?
这段代码本质上的设计目的是在标准 Windows UI 上的后台运行,并监听特定进程何时进入或退出 CPU 的上下文。在听到这些动作中的任何一个时,它都会发送一个信号。为了澄清,我只想检测直接涉及特定进程的上下文切换,而不是任何上下文切换。我最终想要实现的是能够在特定进程开始使用 CPU 以及停止使用 CPU 时通知另一台机器(通过互联网信号)。
我第一次尝试这样做只是简单地计算特定进程的 CPU 使用百分比,但最终证明这太粗略,无法捕捉到最细微的计算。例如,我编写了一个测试程序,它简单地执行了 2+2 操作并将答案放在一个 int 中。CPU 使用方法没有考虑到这一点。因此,我正在寻找较低级别的东西,因此是这个问题的起源。如果有潜在的替代品,我将非常乐意提供它们。