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.
Zabezpečené zpracování IRP, které obsahují kódy řízení vstupně-výstupních operací, závisí na správném definování IOCTL kódů a na pečlivém zkoumání parametrů, které ovladač přijímá s balíčkem IRP.
Při definování nových kódů IOCTL použijte následující pravidla:
Vždy zadejte hodnotu FunctionCode , která je rovna nebo větší než 0x800.
Vždy zadejte hodnotu RequiredAccess . I/O manažer neodesílá IOCTL, pokud volající nemá dostatečná přístupová práva.
Nedefinujte kódy IOCTL, které volajícím umožňují číst nebo zapisovat nespecifické oblasti paměti jádra.
Při zpracování kódů IOCTL v rámci ovladače použijte následující pravidla:
Pokaždé, když dispečerské rutiny ovladače testují přijaté kódy IOCTL, musí vždy testovat celou 32bitovou hodnotu.
Ovladače mohou použít IoValidateDeviceIoControlAccess k dynamickému provádění přísnější kontroly přístupu, než která je určena hodnotou RequiredAccess v definici kódu řízení vstupně-výstupních operací.
Nikdy nečtěte nebo nezapisujte více dat, než může obsahovat vyrovnávací paměť, na kterou odkazuje Irp-AssociatedIrp.SystemBuffer>. Proto vždy zkontrolujte Parameters.DeviceIoControl.InputBufferLength nebo Parameters.DeviceIoControl.OutputBufferLength ve struktuře IO_STACK_LOCATION, aby bylo možné určit limity vyrovnávací paměti.
Vždy nulové vyrovnávací paměti přidělené ovladačem, které budou obsahovat data určená pro aplikaci, která pochází z požadavku IOCTL. Tímto způsobem nechtěně nezkopírujete citlivá data do aplikace.
Pro přenosy METHOD_IN_DIRECT a METHOD_OUT_DIRECT postupujte podle výše uvedených pravidel. Dále zkontrolujte návratovou hodnotu NULL z MmGetSystemAddressForMdlSafe, která indikuje, že mapování selhalo nebo že byla zadána vyrovnávací paměť s nulovou délkou.
U METHOD_NEITHER přenosů postupujte podle pravidel, která jsou k dispozici v části Použití žádné vyrovnávací paměti ani přímých vstupně-výstupních operací.