Знакомство с windows nt и драйверами устройств хранения

Иерархия драйверов систем хранения и типы драйверов : Наик Дайлип : arhoslifi.tk

знакомство с windows nt и драйверами устройств хранения

Поддерживаются Windows и Windows Server Знакомство с windows nt и драйверами устройств хранения данных · режимы ядра и. В контексте выполняемого модуля Windows NT все драйверы имеют В этом разделе представлен обзор стека драйверов устройств хранения Windows NT. Знакомство с windows nt и драйверами устройств хранения данных. дерево устройств windows nt для устройств хранения данных Знакомство с объектной моделью дерева устройств упрощает В частности , перечисление устройств начинается с драйвера виртуальной (корневой) шины.

Просмотреть и отредактировать изображения с помощью встроенных средств Windows Vista. Откройте папку, содержащую цифровые изображения. Это может быть папка с вашими Практическая работа Работа со сменными носителями Из книги автора Практическая работа Работа со сменными носителями Задание 1. Скопировать файлы и папки на flash-диск. Подключите к компьютеру устройство flash-памяти.

При этом обратите внимание на размещение выступов на разъеме и самом устройстве, чтобы Практическая работа Работа с папками Избранное и Журнал Из книги автора Практическая работа Работа с папками Избранное и Журнал Задание 1. Научиться выполнять поиск в Интернете, настраивать параметры поиска, работать с папками Избранное и Журнал.

Щелкните кнопкой мыши Практическая работа Работа с файловым менеджером Из книги автора Практическая работа Работа с файловым менеджером Задание 1. Установить и настроить программу Total Commander. Загрузите последнюю версию Total Commander с сайта wincmd.

Запустите загруженный файл и установите программу, ответив на несколько простых Практическая работа Работа с проигрывателем Windows Media Из книги автора Практическая работа Работа с проигрывателем Windows Media Задание 1. Изучить средства управления воспроизведением проигрывателя Windows Media. Откройте для воспроизведения с помощью проигрывателя любой музыкальный файл, например из папки Практическая работа Из книги автора Практическая работа Откройте ранее сохраненный документ Урок 1 любым способом.

Выделите слово, предложение, строку, абзац, весь документ. Работа с объектами базы данных Из книги автора Практическая работа Работа с объектами базы данных Задание. Ознакомиться с окном программы Access. Процедуры обслуживания прерываний рассматриваются в разделе 1.

Отложенный вызов процедуры рассматривается в разделе 1. Поскольку вся операция ввода-вывода обрабатывается в качестве асинхронной, процедура завершения используется довольно часто, особенно в высокоуровневых драйверах, которые всегда обеспечивают обработку пакетов IRP более низкого уровня.

Обработка пакета запроса ввода-вывода совершается драйвером различными способами, в зависимости от структуры драйвера и запроса ввода-вы- вода в пакете.

Ниже приведены некоторые примеры работы драйвера. Например, в ответ на запрос об открытии файла, поступивший от драйвера NTFS, драйверу может потребоваться считать метаданные файла для поиска каталога и подкаталогов, в которых расположен необходимый файл.

Обычно драйверы получают доступ к своей области стека в пакете IRP, а также к области стека следующего драйвера. Самый нижний драйвер в цепочке стека получает доступ только к своему фрагменту стека в пакете IRP.

Драйвер отвечает за изменение указателя в пакете IRP, который указывает на область стека, используемую следующим драйвером. Обратите внимание, что один и тот же код драйвера может одновременно выполняться на разных центральных процессорах в одной системе Windows NT. Код драйвера должен обладать возможностью синхронизировать доступ к критическим данным кода, выполняемого на разных процессорах. Иногда повторное выполнение одного запроса может стать просто катастрофой, например при записи на магнитную ленту одних и тех же данных повторно.

Процедура обслуживания прерывания должна использовать минимальное количество операций, чтобы центральный процессор имел свободные ресурсы для обслуживания других прерываний. Эта процедура собирает минимум необходимой информации и размещает в очереди вызов отложенной обработки deffered processing call — DPC для завершения обслуживания прерывания. Запуск вызова отложенной обработки не планируется на определенное время, то есть вызов может быть запущен как немедленно, так и немного позднее, в зависимости от необходимости в другой обработке.

