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.
S výjimkou ovladačů systému souborů obvykle ovladač vyšší úrovně nemá žádné interní fronty ovladačů pro irps. Taková rutina DispatchReadWrite ovladače může předat IRPs s platnými parametry nižším ovladačům, možná až po nastavení jeho rutiny IoCompletion, jak je popsáno v části Předávání IRPs dolů zásobníku ovladačů.
Rutina DispatchReadWrite ovladače třídy SCSI však v případě potřeby zodpovídá za rozdělení velkých žádostí o přenos před odesláním protokolu IRP s hlavním kódem funkce IRP_MJ_READ nebo IRP_MJ_WRITE na dvojici ovladačů portu/miniportu SCSI. Další informace naleznete v části Rutina SplitTransferRequest ovladače třídy úložiště.
Pokud ovladač vyšší úrovně přidělí jeden nebo více I/O požadavkových paketů (IRPs), které nastaví pro následující nižší ovladač ve své rutině DispatchReadWrite k požádání o určitý počet částečných přenosů, musí rutina DispatchReadWrite volat IoSetCompletionRoutine s každým IRP přiděleným ovladačem. Ovladač musí zaregistrovat svoji rutinu IoCompletion , aby sledoval, kolik dat se přenáší v každé operaci částečného přenosu, aby rutina IoCompletion mohl uvolnit všechny operace IRP přidělené ovladačem a nakonec dokončit původní požadavek.
Pokud podkladový ovladač řídí zařízení s vyměnitelnými médii, všechny IRP, které přidělí ovladač na vyšší úrovni, musí mít kontext vlákna. Pokud chcete nastavit kontext vlákna, musí přidělující ovladač nastavit Irp-Tail.Overlay>.Thread v každém nově přiděleném IRP podle stejné hodnoty v příchozím přenosu IRP. Další informace naleznete v tématu Podpora vyměnitelného média.
Pokud základní ovladač zařízení vrátí IRP pro částečný přenos s chybou, může rutina IoCompletion buď opakovat žádost o částečný přenos, nebo dokončit původní IRP, přičemž stavový blok vstupně-výstupních operací nastaví na vrácenou chybu, a to po uvolnění všech IRP a paměti, které ovladač vyšší úrovně přidělil.
Pokud rutina DispatchReadWrite ovladače vyšší úrovně přiděluje paměť pro operace částečného přenosu a jeho přidělení bude přístupné rutinou IoCompletion ovladače (nebo základním ovladačem zařízení), rutina DispatchReadWrite musí přidělit paměť z nestránkového fondu.