Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11, версии 22H2 — обновление примеров драйверов от мая 2022 года.
Дополнительные сведения см. в статье "Начало работы с UMDF".
Верхний драйвер UMDF может использовать метод IWDFDeviceInitialize::AutoForwardCreateCleanupClose, чтобы управлять тем, когда платформа автоматически перенаправляет уведомления о создании файла, очистке файла и закрытии файла к следующему нижнему драйверу в стеке устройств. Однако, поскольку верхний драйвер задает AutoForwardCreateCleanupClose автоматически переадресацию только на уровне устройства, а не на уровне каждого файла, переадресация должна быть одинаковой для всех файлов для устройства. Платформа обеспечивает это поведение пересылки для уведомлений о очистке файла и закрытии файлов. Если верхний драйвер реализует функцию обратного вызова IQueueCallbackCreate::OnCreateFile , необходимо убедиться, что ее поведение пересылки одинаково для всех запросов на создание файла и соответствует поведению пересылки для уведомлений о очистке файла и закрытии файлов. Если этого не сделать, это может привести к тому, что низкоуровневые драйверы получат неравное количество вызовов метода IQueueCallbackCreate::OnCreateFile и методов IFileCallbackCleanup::OnCleanupFile и IFileCallbackClose::OnCloseFile.
Чтобы нижние драйверы не получали неравномерное количество уведомлений о создании и закрытии файлов, верхний драйвер должен гарантированно обеспечить это в функции обратного вызова IQueueCallbackCreate::OnCreateFile.
Его поведение пересылки одинаково для всех файлов устройства.
Его поведение при пересылке согласуется с тем, как установлен параметр флага IWDFDeviceInitialize::AutoForwardCreateCleanupClose. То есть:
- Если драйвер задал флаг WdfTrue, драйвер должен перенаправлять все запросы на создание файла вниз стека устройств.
- Если драйвер задал флаг WdfFalse, драйвер не должен пересылать запросы на создание файла вниз стека.
- Если драйвер задал флаг WdfUseDefault и:
- Если драйвер является драйвером функции, он не должен пересылать запросы на создание файла вниз стека.
- Если драйвер является драйвером фильтра, он должен пересылать все запросы на создание файла вниз стека.
В ситуациях, когда драйвер не может пересылать запрос на создание файла, драйвер по-прежнему может создать новый запрос файла создания для более низких драйверов, вызвав метод IWDFDevice::CreateWdfFile для создания нового WDF-файла. Затем драйвер может завершить исходный запрос на создание файла на основе результатов только что созданного запроса на создание файла (т. е. из результатов CreateWdfFile).