我有一个司机&当用户执行任何数量的复杂事物(打开大字文档,一次打开大量文件等)时,似乎行为异常的设备 - 但在重复任何一件事情时都不会出错。我相信这是因为它无法优雅地处理高中断延迟情况。
是否有一种可靠的方法来增加Windows XP上的中断延迟来测试这一理论?
我更喜欢在python中编写我的测试程序,但是c ++& WinAPI也很好......
答案 0 :(得分:1)
我对没有具体答案感到抱歉,但是要探索的想法是使用c ++或cython来挂钩定时器中断(时钟滴答一个)并在那里浪费时间。这将有效地增加延迟。
答案 1 :(得分:0)
我不知道是否有现成的解决方案。但你可以自己创建一个。
在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);