2011-08-24 38 views
3

我有一個驅動程序&當用戶做任何複雜的事情(打開大量的文檔文件,一次打開大量文件,等等)時,似乎行爲不當的設備 - 但是當任何事情發生時都不會出錯重複。我相信這是因爲它不能很好地處理高中斷延遲情況。如何增加Windows中斷延遲來壓力測試驅動程序?

有沒有一種可靠的方法來增加Windows XP上的中斷延遲來測試這個理論?

我寧願用Python語言編寫我的測試programn,但C++ & WinAPI的也很好...

+0

您可以打開驅動程序驗證您的驅動程序,看它是否可以模擬這個問題。 –

+0

在中斷處理例程開始時不會添加延遲是否有用? –

+0

這不是我的司機! (我沒有源代碼) – James

回答

1

我因沒有具體的答案,但一個想法探索是使用無論是C++道歉或者cython鉤入定時器中斷(時鐘滴答一次)並且浪費時間。這將有效增加延遲。

0

我不知道是否有現有的解決方案。但是你可以創建你自己的一個。

在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); 
+0

這不是我的驅動程序,我沒有它的源代碼! – James