Для того чтобы обеспечить постоянную доступность процедуры обслуживания прерывания, процедуры никогда не выгружаются на жесткий диск. Процедура обслуживания прерывания может быть прервана процедурой обслуживания прерывания с более высоким приоритетом, но ее никогда нельзя вытеснить другим кодом, например вызовом отложенной обработки.

Процедура обслуживания прерывания обычно необходима драйверам, которые работают с аппаратным обеспечением, например с накопителем на магнитной ленте или жестким диском. Чаще всего, драйверы, которые обеспечивают работу некоторых программных функций, например драйверы файловой системы или фильтрации, не используют процедуру обслуживания прерывания.

Таким образом, процедура обслуживания прерывания проводит минимум операций и размещает в очереди запрос на вызов отложенной обработки, который используется для завершения оставшихся операций с низким уровнем приоритета эти уровни обычно называются IRQ или IRQL. Вызов отложенной обработки может быть размещен в очереди не только из процедуры обработки прерывания.

Запрос к очереди создает новый объект вызова отложенной обработки средствами диспетчера объектов. После размещения в очереди создается аппаратный запрос на прерывание IRQ level 2 для вызова отложенной обработки. Ниже описаны некоторые важные свойства вызова отложенной обработки.

Вызов отложенной обработки может быть прерван другой процедурой обработки прерывания, однако никогда не может быть вытеснен кодом пользовательского режима. Вызов отложенной обработки не должен приводить к ошибке обращения к странице, поэтому вся память, используемая вызовом отложенной обработки, должна быть заблокирована для выгрузки. Вызов отложенной обработки не должен выполнять блокирующие действия, например блокирующий ввод-вывод.

Вызов отложенной обработки напоминает процедуру обработки прерывания, поскольку также должен выполняться быстро и эффективно. Для минимизации нагрузки на систему при планировании вызовов отложенной обработки Windows NT перед передачей управления DPC сохраняет минимальную информацию о состоянии. После завершения DPC восстановление состояния также занимает мало времени, так как при передаче управления сохранялся минимум информации. В результате DPC может выполняться в контексте произвольного процесса.

Например, если программа Excel выполняется в виде процесса и запускает процедуру ввода-вывода, вызов отложенной обработки если он потребуется может запускаться в контексте процессов Word или PowerPoint а не обязательно в контексте процесса Excel.

Каждый процесс имеет собственную очередь вызовов отложенной обработки. Таким образом, многопроцессорный компьютер с четырьмя центральными процессорами будет иметь четыре отдельных очереди DPC. Вызов отложенной обработки может иметь высокий, средний и низкий приоритет; по умолчанию присваивается средний приоритет. Драйвер может изменить значение приоритета. Вызов отложенной обработки с высоким приоритетом размещается в начало очереди, a DPC с низким и средним приоритетом — в конец очереди.

Обычно вызов отложенной обработки выполняется на том же процессоре, что и процедура обслуживания прерывания, что можно изменить с помощью драйвера.

При выполнении DPC выясняется, существует ли несколько рабочих элементов, например, при многократной обработке прерываний, когда каждое прерывание требует наличия отдельного рабочего элемента. Вызов отложенной обработки может быть размещен в очереди другого процессора, если очередь DPC текущего процессора превышает определенное значение.

Ядро Windows NT периодически пытается выполнить вызов отложенной обработки, генерируя программные прерывания. Вызов отложенной обработки не может быть выгружен на диск.

Как и вызов отложенной обработки, АРС выполняется на уровне привилегий, превышающем уровень привилегий обычного кода. В отличие от вызова отложенной обработки, выполняемого в контексте произвольного процесса, асинхронный вызов процедуры всегда выполняется в контексте определенного процесса. Таким образом, асинхронный вызов процедуры требует больших затрат, чем вызов отложенной обработки, так как приходится сохранять и восстанавливать большее количество параметров.

