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


Функция ExAcquireFastMutexUnsafe (wdm.h)

Подпрограмма ExAcquireFastMutexUnsafe получает указанный быстрый мьютекс для вызывающего потока.

Синтаксис

void ExAcquireFastMutexUnsafe(
  PFAST_MUTEX FastMutex
);

Параметры

FastMutex

[in, out] Указатель на структуру FAST_MUTEX), для которую вызывающий объект предоставляет хранилище. Вызывающий объект ранее инициализировал эту структуру вызовом подпрограммы ExInitializeFastMutex

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

Никакой

Замечания

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

Любой быстрый мьютекс, полученный вызовом ExAcquireFastMutexUnsafe, должен быть освобожден вызовом процедуры ExReleaseFastMutexUnsafe.

Подпрограммы ExAcquireFastMutex и ExAcquireFastMutexUnsafe вызывают поток блокировки до тех пор, пока не будет доступен мьютекс. Подпрограмма ExTryToAcquireFastMu tex возвращается немедленно с возвращаемым значением FALSE, если другой поток уже приобрел мьютекс. Оба ExAcquireFastMutex и ExTryToAcquireFastMutex вызывают IRQL до APC_LEVEL перед получением быстрого мьютекса. Драйверы должны использовать ExAcquireFastMutexUnsafe, что не вызывает IRQL, только если одно из следующих значений имеет значение true:

  • Поток уже запущен в APC_LEVEL.

  • Поток получает мьютекс в критическом регионе, который ранее был введен вызовом процедуры KeEnterCriticalRegion или FsRtlEnterFileSystem.

Дополнительные сведения о быстрых мьютексах см. в следующих разделах:

быстрые мьютекси и защищенные мьютексы

блокировки, взаимоблокировки и синхронизации

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000
заголовка wdm.h
IRQL APC_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport)

См. также

ExAcquireFastMutex

ExInitializeFastMutex

ExReleaseFastMutexUnsafe

ExTryToAcquireFastMutex

FAST_MUTEX

FsRtlEnterFileSystem

KeEnterCriticalRegion

KeLeaveCriticalRegion