Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Menedżer I/O tworzy obiekt sterownika dla każdego sterownika, który został zainstalowany i załadowany. Obiekty sterowników są definiowane przy użyciu struktur DRIVER_OBJECT.
Gdy menedżer we/wy wywołuje procedurę DriverEntry, dostarcza adres obiektu sterownika. Obiekt sterownika zawiera magazyn punktów wejścia do wielu standardowych procedur sterownika. Kierowca jest odpowiedzialny za wypełnienie tych punktów wejścia.
Na poniższej ilustracji przedstawiono obiekt sterownika z zestawem standardowych procedur zdefiniowanych przez system, które sterowniki najniższego poziomu i wyższego poziomu mogą lub muszą mieć.
Każda standardowa rutyna z gwiazdką obok jej nazwy otrzymuje pakiet żądania we/wy (IRP) jako dane wejściowe. Każda z tych standardowych procedur otrzymuje również wskaźnik do obiektu urządzenia docelowego dla żądania I/O.
Menedżer we/wy definiuje typ obiektu sterownika i używa obiektów sterowników do rejestrowania i śledzenia informacji o załadowanych obrazach sterowników. Należy pamiętać, że punkty wejścia wysyłania (DDDispatchXxx przez DDDispatchYyy) w obiekcie sterownika odpowiadają głównym kodom funkcji (IRP_MJ_XXX), które są przekazywane w lokalizacjach stosu we/wy IRP-ów.
Menedżer we/wy kieruje każdy protokół IRP najpierw do procedury wysyłania dostarczonej przez sterownik. Procedura wysyłania sterownika najniższego poziomu zwykle wywołuje procedurę obsługi we/wy (IoStartPacket) do kolejkowania (lub przekazywania) każdego żądania IRP, które ma prawidłowe argumenty do rutyny StartIo sterownika. Procedura StartIo uruchamia żądaną operację wejścia/wyjścia na określonym urządzeniu. Sterowniki wyższego poziomu zwykle nie mają StartIo procedur, ale mogą.