Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как диспетчер драйверов создает стек устройств в пользовательском режиме и как основной процесс, отражатель и диспетчер драйверов обрабатывают запрос ввода-вывода, который приложение отправляет в драйвер driver User-Mode Driver Framework (UMDF).
Как и в стеке режима ядра, создание и удаление стека пользовательского режима управляется событиями Plug and Play (PnP). После создания стека режима ядра отражатель уведомляет диспетчера драйверов о начале создания стека пользовательского режима. Диспетчер драйверов запускает процесс драйверного хоста и предоставляет достаточную информацию запускаемому процессу для создания стека пользовательского режима. Таким образом, стек пользовательского режима можно считать расширением стека режима ядра.
Процесс узла драйвера предоставляет среду выполнения для драйверов в пользовательском режиме и направляет сообщения между драйверами в стеке пользовательского режима. Рефлектор использует механизм межпроцессного взаимодействия на основе сообщений для связи с диспетчером драйверов и хост-процессом.
Чтобы отправить запрос ввода-вывода драйверу UMDF, приложение вызывает функцию ввода-вывода Win32-файла, например CreateFile, ReadFileEx, CancelIoEx или DeviceIoControl. Когда рефлектор получает запрос от клиентского приложения, он отправляет запрос в соответствующий процесс узла драйвера. Затем драйверный хост-процесс направляет запрос в верхнюю часть соответствующего стека устройств в пользовательском режиме.
Запрос выполняется одним из драйверов в стеке пользовательского режима или пересылается одним из драйверов обратно в отражатель. Когда отражатель получает запрос из стека драйверов пользовательского режима, он отправляет запрос вниз стека режима ядра для завершения.