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.
Rutiny dispečerského ovladače (viz DRIVER_DISPATCH) zpracovávají IRP s funkčními kódy I/O IRP_MJ_DEVICE_CONTROL a IRP_MJ_INTERNAL_DEVICE_CONTROL.
Pro každý běžný typ periferního zařízení systém definuje sadu kódů řízení vstupně-výstupních operací pro požadavky IRP_MJ_DEVICE_CONTROL . Nové ovladače pro každý typ zařízení musí tyto požadavky podporovat. Ve většině případů se tyto veřejné vstupně-výstupní řídicí kódy pro každý typ zařízení neexportují do aplikací v uživatelském režimu.
Některé z těchto kódů řízení vstupně-výstupních operací definovaných systémem používají ovladače vyšší úrovně, které vytvářejí irPs pro základní ovladač zařízení voláním IoBuildDeviceIoControlRequest. Ostatní komponenty Win32 používají ke komunikaci se základním ovladačem zařízení voláním funkce Win32 DeviceIoControl (popsané v dokumentaci k sadě Microsoft Windows SDK), která následně volá systémovou službu. Správce vstupně-výstupních operací nastaví IRP a uloží hlavní kód funkce IRP_MJ_DEVICE_CONTROL a daný kód řízení vstupně-výstupních operací ve struktuře IO_STACK_LOCATION na Parameters.DeviceIoControl.IoControlCode. Pak V/V manažer volá rutinu DispatchDeviceControl ovladače nejvyšší úrovně v řetězci.
Pro určité systémové ovladače navržené pro spolupráci s novými ovladači a podporu nových ovladačů také operační systém definuje sadu kódů řízení vstupně-výstupních operací pro IRP_MJ_INTERNAL_DEVICE_CONTROL požadavky. Ve většině případů tyto veřejné vstupně-výstupní kontrolní kódy umožňují, aby doplňky na vyšší úrovni mohly spolupracovat s podkladovým ovladačem zařízení.
Například systémové paralelní ovladače podporují sadu interních kódů řízení vstupně-výstupních operací, které ovladače dodané dodavatelem odesílají do IRP_MJ_INTERNAL_DEVICE_CONTROL požadavků. Další informace najdete v průvodci návrhem ovladače paralelního zařízení.
Téměř všechny operace požadované prostřednictvím systémově definovaných I/O kódů používají vyrovnávané I/O, protože tyto požadavky jen zřídka vyžadují přenos velkých objemů dat. To znamená, že i ovladače, které nastavují objekty zařízení pro přímé I/O operace, jsou jim zasílány IRP pro žádosti o ovládání zařízení s daty, která se mají přenést do nebo z pufferové paměti v Irp-AssociatedIrp.SystemBuffer> (s výjimkou určitých typů nejvyšší úrovně ovladačů zařízení s úzce propojenými multimediálními ovladači Win32).
Kromě toho může ovladač definovat sadu privátních vstupně-výstupních řídicích kódů, které můžou ostatní ovladače použít ke komunikaci s ním. Nové kontrolní kódy veřejných vstupně-výstupních operací lze do systému přidat pouze při spolupráci společnosti Microsoft Corporation, protože veřejné vstupně-výstupní kontrolní kódy jsou integrovány do samotného operačního systému.
Konkrétní informace o sadě veřejných vstupně-výstupních řídicích kódů, které musí různé druhy ovladačů podporovat, a o definování soukromých vstupně-výstupních řídicích kódů naleznete v referenčních oddílech specifických pro zařízení sady Windows Driver Kit (WDK).