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.
AllocateAdapterChannel denetimi bir sürücünün AdapterControl yordamına aktardığında, sürücü sistem DMA denetleyicisine ve bir dizi harita yazmaçlarına "sahip olur". Ardından, sürücü aktarım işlemi için cihazını ayarlamadan önce sürücü tarafından ayrılan ortak arabelleği kullanacak şekilde sistem DMA denetleyicisini ayarlamak için MapTransfer çağrısı yapmalıdır.
Sürücü MapTransfer'a aşağıdaki parametreleri sağlar:
IoGetDmaAdapter tarafından döndürülen bağdaştırıcı nesne işaretçisi
Sürücü tarafından ayrılan ortak arabelleği açıklayan MDL işaretçisi
AllocateAdapterChannel tarafından sürücünün AdapterControl rutinine geçirilen MapRegisterBase tanıtıcısı
Sürücü tarafından ayrılan ortak arabelleğin bayt cinsinden boyutunu gösteren bir değişken (Uzunluk) işaretçisi
Aktarım işleminin yönünü gösteren boole değeri (sistem belleğinden cihaza istenen aktarım için TRUE)
MapTransfer , sistem DMA'sını kullanan sürücülerin yoksayması gereken mantıksal bir adres döndürür. MapTransfer denetimi döndürdüğünde, sürücü DMA işlemi için cihazını ayarlamalıdır. Sürücü MapTransfer'ı yalnızca bir kez çağırır, ancak istenen aktarım yapılana kadar ortak arabelleği ile kilitli kullanıcı arabelleği arasında veri kopyalamaya devam eder.
Sürücü, ortak arabellekte şu anda aktarılacak bayt sayısını belirlemek için ReadDmaCounter'ı çağırabilir; Sürücü daha sonra ortak arabelleği kullanıcı verileriyle doldurmaya devam edebilir veya DMA işleminin yönüne bağlı olarak ortak arabelleğindeki verileri kullanıcı arabelleğine kopyalayabilir.
Aktarım tamamlandığında veya sürücünün IRP için hata durumu döndürmesi gerekiyorsa, sürücü sistem DMA denetleyicisinde önbelleğe alınan tüm verilerin sistem belleğine okunduğundan veya cihaza yazıldığından emin olmak için FlushAdapterBuffers'ı çağırır. Ardından sürücü freeAdapterChannel'i çağırarak sistem DMA denetleyicisini herhangi bir sürücü (kendisi dahil) tarafından kullanılmak üzere serbest bırakmalıdır.