Существует два типа АРС: Асинхронный вызов процедуры в режиме ядра связан с драйвером или другим кодом режима ядра и обычно используется для передачи данных, например для копирования данных из буфера ядра в пользовательский буфер. Помните, что пользовательский буфер должен быть доступен в контексте процесса, который владеет буфером. Код пользовательского режима тоже может использовать асинхронный вызов процедур. Асинхронные вызовы процедур в пользовательском режиме предоставляются только тогда, когда поток получает предупреждение, например при блокировании в результате вызова функций WaitForSingleObject или WaitForMultipleObject.

Подробная информация об этих функциях доступна в документации Platform SDK. Достаточно сказать, что эти функции позволяют организовать синхронизацию потоков. Асинхронный вызов процедуры может быть блокирующим, например для выполнения специального ввода-вывода.

Вызовы помещаются в очередь, соответствующую потоку, то есть существует несколько очередей асинхронных вызовов процедур. Для этого драйверы посредством соответствующего объекта указывают предпочтительный способ ввода-вывода.

Существует три поддерживаемых драйверами Windows NT типа ввода- вывода: Эти методы рассматриваются в данном разделе. После того как приложение отправило запрос на ввод- вывод, диспетчер ввода-вывода проверяет соответствие прав доступа приложения к предоставленному буферу ввода-вывода соответствие прав доступа предполагает, что приложение имеет права на чтение и запись, а также имеет доступ к буферу необходимого размера, указанного в запросе на ввод- вывод.

Диспетчер ввода-вывода выделяет буфер в невыгружаемой памяти и в случае запроса на запись копирует данные из буфера приложения в выделенный буфер. Этот буфер передается драйверу. Драйвер не обязан заботиться о контексте потока, так как буфер находится в невыгружаемой памяти и действителен в контексте любого процесса или потока. Драйвер выполняет необходимую операцию ввода-вывода.

Для операции чтения драйвер копирует данные в полученный буфер. На этом этапе драйвер завершает обработку IRP, и ответственность за копирование данных из невыгружаемого буфера в буфер приложения возлагается на диспетчер ввода-вывода.

Эта операция копирования должна выполняться в контексте процесса, который отправил запрос на ввод-вывод. Кроме того, диспетчер ввода-вывода должен освобождать буфер, выделенный в невыгружаемой области памяти. Диспетчер ввода-вывода выполняет базовые проверки, например проверяет разрешения приложения на доступ к буферу посредством области ввода-вывода желательного объема.

Буфер в памяти, независимый от процесса, описывается для драйвера средствами структуры данных, которая называется список дескрипторов памяти memory descriptor list — MDL. Адрес буфера используется в качестве общесистемного виртуального адресного пространства.

Операционная система Windows NT предоставляет процедуры драйверов, которые позволяют получать доступ к различным полям списка дескрипторов памяти. Создателям драйверов рекомендуется использовать список дескрипторов памяти в качестве целостного элемента. Дополнительная информация по использованию процедур работы со списками дескрипторов памяти приводится в документации к инструментарию создания драйверов DDK Windows NT. Процедуры, описанные в DDK, предоставляют следующие возможности: Прямой ввод-вывод чаще всего используется в драйверах ввода-вывода, например драйверах управления дисками и приводами на магнитной ленте.

При небуферизированном вводе-выводе драйверу непосредственно передается адрес буфера запросившего приложения. Внимательный читатель быстро догадается, что, поскольку виртуальный адрес имеет смысл только в контексте определенного процесса или потока, драйвер должен вызываться в контексте запросившего приложения.

Более того, драйвер должен выполнить операцию в этом же контексте то есть драйвер не может поместить запрос в очереди для последующего выполнения в произвольном контексте. Это ограничение определяет ситуации использования данного метода ввода-вывода, который не применяется большинством драйверов, исключение составляют, например, драйверы файловой системы.

Дело в том, что последние всегда вызываются в контексте процесса, который запрашивает операцию ввода-вывода. Кроме того, небуферизированный ввод-вывод поддерживает копирование между кэшем и буферами данных, так как управлять буферами связывание адресов не требуется.

Может сложиться неверное впечатление, что драйвер должен выбрать один из описанных способов вводагвывода и использовать только. Драйвер, который выполняет операции управления вводом-выводом IOCTLможет использовать один метод ввода-вывода для обработки обычных пакетов IRP и совершенно другой метод для операций управления вводом-выводом, которые определяются частным образом между драйвером и соответствующим приложением.

