I/O request packet

I/O request packet

IRP пакет (англ. I/O request packet) — структура данных ядра Windows, обеспечивающая обмен данными между приложениями и драйвером, а также между драйвером и драйвером.

Содержание

Общий обзор механизма IRP

C точки зрения архитектуры любой драйвер выступает как участник процесса ввода/вывода. Причем независимо от того, является ли он драйвером устройства ввода вывода на самом деле. Также в архитектуре Windows запрещено прямое взаимодействие программы пользовательского уровня и драйвера. Оно сводится к тому что программа посылает код IOCTL, который уже приводит к тому, что диспетчер ввода/вывода формирует на основе нее IRP пакет. В самом драйвере определены функции, реагирующие на определённый тип запроса в IRP пакете.

Как правило, ZwReadFile/ZwWriteFile/ZwDeviceIoControlFile реализованы, как формирование и заполнение IRP и отправка IRP требуемому объекту «устройство» (device object). Единственное исключение — так называемый механизм FastIo, используемый в реализации TCP/IP стека и в файловых системах, использующих Cache Manager. FastIo не требует создания и заполнения IRP, но не поддерживает останов нити с ожиданием — в этом случае реализация обработчика FastIo обязана вернуть FALSE, что означает «FastIo не поддерживается для данной операции, требуется IRP». Также FastIo не поддерживает асинхронный ввод-вывод (негде хранить контекст).

Механизм IRP немедленно дает поддержку асинхронного ввода-вывода. Если операция не может быть исполнена немедленно без ожидания — то, согласно рекомендациям MS, драйвер обязан пометить данный IRP как «в процессе выполнения», сохранить его в некоем контейнере (обычно списке, в IRP для этого есть поле Tail.Overlay.ListEntry) до тех пор, пока операция сможет быть исполнена, и вернуть STATUS_PENDING. В IRP есть массив из четырех указателей PVOID DriverContext[4], который может при этом использоваться для хранения контекста исполнения запроса в данном драйвере.

Таким образом, для драйвера любой (кроме FastIo) ввод-вывод является асинхронным.

В некоторых случаях, а именно:

  • файл, открытый без флага overlapped — все операции превращаются в синхронные ожиданием в ZwRead/Write/DeviceIoControlFile
  • inherently synchronous operations, то есть операции, для которых в Win32 не предусмотрен асинхронный режим

— можно разрешить драйверу останавливать нить (KeWaitForSingleObject и все то, что зовет данный вызов внутри себя) в обработчике ввода-вывода. Для проверки, можно ли останавливаться, драйвер должен вызвать IoIsOperationSynchronous (проверяет на два выше приведенных случая).

Структура IRP пакета

IRP пакет включает в себя две части: постоянную и стек ввода/вывода. В первой части хранится та информация, которая не меняется при передаче по стеку устройств или не требует своего сохранения при передаче[1].Стек устройств это набор устройств, которые обработают данный IRP пакет. Причем по стеку этот пакет передается последовательно от устройства к устройству.

Примечания



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "I/O request packet" в других словарях:

  • I/O request packet — I/O request packets (IRPs) are kernel mode structures that are used by Windows Driver Model (WDM) and Windows NT device drivers to communicate with each other and with the operating system. They are data structures that describe I/O requests, and …   Wikipedia

  • Packet switching — is a digital networking communications method that groups all transmitted data – regardless of content, type, or structure – into suitably sized blocks, called packets. Packet switching features delivery of variable bit rate data streams… …   Wikipedia

  • packet — pack‧et [ˈpækt] noun [countable] 1. a small container, usually made of paper, with a set of things in it ; = PACK: • United Biscuits produces 5 billion packets a year. packet of • Supermarkets withdrew thousands of packets of chocolates after… …   Financial and business terms

  • packet —    Any block of data sent over a network or communications link.    Each packet may contain sender, receiver, and error control information, in addition to the actual message, which may be data, connection management controls, or a request for a… …   Dictionary of networking

  • Packet-Sniffer — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Ein Sniffer (engl. „to sniff“ für riechen, schnüffeln) ist eine… …   Deutsch Wikipedia

  • Packet Sniffer — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Ein Sniffer (engl. „to sniff“ für riechen, schnüffeln) ist eine… …   Deutsch Wikipedia

  • High-Speed Downlink Packet Access — (HSDPA) is an enhanced 3G (third generation) mobile telephony communications protocol in the High Speed Packet Access (HSPA) family, also dubbed 3.5G, 3G+ or turbo 3G, which allows networks based on Universal Mobile Telecommunications System… …   Wikipedia

  • High-Speed Uplink Packet Access — (HSUPA) is a 3G mobile telephony protocol in the HSPA family with up link speeds up to 5.76 Mbit/s. The name HSUPA was created by Nokia. The 3GPP does not support the name HSUPA , but instead uses the name Enhanced Uplink (EUL). [… …   Wikipedia

  • Deep packet inspection — (DPI) (also called complete packet inspection and Information eXtraction IX ) is a form of computer network packet filtering that examines the data part (and possibly also the header) of a packet as it passes an inspection point, searching for… …   Wikipedia

  • Automatic repeat-request — Automatic Repeat Query (ARQ) (or Automatic Repeat reQuest) is an error control method for data transmission which uses acknowledgments and timeouts to achieve reliable data transmission. An acknowledgment is a message sent by the receiver to the… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»