VOID
NdisStallExecution(
IN UINT MicrosecondsToStall
);
NdisStallExecution stalls the caller on the current processor for a given interval.
For the given MicrosecondsToStall, the caller’s thread of execution stalls on the current processor, consuming CPU cycles. When the given interval expires, the caller resumes execution.
Unless a driver is running at IRQL >= DISPATCH_LEVEL, it should call NdisMSleep, which accepts larger delay intervals without monopolizing a processor for its callers, instead of NdisStallExecution. For example, a NIC driver’s MiniportInitialize function should wait for state changes in the NIC with NdisMSleep.
Both NdisMSleep and NdisStallExecution allow a NIC driver to specify a delay consistently and independently of the clock speed of the host CPU. Neither function involves a timer object used by NdisSet(Periodic)Timer. The resolution of the host system clock varies, so very short delays can take slightly longer than the caller of NdisMSleep or NdisStallExecution specified.
A call to NdisStallExecution prevents any other operating system activity on the current processor and prevents system interrupts from occurring during the stall. Therefore, callers should always specify a stall interval of no longer than 50 microseconds.
Callers of NdisStallExecution can run at any IRQL.