如何增加窗口中断延迟来压力testing驱动程序?

我有一个驱动程序和设备,当用户做了许多复杂的事情(打开大量的文档,一次打开大量的文件等等)时,似乎行为不当,但是当重复一件事情时不会发生错误。 我相信这是因为它不能很好地处理高中断延迟情况。

有没有一种可靠的方法来增加Windows XP上的中断延迟来testing这个理论?

我宁愿写我的testing程序在Python中,但C + +和WinAPI也很好…

我对没有具体的答案表示歉意,但是探索的想法是使用c ++或者cython钩入定时器中断(时钟滴答),并且浪费时间。 这将有效地增加延迟。

我不知道是否有现有的解决方案。 但是你可以创建自己的一个。

在Windows上,所有的中断优先。 因此,如果驱动程序代码在高IRQL上运行,那么如果其级别较低,则您的驱动程序将无法为您的中断服务。 至少它不能在同一个处理器上运行。

我会做以下几点:

  1. 配置你的驱动程序在一个处理器上运行(不记得如何做到这一点,但是这样的选项肯定存在)。
  2. 添加一个I / O控制代码到您的驱动程序。
  3. 在您的驱动程序的Dispatch例程中,请忙于等待高IRQL(稍后会介绍这一点)
  4. 调用你的驱动程序(通过DeviceIoControl )来模拟压力。

忙碌的等待可能看起来像这样:

 KIRQL oldIrql; __int64 t1, t2; KeRaiseIrql(31, &oldIrql); KeQuerySystemTime((LARGE_INTEGER*) &t1); while (1) { KeQuerySystemTime((LARGE_INTEGER*) &t2); if (t1 - t1 > /* put the needed time interval */) break; } KeLowerIrql(oldIrql);