Конечно, даже драйвер на нижних уровнях стека драйверов, который не имеет информации о контексте выполнения, не обязательно использует небуферизированный ввод-вывод в частных операциях управления вводом-выводом. Поскольку здесь затронута тема частного управления вводом-выводом, стоит упомянуть, что компания Microsoft настойчиво советует не применять такой способ управления, особенно при наличии более приемлемой альтернативы. Для передачи некорректного буфера необходимо иметь информацию о правильном размере буфера, выравнивании и граничных условиях, которые предполагаются в коде управления вводом-выводом, а для частных операций управления вводом- выводом эти параметры каждый раз имеют другие значения.

Преимущество такой архитектуры состоит в расширяемости архитектуры и возможности добавления новых драйверов на любой уровень иерархической структуры. Таким образом, благодаря поуровневому размещению драйверов можно реализовать различные функциональные возможности. В контексте выполняемого модуля Windows NT все драйверы имеют аналогичную структуру, поэтому функции драйвера используются схожим образом вне зависимости от его типа.

В этом разделе представлен обзор стека драйверов устройств хранения Windows NT. Обратите внимание, что речь идет только о базовых, а не обо всех драйверах, связанных с подсистемой хранения данных. Например, драйверы, связанные со службами удаленного хранения RSSрассматриваются в главе 7.

Ниже приведены примеры подобных ситуаций. При вводе-выводе данных на физический диск, подключенный через интерфейс IDE или SCSI, необходимы уровни класса и порта, а также уровни файловой системы и управления томами. Все эти уровни рассматриваются далее в главе. При вводе-выводе данных посредством накопителя на магнитной ленте уровни управления томами и файловой системы не требуются. В следующих подразделах рассматриваются драйверы шины, порта, класса, управления томами, файловой системы и фильтрации, представленные на рис.

Термин шина используется в универсальном смысле, обозначая любое виртуальное или физическое устройство, к которому подключаются другие устройства. Драйверы шины необходимы для поддержки процедур перебора, которые вызываются диспетчером Plug and Play для перечисления устройств, подключенных к шине. Кроме того, от драйверов шины требуется предоставление кода обработки РпР, а также пакетов IRP для управления энергопитанием.

Компания Microsoft предоставляет драйверы ввода-вывода для всех физических шин персональных компьютеров например, SCSI, PCI,USBхотя независимые поставщики оборудования также могут по мере необходимости предоставлять собственные драйверы шин. Драйвер шины создает объект физического устройства physical device object — PDO для каждого устройства, указанного процедурой перечисления устройств.

Стек драйверов хранения Windows NT 1. Драйвер порта должен реализовать набор указанных функций для драйвера класса и может реализовать дополнительные возможности. Драйвер порта получает пакеты IRP и передает блоки запросов SCSI с встроенными блоками дескрипторов команд драйверу мини-порта, который динамически подключается к драйверу порта.

Драйверы мини-портов не создают объектов устройств, а используют созданные драйверами порта. Как отмечалось в разделе 1. В свою очередь, Windows Server поставляется с дополнительным драйвером порта, который называется Storport.

Дополнительная информация о драйвере Storport приводится в главе 2. Драйверы порта, в свою очередь, содержат драйверы мини-портов, которые предоставляются независимыми поставщиками оборудования. Мини- порт обеспечивает функции уровня устройства, которые зависят от конкретного поставщика и не обеспечиваются драйвером порта. Драйверы мини-пор- та создаются с помощью инструментария разработки драйверов Windows NT.

Драйвер класса зависит от драйверов мини-класса или мини-порта, которые предоставляют конкретные функции устройства. Драйверы класса хранения данных используются для работы с устройствами SCSI и устройствами, подключаемыми через другие интерфейсы. Ниже перечислены другие функции драйверов классов.

Создание объекта функционального устройства FDO. Такой объект необходим для непосредственного использования устройства. Проверка действительности параметров IRP. Повторная отправка запросов, обработка которых завершилась неудачно.

В частности, драйверы класса хранения данных выполняют описанные ниже операции. После этого блоки запросов SCSI отправляются следующему драйверу в цепочке стека, который может оказаться драйвером фильтрации или драйвером порта.

