Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11, версия 22H2 — обновление драйверов за май 2022 года.
Дополнительные сведения см. в разделе Начало работы сUMDF.
Драйвер может указать, как его функции обратного вызова вызываются платформой. Драйвер задает режим синхронизации (или блокировки) для устройства перед вызовом метода IWDFDriver::CreateDevice для создания объекта устройства для устройства. Чтобы указать режим синхронизации, драйвер должен вызвать метод IWDFDeviceInitialize::SetLockingConstraint . Драйвер получает указатель на интерфейс IWDFDeviceInitialize при вызове метода IDriverEntry::OnDeviceAdd , чтобы добавить устройство в систему.
Драйвер может указать одно из следующих значений из типа перечисления WDF_CALLBACK_CONSTRAINT в параметре LockTypeIWDFDeviceInitialize::SetLockingConstraint , чтобы определить режим блокировки. Указанный тип ограничения (или блокировки) зависит от того, сколько параллелизма аппаратное устройство может использовать и сколько может обрабатывать драйвер.
| Ценность | Значение |
|---|---|
Нет (0) |
Указывает, что функции обратного вызова в драйвер не синхронизированы. |
WdfDeviceLevel (1) |
Указывает, что все функции очереди обратного вызова в драйвере синхронизированы. |
Заметка Если драйвер не вызывает IWDFDeviceInitialize::SetLockingConstraint , чтобы указать значение, платформа задает значение по умолчанию этого свойства wdfDeviceLevel.
Ограничения применяются только к функциям обратного вызова очереди, но не к функциям обратного вызова Plug and Play (PnP) и управления питанием. Функции обратного вызова очереди включают следующие:
Функции автоматического обратного вызова диспетчера, такие как IQueueCallbackRead::OnRead и IQueueCallbackWrite::OnWrite. Для получения дополнительной информации см. функции обратного вызова очереди событий ввода-вывода.
Функции обратного вызова для изменения состояния очереди, такие как IQueueCallbackStateChange::OnStateChange.
Функции обратного вызова для отмены запроса, такие как IRequestCallbackCancel::OnCancel.
Функции очистки и закрытия файлов, такие как IFileCallbackCleanup::OnCleanupFile и IFileCallbackClose::OnCloseFile.
Функции обратного вызова завершения запроса (IRequestCallbackRequestCompletion::OnCompletion) не являются функциями обратного вызова очереди. Поэтому они не синхронизированы.