Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Многие драйверы создают несколько типов объектов устройства путем вызова IoCreateDevice. Некоторые драйверы создают объекты устройств управления в своих подпрограммах DriverEntry , чтобы приложения могли взаимодействовать с драйвером, даже прежде чем драйвер создает FDO. Например, драйверы файловой системы создают объекты устройств для обработки уведомлений файловой системы при регистрации в качестве файловых систем в IoRegisterFileSystem.
Драйвер должен быть готов к IRP_MJ_CREATE запросам для любого объекта устройства, который он создает. После завершения запроса с состоянием успешного выполнения драйвер должен ожидать получения всех запросов ввода-вывода, доступных для пользователей, в созданном объекте файла. Следовательно, любой драйвер, создающий несколько объектов устройства, должен проверять, какой объект устройства указывает каждый запрос ввода-вывода.
Например, предположим, что драйвер создает общие объекты устройства управления в DriverEntry, а затем создает другой набор объектов устройств в подпрограмме AddDevice . Предположим, что подпрограмма AddDevice инициализирует расширение устройства с информацией о драйверах нижнего уровня, но объекты устройства управления не содержат эти сведения. В этом случае все подпрограммы отправки должны тщательно проверять каждый объект устройства, который они получают. В противном случае драйвер может дать сбой при попытке использовать сведения о расширении устройства.