Блоки запросов SCSI при этом будут незавершенными, так как драйвер класса не заполняет информацию об адресации в блоке запроса SCSI и в этом зависит от драйвера более низкого уровня.

знакомство с windows nt и драйверами устройств хранения

Другими словами, драйверы класса устройств хранения активно принимают участие в реализации РпР и управлении энергопитанием. Драйверы класса взаимодействуют с драйверами порта на следующем нижнем уровне стека хранения данных.

Интерфейс между драйверами классов и драйверами порта формируется посредством частного интерфейса управления вводом-выводом, а также обмена блоками запросов SCSI.

Некоторые элементы блоков запроса SCSI Используются только для интерфейса класса или интерфейса порта, а некоторые предназначены для использования драйвером порта.

К драйверам класса устройств хранения в Windows NT относятся, например, драйверы дисков, приводов компакт-дисков и накопителей на магнитной ленте; они могут работать с различными устройствами, в том числе подключенными к шинам SCSI, IDE, USB и В контексте диспетчера ввода-вывода драйвер класса устройства хранения — это такой же драйвер, как и все остальные, поэтому он должен соответствовать определенным требованиям, например предоставлять процедуры инициализации ввода-вывода, выгрузки и завершения.

Драйверы класса устройства хранения обычно работают аналогично драйверам шины, перечисляя дочерние устройства.

знакомство с windows nt и драйверами устройств хранения

Хорошим примером может служить драйвер класса диска disk. Некоторые драйвера класса определяют интерфейс драйвера мини-класса. Драйвер мини-класса, который обычно создается независимым поставщиком оборудования, представляет собой динамически подключаемую библиотеку режима ядра, которая взаимодействует с драйвером класса, предоставляемым Microsoft.

Драйвер мини-класса регистрирует адаптеры аппаратного обеспечения с помощью драйвера класса, а последний, в свою очередь, создает объект устройства для каждого зарегистрированного адаптера. Драйвер мини-класса не содержит объектов устройств и использует объект устройства, который создается драйвером класса.

Обычно драйвер мини-класса помогает вносить дополнительную информацию в блоки запросов SCSI, которые создаются драйвером класса. В качестве примера можно привести драйвер мини-класса для накопителя на магнитной ленте. Интересно отметить, что Microsoft добавила в Windows новую библиотеку, которая называется ClassPnP. Эта библиотека реализует функциональные возможности РпР, общие для всех драйверов класса. При этом некоторые функции полностью реализуются драйвером класса. Для других функций драйвер, который использует библиотеку класса, должен предоставить процедуры обратного вызова, используемые драйвером класса при необходимости.

Все драйверы класса, предоставляемые Microsoft драйверы дисков, накопителей на магнитной ленте и драйверы приводов компакт-дисковпользуются услугами библиотеки ClassPnP она реализована в виде файла classpnp. Однако немного отвлечемся перед обсуждением уровней управления томами и файловыми системами и рассмотрим дерево устройств, которое создается операционной системой.

Знакомство с объектной моделью дерева устройств упрощает понимание тем, связанных с многопоточным вводом-выводом данных в отказоустойчивых устройствах хранения см. Поэтому имеет смысл рассмотреть данную тему сейчас, пока еще не забылась информация об объектах устройств, драйверах классов и портов, приведенная в предыдущих разделах.

Как уже отмечалось, технология РпР играет вареную роль в идентификации устройств. Интерфейс РпР загружает драйверы шины и инициирует обнаружение устройств, подключенных к этой шине.

При обнаружении устройств РпР используется для загрузки соответствующих драйверов. В частности, перечисление устройств начинается с драйвера виртуальной корневой шины. Драйвер корневой шины отвечает за перечисление устаревших драйверов DOS и обычно используется для идентификации шин PCI. Драйверы, загруженные драйвером корневой шины, часто называют прошедшими корневое перечисление. К ним относится, например, драйвер шины МРIO рассматривается в главе 9. При загрузке драйверов и перечислении ими соответствующих устройств списки устройств передаются обратно интерфейсу РпР.

При этом формируется дерево устройств, демонстрирующее схему их логического и физического взаимодействия. Обратите внимание, что РпР может только создать дерево; граф устройств не поддерживается. Таким образом, при использовании РпР дочерний узел может содержать только один родительский узел.

