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.
Ovladače můžou zahrnovat následující rutiny odesílání:
-
IRP_MJ_CLEANUP označuje, že poslední popisovač objektu souboru, který je přidružený k objektu cílového zařízení, je zavřený. Nevyřízených vstupně-výstupních požadavků na objekt souboru může stále existovat. Ovladače mohou implementovat rutinu DispatchCleanup k provedení vyčištění, které není specifické pro žádný konkrétní popisovač souboru. Ovladače mohou také používat rutinu DispatchClose pro stejný účel.
DispatchQueryInformation, DispatchSetInformation
Některé ovladače nejvyšší úrovně mohou muset zpracovávat IRP_MJ_QUERY_INFORMATION a IRP_MJ_SET_INFORMATION IRPs. Tyto žádosti indikují, že aplikace v uživatelském režimu, komponenta v jádrovém režimu nebo ovladač požadovaly informace o délce objektu souboru (představující objekt zařízení ovladače), pro který má uživatelský žadatel popisovač, nebo že se uživatelský žadatel pokouší nastavit konec souboru na tento objekt souboru.
Paralelní třídy a ovladače sériových zařízení zpracovávají tyto požadavky nastavením FILE_STANDARD_INFORMATION nebo FILE_POSITION_INFORMATION délky nebo pozice na nulu. Jiné ovladače zařízení nejvyšší úrovně by měly tyto požadavky podporovat, zejména pokud aplikace v uživatelském režimu nebo ovladač režimu jádra mohou volat funkce modulu runtime jazyka C pro manipulaci s objektem souboru. Ovladače systému souborů musí tyto požadavky podporovat úplněji než tyto ovladače zařízení nejvyšší úrovně.
-
Ovladač, který ukládá data do mezipaměti v zařízení nebo ukládá data interně do vyrovnávací paměti přidělené ovladačem, může přijímat IRP_MJ_FLUSH_BUFFERS. Příjem této žádosti označuje, že ovladač by měl zapisovat data uložená do vyrovnávací paměti nebo vyprázdnit data uložená v mezipaměti do zařízení, nebo by měl zahodit data uložená do vyrovnávací paměti nebo data uložená v mezipaměti načtená ze zařízení.
Například ovladače systémové třídy klávesnice a myši, které mají interní kruhové vyrovnávací paměti pro vstupní data ze svých zařízení, podporují požadavek na vyprázdnění. Tuto žádost podporují také ovladače velkokapacitních zařízení a ovladačů vrstvených nad nimi.
-
Každý ovladač, který bude pravděpodobně volán před vypnutím systému, musí zachytit IRP_MJ_SHUTDOWN. Rutina DispatchShutdown by měla provést jakékoli vyčištění určené ovladačem, než řadič napájení odešle IRP pro nastavení napájení k vypnutí systému. Ovladač může volat IoRegisterShutdownNotification nebo IoRegisterLastChanceShutdownNotification pro registraci oznámení o vypnutí.
Ovladače pro velkokapacitní zařízení a zprostředkující ovladače umístěné na nich mohou spoléhat na ovladač systému souborů nejvyšší úrovně, aby jim zaslal IRP, když se systém chystá vypnout. FSD je zodpovědný za zajištění, že všechna data souboru uložená v mezipaměti jsou zapsána do periferních zařízení. To zahrnuje volání podkladových ovladačů k vymazání dat z jejich mezipamětí nebo vyrovnávacích pamětí (pokud existují) a provedení dalších potřebných úkonů před vypnutím systému.
Ovladač velkokapacitního úložného zařízení, které interně ukládá data do mezipaměti, musí poskytovat rutiny DispatchShutdown a DispatchFlushBuffers . Pokud ovladač velkokapacitního úložiště ukládá data do paměti, ale jeho zařízení nemá žádnou interní mezipaměť, musí také poskytovat rutiny DispatchShutdown a DispatchFlushBuffers.
Všechny přechodné ovladače vrstvené nad ovladačem, který zpracovává IRP_MJ_FLUSH_BUFFERS a IRP_MJ_SHUTDOWN požadavky, také poskytují rutiny DispatchShutdown a DispatchFlushBuffers .