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, üst düzey bir sürücü genellikle IRP'ler için herhangi bir iç sürücü kuyruğuna sahip değildir. Böyle bir sürücünün DispatchReadWrite yordamı, IRP'leri Sürücü Yığınından Aşağı Geçirme bölümünde açıklandığı gibi IoCompletion yordamını ayarladıktan sonra, büyük olasılıkla düşük sürücülere geçerli parametrelerle IRP'leri geçirebilir.
Ancak, SCSI sınıf sürücüsünün DispatchReadWrite yordamı, SCSI bağlantı noktası/miniport sürücü çiftine ana işlev kodu IRP_MJ_READ veya IRP_MJ_WRITE bir IRP göndermeden önce gerekirse büyük aktarım isteklerini bölmeden sorumludur. Daha fazla bilgi için bkz. Depolama Sınıfı Sürücüsünün SplitTransferRequest Yordamı.
Daha üst düzey bir sürücü, bazı kısmi aktarımlar istemek üzere DispatchReadWrite yordamında sonraki-alt sürücü için ayarladığı bir veya daha fazla IRP ayırırsa, DispatchReadWrite yordamının sürücü tarafından ayrılan her IRP ile IoSetCompletionRoutine çağrısı yapması gerekir. IoCompletion yordamının sürücü tarafından ayrılan tüm IRP'leri serbest bırakabilmesi ve sonunda özgün isteği tamamlayabilmesi için sürücünün her kısmi aktarım işleminde ne kadar veri aktarıldığını izlemek için IoCompletion yordamını kaydetmesi gerekir.
Temel sürücü çıkarılabilir medya cihazını denetlerse, üst seviyeli sürücü tarafından ayrılan tüm IRP'lerin bir iş parçacığı bağlamı olmalıdır. bir iş parçacığı bağlamı ayarlamak için, ayırma sürücüsünün Irp-Tail.Overlay'ı> ayarlaması gerekir. Gelen aktarım IRP'sindeki aynı değerden yeni ayrılan her IRP'deki iş parçacığı. Daha fazla bilgi için bkz . Çıkarılabilir Medyayı Destekleme.
Temel alınan cihaz sürücüsü, hata içeren bir kısmi aktarım için bir IRP döndürürse, IoCompletion yordamı kısmi aktarım isteğini yeniden deneyebilir veya döndürülen hatayla ayarlanmış olan G/Ç durum bloğunu kullanarak özgün IRP'yi tamamlayabilir. Bu durumda, üst düzey sürücünün ayırdığı tüm IRP'leri ve belleği serbest bırakmalıdır.
Daha üst düzey bir sürücünün DispatchReadWrite yordamı kısmi aktarım işlemleri için bellek ayırırsa ve ayırmaya sürücünün IoCompletion yordamı (veya temel cihaz sürücüsü) tarafından erişilirse, DispatchReadWrite yordamı bu belleği sayfasız havuzdan ayırmalıdır.