Самоучитель по программированию систем защиты


Многоуровневая модель драйверов - часть 5


• Эксклюзивный - в этом случае ресурс ведет себя как обычный мьютекс - поток, который попытается захватить такой ресурс для эксклюзивного или совместного использования, будет блокирован.

• Совместно используемый - в этом случае ресурс может быть одновременно захвачен для совместного использования любым числом потоков.

Ресурсы идеально подходят для защиты структур данных, которые могут одновременно читаться несколькими потоками, но должны модифицироваться в каждый момент времени только одним потоком.

Для работы с ресурсами существуют функции запроса эксклюзивного доступа, неэксклюзивного доступа и преобразования уже полученного неэксклюзивного доступа в эксклюзивный и, наоборот, без промежуточных операций освобождения ресурса и запроса нового режима доступа. Все функции должны вызываться на уровне IRQL меньшем DISPATCH_LEVEL.

Функции работы с ресурсами:

1) NTSTATUS ExInitializeResourceLite(IN PERESOURCE Resource);

2) VOID ExReinitializeResourceLite(IN PERESOURCE Resource);

3) BOOLEAN ExAcquireResourceExclusiveLite(IN PERESOURCE Resource^ BOOLEAN Wait);

4) BOOLEAN ExTryToAcquireResourceExclusiveLite(IN PERESOURCE Resource);

5) BOOLEAN ExAcquireResourceSharedLite(IN PERESOURCE Resource^ BOOLEAN Wait);

6) BOOLEAN ExAcquireSharedStarveExclusive(IN PERESOURCE Resource^ BOOLEAN Waif);

7) BOOLEAN ExAcquireSharedWaitForExclusive(IN PERESOURCE Resource,®* BOOLEAN Waif);

8) VOID ExConvertExclusiveToSharedLite(IN PERESOURCE Resource);

9) BOOLEAN ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource);

10) USHORT ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource);

11) ULONG ExGetExclusiveWaiterCount(IN PERESOURCE Resource);

12) ULONG ExGetSharedWaiterCount(IN PERESOURCE Resource);

13) NTSTATUS ExDeleteResourceLite(IN PERESOURCE Resource);

14) VOID ExReleaseResourceForThreadLite(IN PERESOURCE Resource;

15) IN ERESOURCEJTHREAD ResourceThreadld).

2.4.5.4. Обобщенная таблица механизмов синхронизации

В таблице 9 представлены механизмы синхронизации и особенности использования каждого из них.




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