Другие периферийные устройства, которые обычно подключены к компьютерам под управлением Windows NT, на рисунке не показаны.

10.3.4 групповой ввод-вывод

Дерево драйверов устройств На рис. В частности, на рис. Начиная с нижней правой области рис. Драйвер шины PCI, в свою очередь, создает объект функционального устройства для шины PCI и подключает его к объекту физического устройства. Кроме того, драйвер шины PCI идентифицирует перечисляет адаптеры и обнаруживает адаптер шины SCSI, после чего создает для него объект физического устройства. Чтобы не усложнять диаграмму на рис. При этом драйверу в качестве параметра передается объект физического устройства, созданный драйвером шины PCI.

Драйвер порта подключает созданный объект функционального устройства к объекту физического устройства, созданному драйвером шины PCI. Как уже отмечалось, драйвер может функционировать по-разному, и в данном случае драйвер SCSIPort действует в качестве драйвера шины, перечисляя устройства, которые подключены к шине SCSI. Драйвер обнаруживает диск и сообщает о нем диспетчеру РпР, который загружает драйвер класса диска disk.

После инициализации драйвер класса диска вызывается через входную точку AddDevice и в качестве параметра получает объект физического устройства, который создается драйвером SCSI.

Драйвер класса диска создает объект функционального устройства для диска, подключенного к адаптеру шины, и подключает его к объекту физического устройства, созданному драйвером SCSIPort. На самом деле адаптер шины может быть подключен к промышленному коммутатору Fibre Channel, за счет чего адаптер главной шины перечислит намного больше устройств.

В данном случае описываемая ситуация намеренно упрощена. Кроме того, стек устройств на этом не заканчивается. Дальнейшее обсуждение стека устройств, которое затрагивает уровни управления томами и файловых систем, приводится в следующем разделе. Это вполне логично, так как устройство, с одной стороны, подключается к шине PCI, а с другой — обеспечивает работу интерфейса шины SCSI. Тома — это логические элементы, которые создаются, чтобы упростить управление устройствами хранения данных.

Раздел — это физически непрерывный набор секторов диска. Из разделов определенным образом формируется.

знакомство с windows nt и драйверами устройств хранения

Такая комбинация разделов может предоставлять дополнительные возможности: Еще одним примером может быть создание зеркального тома на основе двух разделов, размер которых совпадает. Дисковые тома рассматриваются более подробно в главе 6.

На данном этапе эта тема затрагивается для описания схемы управления томами в Windows NT с помощью драйвера программного устройства. Дерево объектов устройств для стека томов В WindowsWindows ХР и Windows Server поддерживается три различных диспетчера томов: Все они подробно рассматриваются в главе 6. В данном случае в качестве примера будет использоваться базовый диспетчер томов Microsoft FtDisk Manager.

Дерево устройств с другими диспетчерами томов также описано в главе 6. Дерево устройств на рис. Для понимания принципов работы диспетчеров томов рассмотрим рис.

Затем драйвер SCSIPort и драйверы класса диска создают объект физического устройства и объект функционального устройства для одного диска, который подключен к шине SCSI. До этого момента на рис. Диспетчер разделов взаимодействует с диспетчерами томов на рис. Обнаружив все дисковые разделы, которые формируют том, диспетчер тома создает объект устройства, представляющего данный. Диспетчер разделов обеспечивает уведомление подсистемы РпР относительно удаления объекта устройства или раздела например, при удалении раздела.

Диспетчер разделов связывается с драйвером FtDisk для предоставления последнему информации о динамически добавляемых и удаляемых разделах.

Таким образом объект устройства раздела 0 никогда не обнаруживается подсистемой РпР. Именно поэтому объект устройства для раздела 0 закрашен не так, как все остальные объекты на рис. Диспетчер разделов передает информацию об обнаруженных объектах устройств зарегистрированным диспетчерам томов.

