Программирование драйверов Windows


Мьютексы - часть 4


Перед использованием функций ExAcquireFastMutex и ExReleaseFastMutex

следует выполнить инициализацию объекта быстрого мьютекса вызовом ExInitializeFastMutex, см. таблицу 10.38. И хотя память под структуру объекта выделяет инициатор этого вызова, как и в ранее описанных случаях для других объектов синхронизации, непосредственно обращаться к полям этого объекта не следует &#8212 необходимо пользоваться только вызовами, предлагаемыми в DDK.

Таблица 10.38. Прототип вызова ExInitializeFastMutex

VOID ExInitializeFastMutex IRQL &#60= DISPATCH_LEVEL
Параметры Инициализирует объект быстрого мьютекса
IN PFAST_MUTEX pFastMutex Указатель на место в нестраничной памяти, подготовленное инициатором данного вызова для объекта быстрого мьютекса
Возвращаемое значение void

В случае если запрос на владение вызовом ExAcquireFastMutex

удовлетворен быть не может (у объекта быстрого мьютекса уже есть владельцы), поток блокируется до наступления сигнального состояния. Блокируется также и процедура APC, адресованная данному программному потоку. При успешном завершении вызова поток инициатора вызова выполняется на уровне IRQL равном APC_LEVEL, а прежнее значение сохраняется в объекте быстрого мьютекса (оно будет восстановлено при освобождении объекта быстрого мьютекса вызовом ExReleaseFastMutex).

Таблица 10.39. Прототип вызова ExAcquireFastMutex

VOID ExAcquireFastMutex IRQL &#60 DISPATCH_LEVEL
Параметры Запрашивает владение объектом быстрого мьютекса
IN PFAST_MUTEX pFastMutex Указатель на объект быстрого мьютекса
Возвращаемое значение void

Таблица 10.40. Прототип вызова ExAcquireFastMutexUnsafe

VOID ExAcquireFastMutexUnsafe IRQL == APC_LEVEL
Параметры Запрашивает владение объектом быстрого мьютекса
IN PFAST_MUTEX pFastMutex Указатель на объект быстрого мьютекса
Возвращаемое значение void

В случае если запрос на владение вызовом ExAcquireFastMutexUnsafe

удовлетворен быть не может, поток блокируется до наступления сигнального состояния, однако, процедура APC, адресованная данному программному потоку, не блокируется.


Начало  Назад  Вперед



Книжный магазин