Функция WdfSpinLockCreate (wdfsync.h)
[Применимо к KMDF и UMDF]
Метод WdfSpinLockCreate создает объект spin-lock платформы.
Синтаксис
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
Параметры
[in, optional] SpinLockAttributes
Указатель на структуру, выделенную вызывающим объектом WDF_OBJECT_ATTRIBUTES , которая задает атрибуты для объекта spin-lock. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[out] SpinLock
Указатель на расположение, которое получает дескриптор нового объекта спин-блокировки платформы.
Возвращаемое значение
WdfSpinLockCreate возвращает STATUS_SUCCESS, если операция выполнена успешно.
Список других возвращаемых значений, которые может возвращать метод WdfSpinLockCreate , см. в разделе Ошибки создания объектов платформы.
Этот метод также может возвращать другие значения NTSTATUS.
Комментарии
Метод WdfSpinLockCreate создает объект spin-lock платформы. После создания объекта spin-lock драйвер может вызвать WdfSpinLockAcquire , чтобы получить блокировку, и WdfSpinLockRelease , чтобы освободить блокировку.
По умолчанию родительским объектом нового объекта spin-lock является объект драйвера платформы, созданный методом WdfDriverCreate . Для указания другого родительского элемента можно использовать элемент ParentObjectструктуры WDF_OBJECT_ATTRIBUTES . Платформа удаляет объект spin-lock при удалении родительского объекта. Если драйвер не изменяет родительский объект по умолчанию, драйвер должен удалить объект spin-lock после завершения работы с объектом . В противном случае объект останется до тех пор, пока диспетчер ввода-вывода не выгрузит драйвер.
Дополнительные сведения о спин-блокировках см. в статье Методы синхронизации для драйверов Framework-Based.
Примеры
В следующем примере кода инициализируется WDF_OBJECT_ATTRIBUTES, указывает, что родительский объект spin lock будет объектом устройства, и вызывает WdfSpinLockCreate.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&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), WdfSpinlock(kmdf) |