我有一个驱动程序和设备,当用户做了许多复杂的事情(打开大量的文档,一次打开大量的文件等等)时,似乎行为不当,但是当重复一件事情时不会发生错误。 我相信这是因为它不能很好地处理高中断延迟情况。
有没有一种可靠的方法来增加Windows XP上的中断延迟来testing这个理论?
我宁愿写我的testing程序在Python中,但C + +和WinAPI也很好…
我对没有具体的答案表示歉意,但是探索的想法是使用c ++或者cython钩入定时器中断(时钟滴答),并且浪费时间。 这将有效地增加延迟。
我不知道是否有现有的解决方案。 但是你可以创建自己的一个。
在Windows上,所有的中断优先。 因此,如果驱动程序代码在高IRQL上运行,那么如果其级别较低,则您的驱动程序将无法为您的中断服务。 至少它不能在同一个处理器上运行。
我会做以下几点:
Dispatch
例程中,请忙于等待高IRQL(稍后会介绍这一点) 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);