Udostępnij przez


Pakiety żądań we/wy

Większość żądań wysyłanych do sterowników urządzeń jest pakowana w pakietach żądań we/wy (IRP). Składnik systemu operacyjnego lub sterownik wysyła protokół IRP do sterownika przez wywołanie IoCallDriver, który ma dwa parametry: wskaźnik do DEVICE_OBJECT i wskaźnik do IRP. DEVICE_OBJECT ma wskaźnik do skojarzonego DRIVER_OBJECT. Gdy składnik wywołuje usługę IoCallDriver, mówimy, że składnik wysyła protokół IRP do obiektu urządzenia lub wysyła protokół IRP do sterownika skojarzonego z obiektem urządzenia. Czasami używamy frazy przekazującej IRP lub przekazującej IRP zamiast wysyłać IRP.

Zazwyczaj protokół IRP jest przetwarzany przez kilka sterowników rozmieszczonych w stosie. Każdy sterownik w stosie jest skojarzony z obiektem urządzenia. Aby uzyskać więcej informacji, zobacz Węzły urządzeń i stosy urządzeń. Gdy protokół IRP jest przetwarzany przez stos urządzenia, protokół IRP jest zwykle wysyłany najpierw do najwyższego obiektu urządzenia w stosie urządzenia. Jeśli na przykład protokół IRP jest przetwarzany przez stos urządzenia pokazany na tym diagramie, protokół IRP zostanie wysłany najpierw do obiektu urządzenia filtru (Filter DO) w górnej części stosu urządzenia.

diagram węzła urządzenia i jego stosu urządzeń.

Przekazywanie protokołu IRP w dół stosu urządzenia

Załóżmy, że menedżer we/wy wysyła protokół IRP do filtru DO na diagramie. Sterownik skojarzony z filtrem DO, AfterThought.sys, przetwarza IRP, a następnie przekazuje go do funkcjonalnego obiektu urządzenia (FDO), który jest następnym dolnym obiektem urządzenia w stosie urządzenia. Gdy sterownik przekazuje IRP do następnego niższego obiektu urządzenia w stosie urządzenia, mówimy, że sterownik przekazuje IRP w dół stosu urządzenia.

Niektóre IRP są przekazywane w dół stosu urządzeń aż do fizycznego obiektu urządzenia (PDO). Inne IRP nigdy nie docierają do PDO, ponieważ są one ukończone przez jeden ze sterowników powyżej PDO.

IRP są autonomiczne

Struktura IRP jest samodzielnie zawarta w tym sensie, że przechowuje wszystkie informacje wymagane przez sterownik do obsługi żądania we/wy. Niektóre części struktury IRP zawierają informacje, które są wspólne dla wszystkich sterowników uczestniczących w stosie. Inne części protokołu IRP zawierają informacje specyficzne dla określonego sterownika w stosie.