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


Функция VideoPortAcquireSpinLock (video.h)

Функция VideoPortAcquireSpinLock получает указанную блокировку спина.

Синтаксис

VIDEOPORT_API VOID VideoPortAcquireSpinLock(
  [in, out] PVOID      HwDeviceExtension,
  [in]      PSPIN_LOCK SpinLock,
  [out]     PUCHAR     OldIrql
);

Параметры

[in, out] HwDeviceExtension

Указатель на расширение устройства минипорта драйвера.

[in] SpinLock

Указатель на расположение памяти, содержащее блокировку спина.

[out] OldIrql

Указатель на расположение памяти, которое получит текущий IRQL.

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

Никакой

Замечания

Текущий IRQL сохраняется в OldIrql. Затем текущий IRQL сбрасывается на DISPATCH_LEVEL, а указанная блокировка спина приобретается.

Значение OldIrql необходимо указать при выпуске блокировки спина с VideoPortReleaseSpinLock.

Замки спина могут вызвать серьезные проблемы, если не используется разумно. В частности, защита от взаимоблокировки не выполняется, а диспетчеризация отключена во время блокировки спина. Следовательно:

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows XP и более поздних версиях операционных систем Windows.
целевая платформа Настольный
заголовка video.h (include Video.h)
библиотеки Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

См. также

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock