Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dosya sistemi sürücüleri dışında, G/Ç yöneticisi bir cihaz kuyruğu nesnesini (IRP'leri kuyruğa alma için) bir sürücünün oluşturduğu her cihaz nesnesiyle ilişkilendirir.
Çoğu cihaz sürücüsü, I/O yöneticisinin destek rutinlerini çağırarak, hedef cihaz nesnesine yönelik cihaz I/O istekleri sürücü tarafından tamamlanmasından daha hızlı geldiğinde IRP'leri tutan ilişkili cihaz kuyruğunu kullanır. Bu teknikle IRP'ler sürücü tarafından sağlanan StartIo yordamına kuyruğa alınır.
İyi performans için, çoğu ara sürücü yalnızca IRP'leri geldiklerinde hemen düşük sürücülere iletir, dolayısıyla ara sürücüler neredeyse hiçbir zaman ilgili cihaz nesneleriyle ilişkili cihaz kuyruklarını kullanmaz.
Ancak, bir veya daha fazla cihaz kuyruğu, kilitlenmiş kuyruk veya iptal güvenli kuyrukları açıkça ayarlayarak IRP'lerin iç kuyruklarını yönetmek için bir sürücü tasarlayabilirsiniz. Bu yaklaşım, sürücü G/Ç işlemleriyle çakışan bir cihazı denetlerse özellikle yararlı olabilir. Böyle bir cihaz için, aynı hedef cihaz nesnesi için yalnızca tek bir kuyruk kullanarak iki veya daha fazla IRP'nin eşzamanlı olarak işlenmesini yönetmek zor olabilir.
İç kuyruk oluşturmanın en basit yolu, iptal güvenli IRP kuyruk çerçevesini kullanmaktır. Sürücünüzde tercih ettiğiniz kuyruğa alma mekanizmasını uygulayabilirsiniz. Ardından IRP ekleme ve silme işlemlerinin yanı sıra kuyruğunuzu kilitleyip kilidini açan bir dizi geri çağırma yordamı kaydetmek için IoCsqInitialize'ı kullanabilirsiniz. İptal güvenli IRP kuyruk çerçevesi, IRP'leri sürücü kuyruğuna güvenli bir şekilde eklemek ve kaldırmak için geri çağırma rutinlerini otomatik olarak kullanan IoCsqInsertIrp, IoCsqRemoveIrp ve IoCsqRemoveNextIrp rutinlerini sağlar. Sistem, iptal edilen herhangi bir IRP'yi güvenli bir şekilde kaldırmak için geri çağırma rutinlerinizi de kullanır.
Ayrıca, bir dizi heterojen fiziksel cihaz için bir cihaz denetleyicisinin sürücüsünde IRP'ler için ek kuyruklar ayarlamayı da tercih edebilirsiniz. Örneğin, SCSI bağlantı noktası sürücüsü iç kuyruklar için cihaz kuyruğu nesnelerini kullanır. Bu sürücünün her ikisi de bir StartIo yordamına sahiptir ve bir HBA'yı temsil etmek için oluşturduğu cihaz nesnesiyle ilişkilendirilmiş cihaz kuyruğuna ek olarak cihaz kuyruğu nesnelerini tamamlayıcı kuyruklar olarak ayarlar. SCSI bağlantı noktası sürücüsü, HBA denetimli SCSI veri yolu üzerinde belirli mantıksal birimlere bağlı IRP'leri tutmak için ek cihaz kuyruklarını kullanır.
Sistem disket denetleme sürücüsü, StartIo rutinine sahip olmayan ve kilitli bir kuyruk kullanan bir sürücü örneğidir. Bu sürücü, sürücünün ve cihaza özel iş parçacığının G/Ç İstek Paketlerini ekleyip çıkardığı çift bağlantılı, kilitli bir kuyruk kurar.
Çekirdek, cihaz kuyruğu nesne türünü tanımlar. Yönetici destek bileşeni, kilitli kuyruklara IRP'leri eklemek ve kaldırmak için rutinler sağlar. Windows XP ve Windows'un sonraki sürümleri için sürücüler IRP kuyruğa alma işlemini işlemek için iptal güvenli IRP kuyruklarını kullanabilir.
Aşağıdaki bölümlerde cihaz kuyruklarının, kilitlenmiş kuyrukların ve iptal güvenli kuyrukların nasıl kullanılacağı açıklanmaktadır:
Cihaz Kuyruklarını Ayarlama ve Kullanma
Kilitlenmiş Kuyrukları Ayarlama ve Kullanma
Driver-Created İş Parçacığı ile Kilitlenmiş Kuyrukları Yönetme