NTSTATUS __stdcall NtDelayExecution(UINT8 Alertable, _LARGE_INTEGER *DelayInterval){
char PreviousMode;
NTSTATUS result;
_LARGE_INTEGER Interval;
PreviousMode = KeGetCurrentThread()->PreviousMode;
if( PreviousMode )
{
if( ((unsigned __int8)DelayInterval & 3) != 0 )
ExRaiseDatatypeMisalignment();
Interval = *DelayInterval;
}
else
{
Interval = *DelayInterval;
}
KeDelayExecutionThread(PreviousMode, Alertable, &Interval);
return result;
}