我有一個驅動程序&當用戶做任何複雜的事情(打開大量的文檔文件,一次打開大量文件,等等)時,似乎行爲不當的設備 - 但是當任何事情發生時都不會出錯重複。我相信這是因爲它不能很好地處理高中斷延遲情況。如何增加Windows中斷延遲來壓力測試驅動程序?
有沒有一種可靠的方法來增加Windows XP上的中斷延遲來測試這個理論?
我寧願用Python語言編寫我的測試programn,但C++ & WinAPI的也很好...
我有一個驅動程序&當用戶做任何複雜的事情(打開大量的文檔文件,一次打開大量文件,等等)時,似乎行爲不當的設備 - 但是當任何事情發生時都不會出錯重複。我相信這是因爲它不能很好地處理高中斷延遲情況。如何增加Windows中斷延遲來壓力測試驅動程序?
有沒有一種可靠的方法來增加Windows XP上的中斷延遲來測試這個理論?
我寧願用Python語言編寫我的測試programn,但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);
這不是我的驅動程序,我沒有它的源代碼! – James
您可以打開驅動程序驗證您的驅動程序,看它是否可以模擬這個問題。 –
在中斷處理例程開始時不會添加延遲是否有用? –
這不是我的司機! (我沒有源代碼) – James