Aracılığıyla paylaş


G/Ç talep paketleri

Cihaz sürücülerine gönderilen isteklerin çoğu G/Ç istek paketlerinde (IRP' ler) paketlenir. bir işletim sistemi bileşeni veya sürücüsü, iki parametresi olan IoCallDriver'ı çağırarak bir sürücüye IRP gönderir: bir DEVICE_OBJECT işaretçisi ve IRP işaretçisi. DEVICE_OBJECT ilişkili bir DRIVER_OBJECT işaretçisi vardır. Bir bileşen IoCallDriver'ı çağırdığında, bileşenin IRP'yi cihaz nesnesine gönderdiğini veya IRP'yi cihaz nesnesiyle ilişkili sürücüye gönderdiğini söyleriz. Bazen IRP'yi gönderir yerine IRP'yi geçirir veya IRP'yi iletir ifadesini kullanırız.

Genellikle bir IRP, bir yığın halinde düzenlenmiş birkaç sürücü tarafından işlenir. Yığındaki her sürücü bir cihaz nesnesiyle ilişkilendirilir. Daha fazla bilgi için bkz. Cihaz düğümleri ve cihaz yığınları. Bir IRP bir cihaz yığını tarafından işlendiğinde, IRP genellikle ilk olarak cihaz yığınındaki en üst cihaz nesnesine gönderilir. Örneğin, bir IRP bu diyagramda gösterilen cihaz yığını tarafından işlenirse, IRP ilk olarak cihaz yığınının üst kısmındaki filtre cihazı nesnesine (Filtre DO) gönderilir.

bir cihaz düğümünün ve cihaz yığınının diyagramı.

IRP'yi cihaz yığınından geçirme

G/Ç yöneticisinin diyagramdaki Filtre DO'ya bir IRP gönderdiğini varsayalım. AfterThought.sysFiltre DO ile ilişkili sürücü, IRP'yi işler ve ardından bunu cihaz yığınındaki bir sonraki alt cihaz nesnesi olan işlevsel cihaz nesnesine (FDO) geçirir. Bir sürücü bir IRP'yi cihaz yığınındaki bir sonraki alt cihaz nesnesine geçirdiğinde, sürücünün IRP'yi cihaz yığınından aşağı doğru geçtiğini söyleriz.

Bazı IRP'ler, cihaz yığınından fiziksel cihaz nesnesine (PDO) kadar geçirilir. Diğer IRP'ler, yukarıda belirtilen sürücülerden biri tarafından tamamlandığı için PDO'ya asla ulaşmaz.

IRP'ler bağımsızdır

IRP yapısı, bir sürücünün G/Ç isteğini işlemek için ihtiyaç duyduğu tüm bilgileri barındırıyor olması açısından bağımsızdır. IRP yapısının bazı bölümleri, yığındaki tüm katılımcı sürücüler için ortak olan bilgileri tutar. IRP'nin diğer bölümleri, yığındaki belirli bir sürücüye özgü bilgileri tutar.