Поделиться через


макрос NDIS_WAIT_FOR_MUTEX (ndis.h)

Макрос NDIS_WAIT_FOR_MUTEX переводит текущий поток в состояние ожидания до тех пор, пока указанный объект мьютекса не перейдет в состояние сигнала.

Синтаксис

void NDIS_WAIT_FOR_MUTEX(
   _M_
);

Параметры

_M_

Указатель на инициализированный объект мьютекса типа NDIS_MUTEX. Вызывающий объект инициализировал объект мьютекса в предварительном вызове макроса NDIS_INIT_MUTEX . NDIS_MUTEX является оболочкой для типа KMUTEX.

Возвращаемое значение

NDIS_WAIT_FOR_MUTEX возвращает STATUS_SUCCESS, если операция успешно завершена. В противном случае возвращается соответствующий код ошибки NTSTATUS.

Комментарии

Сетевые драйверы NDIS должны использовать макрос NDIS_WAIT_FOR_MUTEX для ожидания перехода мьютекса в состояние сигнала.

Драйвер не может ждать ненулевого интервала времени для объекта мьютекса в вызванном IRQL или в произвольном контексте потока (то есть контекст любого потока, текущего при вызове функции драйвера).

NDIS_WAIT_FOR_MUTEX проверяет текущее состояние объекта мьютекса, чтобы определить, может ли операция ожидания быть выполнена немедленно. Если операция может быть выполнена немедленно, в объект мьютекса вносятся необходимые обновления. В противном случае текущий поток находится в состоянии ожидания, а для выполнения на текущем процессоре выбирается новый поток.

Этот макрос является оболочкой NDIS для подпрограммы KeWaitForSingleObject .

Вызывающие NDIS_WAIT_FOR_MUTEX должны выполняться в IRQL == PASSIVE_LEVEL и в контексте неарбитарных потоков.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
Правила соответствия DDI Irql_Synch_Function(ndis)

См. также раздел

KeWaitForSingleObject

NDIS_INIT_MUTEX

NDIS_RELEASE_MUTEX