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


Функция WdfWaitLockCreate (wdfsync.h)

[Применимо к KMDF и UMDF]

Метод WdfWaitLockCreate создает объект framework wait-lock.

Синтаксис

NTSTATUS WdfWaitLockCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LockAttributes,
  [out]          WDFWAITLOCK            *Lock
);

Параметры

[in, optional] LockAttributes

Указатель на структуру, выделенную вызывающим объектом WDF_OBJECT_ATTRIBUTES , которая задает атрибуты для объекта wait-lock. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.

[out] Lock

Указатель на расположение, которое получает дескриптор нового объекта платформы wait-lock.

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

WdfWaitLockCreate возвращает STATUS_SUCCESS, если операция выполнена успешно.

Список других возвращаемых значений, которые может возвращать метод WdfWaitLockCreate , см. в разделе Ошибки создания объекта платформы.

Этот метод также может возвращать другие значения NTSTATUS.

Комментарии

Метод WdfWaitLockCreate создает объект framework wait-lock. После создания объекта wait-lock драйвер может вызвать WdfWaitLockAcquire , чтобы получить блокировку, и WdfWaitLockRelease , чтобы освободить блокировку.

По умолчанию родительским объектом нового объекта wait-lock является объект драйвера платформы, созданный методом WdfDriverCreate . Для указания другого родительского элемента можно использовать элемент ParentObjectструктуры WDF_OBJECT_ATTRIBUTES . Платформа удаляет объект wait-lock при удалении родительского объекта. Если драйвер не изменяет родительский объект по умолчанию, драйвер должен удалить объект wait-lock после завершения работы с объектом . В противном случае объект останется до тех пор, пока диспетчер ввода-вывода не выгрузит драйвер.

Дополнительные сведения о блокировках ожидания см. в статье Методы синхронизации для драйверов Framework-Based.

Примеры

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

WDF_OBJECT_ATTRIBUTES attributes;
WDFWAITLOCK lockHandle;

WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfWaitLockCreate(
                           &attributes,
                           &lockHandle
                           );

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfsync.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf)

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

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfWaitLockAcquire

WdfWaitLockRelease