Udostępnij przez


Packet-Driven wejście/wyjście z odnawialnymi IRP

Menedżer we/wy, menedżer Plug and Play oraz menedżer zasilania używają pakietów żądań we/wy (IRP) do komunikowania się ze sterownikami trybu jądra i umożliwiają sterownikom komunikowanie się ze sobą.

Menedżer we/wy wykonuje następujące kroki:

  • Akceptuje żądania we/wy, które zwykle pochodzą z aplikacji trybu użytkownika.

  • Tworzy IRP do reprezentowania żądań I/O.

  • Kieruje IRPs do odpowiednich sterowników.

  • Monitoruje IRPs do ich pełnego ukończenia.

  • Zwraca stan każdej operacji wejścia/wyjścia do pierwotnego żądającego.

IRP może być przekazywany do więcej niż jednego sterownika. Na przykład żądanie otwarcia pliku na dysku może najpierw przejść do sterownika systemu plików, za pośrednictwem pośredniego sterownika dublowania, a ostatecznie do sterownika dysku i, ewentualnie, do sterownika magistrali sprzętowej PnP. Ten zestaw sterowników jest nazywany stosem sterowników.

W związku z tym każdy IRP ma stałą część oraz jedną lokalizację stosu wejścia/wyjścia specyficzną dla sterownika dla każdego sterownika, który kontroluje urządzenie:

  • W stałej części (lub nagłówku) menedżer we/wy przechowuje informacje o oryginalnym żądaniu, takie jak identyfikator wątku i parametry obiektu wywołującego, adres obiektu urządzenia, na którym jest otwarty plik itd. Stała część zawiera również blok statusu I/O, w którym sterowniki ustawiają informacje o stanie żądanej operacji I/O.

  • W lokalizacji stosu we/wy na najwyższym poziomie, menedżer we/wy, menedżer Plug and Play lub menedżer zasilania ustawia parametry specyficzne dla sterownika, takie jak kod funkcji żądanej operacji i kontekst, którego odpowiedni sterownik używa do określenia, co powinien zrobić. Z kolei każdy sterownik konfiguruje lokalizację stosu we/wy następnego niższego sterownika w stosie sterownika.

Każdy sterownik przetwarza IRP i może uzyskać dostęp do lokalizacji stosu we/wy w IRP, dzięki czemu IRP jest ponownie używane na każdym etapie operacji sterownika. Ponadto sterowniki wyższego poziomu mogą tworzyć (lub ponownie używać) IRPs do wysyłania żądań do jeszcze niższych poziomów sterowników.

Aby zapoznać się ze szczegółową dyskusją na temat IRPs, zobacz Obsługa IRPs.