На данный момент обсуждение будет ограничено одним диспетчером томов. В главе 6 рассматривается аналогичная ситуация, но уже при участии нескольких диспетчеров томов. В этом примере драйвер FtDisk подтверждает свое владение объектами устройств. Затем диспетчер FtDisk проверяет конфигурацию тома и устанавливает, что том сформирован посредством одного раздела, а также определяет владельца соответствующего раздела. На этом этапе драйвер FtDisk создаст объект устройства для тома на рис.

Подробности монтирования файловой системы рассматриваются в главе 6. Следует отметить, что здесь на самом деле рассматриваются два отдельных стека устройств. Один стек представляет логический компонент — том, а второй включает в себя физические устройства системы, например шину PCI, адаптер SCSI и жесткий диск.

Диспетчер томов действует как мост между двумя стеками. Конечно, драйвер FtDisk преобразует смещения относительно тома в смещения относительно диска перед отправкой пакетов IRP.

Работа с драйверами. лучших программ для Windows

Такие операции ввода-вывода показаны толстыми штриховыми линиями. Тонкие пунктирные линии отображают частный интерфейс между диспетчерами томов и разделов. Кроме того, драйвер FtDisk отправляет необработанные сообщения управления вводом-выводом непосредственно объекту устройства раздела.

Хотя файловая система содержится на физическом носителе, например на компакт- диске или жестком диске, драйверы файловой системы рассматриваются в качестве логических, поскольку не используются для непосредственного управления аппаратным обеспечением. Драйверы файловых систем полагаются на драйверы портов и классов для обеспечения ввода-вывода данных на диск и с. Драйвер файловой системы обычно получает пакет IRP для выполнения запроса и осуществляет одну из двух операций. Заполняет следующий фрагмент стека пакета IRP необходимой информацией для завершения ввода-вывода.

После этого пакет IRP отправляется драйверу класса. Создает последовательность пакетов IRP для выполнения запрошенного ввода-вывода. Драйвер файловой системы содержит метаданные на самом носителе. В метаданные входит информация о разрешениях доступа к файловой системе и таблица размещения файлов расположение файлов на диске.

1.7 Иерархия драйверов систем хранения и типы драйверов : Наик Дайлип

Драйвер файловой системы получает пакет IRP, который указывает на определенную операцию по отношению к файлу, считывает необходимые метаданные и отправляет запрос IRP, который уже относится к блоку диска, а не к файлу.

Создание драйвера файловой системы или драйверов фильтрации для файловых систем в Windows NT З. Впоследствии Microsoft предоставила инсталляционный инструментарий файловых систем Installable File System Kitкоторый содержит необходимые заголовочные файлы, документацию и примеры создания файловых систем и драйверов фильтрации файловых систем.

Драйверы как файловых систем, так и фильтрации файловых систем должны обеспечивать поддержку пакетов IRP РпР, включая управление питанием, удаление носителя и самого устройства хранения например, внешнего дисковода на гибких дисках, подключаемого к шине USB.

знакомство с windows nt и драйверами устройств хранения

Драйверы фильтрации обычно используются для выполнения перечисленных ниже задач. Поддержка модульной структуры, например посредством драйвера фильтрации музыкальных компакт-дисков. Добавление функциональных возможностей, например записи компакт- дисков на соответствующих устройствах.

знакомство с windows nt и драйверами устройств хранения

Добавление функциональных возможностей файловой системе, например драйверов фильтрации для шифрования, точек повторной обработки и SIS — Single Instance Storage рассматривается в главе 6.

Изменение процесса ввода-вывода для того, чтобы он соответствовал особенностям функционирования аппаратного обеспечения, например разбивка пакетов ввода-вывода на меньшие фрагменты. Драйверы фильтрации всегда создают объект устройства, который подключен к объекту функционального устройства или к объекту физического устройства эти объекты рассматриваются в разделе 1.

Некоторые драйверы фильтрации создают вторичный объект устройства, который часто называется объектом управляющего устройства control device object — CDOтак как он используется для отправки управляющей информации драйверу фильтрации с помощью соответствующего модуля управления.

Драйверы фильтрации, которые подключаются к объекту функционального устройства, созданному драйвером класса, называются драйверами фильтрации верхнего уровня.

В свою очередь, драйверы фильтрации, которые подключаются к объекту физического устройства, размещенному ниже в стеке и созданному драйвером порта, называются драйверами фильтрации нижнего уровня.