Функция NdisMSleep (ndis.h)
Функция NdisMSleep задерживает выполнение вызывающего объекта для заданного интервала в микросекундах.
Синтаксис
void NdisMSleep(
[in] ULONG MicrosecondsToSleep
);
Параметры
[in] MicrosecondsToSleep
Число микросекунд для задержки.
Возвращаемое значение
Никакой
Замечания
В течение заданного времени в параметре MicrosecondsToSleep поток выполнения вызывающего объекта помещается в состояние ожидания, тем самым позволяя другим потокам выполняться на текущем процессоре. По истечении заданного интервала вызывающий объект NdisMSleep возобновляет выполнение.
Драйвер NDIS всегда должен вызывать NdisMSleep в предпочтении функции NdisStallExecution, если драйвер не запущен в IRQL >= DISPATCH_LEVEL. NdisMSleep может принимать более большой интервал задержки, чем NdisStallExecution, который никогд а не вызываться с интервалом больше 50 микросекунд. Не вызывайте NdisMSleep с временем ожидания более 30 000 000 микросекунд (то есть 30 секунд или полминуты).
Драйверы минипорта могут вызывать NdisMSleep из MiniportInitializeEx и, возможно, MiniportHaltEx функции, когда любая функция должна ожидать изменения состояния в сетевой адаптере, прежде чем эта функция продолжит свою работу.
Оба NdisMSleep и NdisStallExecution позволяют мини-драйверу задать задержку последовательно и независимо от скорости ЦП узла. Ни функция не включает объект таймера, например те, которые используются функцией NdisSetTimerObject. Разрешение часов системы узла меняется, поэтому очень короткие задержки могут занять немного больше времени задержки, указанного вызывающим NdisMSleep или NdisStallExecution.