Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jakýkoli ovladač zařízení nižší úrovně, který nastaví objekty zařízení pro přímé vstupně-výstupní operace, splňuje požadavek na čtení vrácením dat přenesených ze zařízení do fyzické paměti systému, která je popsána MDL v Irp-MdlAddress>. Splňuje požadavek na zápis přenosem dat ze systémové fyzické paměti do zařízení.
Ovladače nižší úrovně musí zpracovávat požadavky na čtení a zápis asynchronně. Proto každá rutina DispatchReadWrite ovladače nižší úrovně musí předávat IRP_MJ_READ a IRP_MJ_WRITE IRPs s platnými parametry jiným rutinám ovladače, jak je popsáno v části Předávání IRPs dolů zásobníku ovladačů.
U IRP pro čtení/zápis odesílaných na ovladače nižší úrovně byla stránkovaná fyzická paměť popsaná MDL na Irp-MdlAddress> již ověřena pro správná přístupová práva k provedení požadovaného přenosu a byla již uzamčena ovladačem nejvyšší úrovně v řetězci nebo správcem I/O operací. Jakýkoli ovladač střední nebo nejnižší úrovně, který nastavuje objekty zařízení pro přímé I/O, by neměl volat MmProbeAndLockPages, protože to již bylo provedeno. Ovladač nejnižší úrovně volá MmGetSystemAddressForMdlSafe. (Ovladače systému Windows 98 místo toho volají MmGetSystemAddressForMdl . Ovladače pro Windows Me, Windows 2000 a novější verze Windows by měly používat MmGetSystemAddressForMdlSafe.)
cs-CZ: Jakákoli rutina DispatchReadWrite ovladače zařízení na střední nebo nejnižší úrovni by měla ověřit parametry v místě zásobníku I/O pro IRP čtení a zápis, pokud nemůže důvěřovat ovladači vyšší úrovně, že předává pouze IRP s platnými parametry. Pokud rutina DispatchReadWrite najde chybu parametru, měla by dokončit IRP s odpovídající chybou STATUS_XXX hodnotu, jak je již popsáno v dokončení irps. Pokud jsou parametry platné, musí rutina DispatchReadWrite zprostředkujícího ovladače předat požadavek na další zpracování podle pokynů v DispatchReadWrite v Higher-Level Ovladače.
Rutina DispatchReadWrite ovladače zařízení na nejnižší úrovni musí volat IoMarkIrpPending s žádostí o převod, předat IRP pro další zpracování jinými rutinami ovladačů a vrátit STATUS_PENDING, jak je popsáno v části Předávání irPs do zásobníku ovladačů.
Všimněte si, že rutina DispatchReadWrite ovladače zařízení může řídit pořadí, ve kterém jsou irps zařazeny do svého zařízení, aby se zrychlila vstupně-výstupní propustnost voláním IoStartPacket s hodnotou klíče určeného ovladačem. Další rutina v ovladači později vyřadí IRP, určuje, zda musí být požadovaná délka rozdělena do operací částečného přenosu, a programuje zařízení pro přenos dat.
Obecně platí, že ovladač zařízení, který musí rozdělit velké žádosti o přenos tak, aby vyhovoval omezením jeho zařízení, by měl tyto operace odložit až těsně před nastavením zařízení pro danou žádost o převod. Taková rutina DispatchReadWrite ovladače zařízení by neměla kontrolovat umístění I/O zásobníku příchozích IRP pro jakákoli zařízeními specifická omezení přenosu, ani se pokoušet vypočítat rozsahy částečného přenosu, když ovladač může tyto kontroly odložit až těsně před jeho StartIo (nebo jinou rutinou ovladače), aby naprogramoval zařízení pro operaci přenosu.