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.
Objekty požadavků architektury představují vstupně-výstupní požadavky, které správce vstupně-výstupních operací odeslal ovladači. Ovladače založené na rozhraní zpracovávají každý vstupně-výstupní požadavek voláním framework metody požadavků na objekty.
Každý vstupně-výstupní požadavek obsahuje paket vstupně-výstupních požadavků WDM (struktura IRP), ale ovladače založené na rozhraní obvykle nepotřebují přistupovat ke struktuře IRP.
Většina objektů požadavků rámce je vytvořena rámcem, ale váš ovladač může také vytvářet objekty požadavků.
Objekty požadavku vytvořené rozhraním
Když ovladač založený na rozhraní obdrží paket vstupně-výstupních požadavků (IRP) ze správce vstupně-výstupních operací, architektura zachytí IRP a vytvoří objekt požadavku na architekturu. Rámec umístí objekt požadavku do vstupně-výstupní fronty a pokud ovladač zaregistroval obslužné rutiny požadavků pro frontu, zavolá příslušnou obslužnou rutinu.
Následující diagram znázorňuje kroky, ke kterým dochází při vytvoření objektu požadavku pro operaci čtení.
Následující kroky odpovídají číslům v předchozím diagramu:
Aplikace v uživatelském režimu čte soubor voláním funkce Microsoft Win32 ReadFile.
Funkce ReadFile volá správce vstupně-výstupních operací, který běží v režimu jádra.
Správce vstupně-výstupních operací přidělí strukturu protokolu IRP a uloží kód funkce IRP_MJ_READ do struktury.
V/V manažer volá DispatchRead standardní rutina ovladače pro ovladač x, předání ukazatele na strukturu IRP. Vzhledem k tomu, že ovladač x je ovladač založený na rámci, poskytuje tento rámec rutinu DispatchRead.
Architektura vytvoří objekt požadavku, který představuje strukturu IRP. Rámec přidá objekt požadavku do jednoho z objektů fronty ovladače.
Rámec volá obslužnou rutinu požadavku ovladače EvtIoRead a předává mu popisovač objektu fronty a popisovač objektu požadavku.
Vyžádání objektů vytvořených ovladačem
Ovladače založené na rozhraní mohou také vytvářet objekty požadavků. Ovladač může například vytvořit objekty požadavku, pokud obdrží požadavek na čtení nebo zápis pro množství dat, která jsou větší, než mohou cíle I/O ovladače zpracovat najednou. V takové situaci může ovladač rozdělit data do několika menších požadavků a použít další objekty požadavků k odeslání těchto menších požadavků do jednoho nebo více vstupně-výstupních cílů.
Chcete-li vytvořit objekt požadavku, ovladač by měl volat WdfRequestCreate následované metodami objektu architektury, které inicializují požadavek, například WdfUsbTargetPipeFormatRequestForRead.
Pokud ovladač obdrží WDM IRPs v rutině odesílání WDM a potom je obsluhuje nebo je přeposílá pomocí frameworku, může ovladač volat WdfRequestCreateFromIrp.