KeSetTimer() -- Detection of timeout at dispatch Level

Hi all,

I wrote a some code to detection timeout using KeSetTimer as following:

KTIMER kTimer;

KeInitializeTimer( &kTimer );

BOOL CheckTimeout( LARGE_INTEGER DueTime )

{

KeSetTimer( &m_kTestTimer, DueTime, NULL );

while ( ! HardwareIsReady() )

{

if ( TRUE == KeReadStateTimer( &m_kTestTimer ) )

{

Status = CS_HARDWARE_TIMEOUT; // tineout !!!

return TRUE;

}

}

KeCancelTimer( &m_kTestTimer );

return FALSE;

}

These code work fine at PASSIVE_LEVEL. (ie I’ve got the timeout error )

I use the same code at DISPATCH_LEVEL and I get stucked in while() loop.

It looks like the timer object never get signaled.

What I have done wrong ???

If it is the case how can I detect timeout at DPC level

Thanks for helps,

QUANG