Aracılığıyla paylaş


SD Kart Kesmelerini İşleme

Güvenli Dijital (SD) kart sürücülerinin kesme hizmeti rutinleri (ISR) yoktur ve kesme isteği (IRQ) kaynaklarını edinmezler. SD veri yolu sürücüsü donanım kesintilerini algılar ve keser ve ardından Secure Digital (SD) Sürücü Yığını Secure Digital (SD) Sürücü Yığını ve Açma ve Başlatma bölümlerinde açıklandığı gibi kesme bildirimi geri çağırma yordamı PSDBUS_CALLBACK_ROUTINE aracılığıyla bunları cihaz sürücüsüne bildirir.

Cihaz sürücüsünün kesme bildirim geri çağırma rutini bağlamında kesme işleme sürecini tamamlaması gerekmez. Sürücü geri çağırma yordamından geri dönebilir ve kendi bağlamında kesme işlemini tamamlayabilir. Sürücü kesme işlemini tamamladığında, SD veri yolu arabirimiyle birlikte sağlanan bir kesme bildirimi yordamına açık bir çağrı yaparak veri yolu sürücüsünü bilgilendirir. Kesme onayı yordamı hakkında daha fazla bilgi için bakınız PSDBUS_ACKNOWLEDGE_INT_ROUTINE. Otobüs şoförü bu çağrıyı aldığında kesmeyi yeniden etkinleştirir.

SD cihaz sürücüleri, çalıştıkları IRQ düzeyleri (IRQL'ler) ile ilgili olarak iki seçeneğe sahiptir. SD sürücüsü, yalnızca PASSIVE_LEVEL'de çalışabilir veya kesme bildirimi geri çağırma rutini bağlamında DISPATCH_LEVEL'de ve zamanın geri kalanında PASSIVE_LEVEL'de çalışabilir. SD aygıt sürücüsü yalnızca PASSIVE_LEVEL'de çalıştırıldığında, kesmeleri eşitleme sorumluluğunu veri yolu sürücüsü üstlenir. Cihazınız, sürücünüzün tasarımını basitleştireceği için kesme gecikmesinde katı sınırlar olmadan çalışabiliyorsa bu seçeneği belirleyin. Kesme eşitleme işlevini veri yolu sürücüsüne yüklemenin yanı sıra başka avantajları da vardır. Örneğin, sürücülerin kesintiye yanıt olarak sık sık veri aktarması gerekir. Sürücünün geri çağırma yordamı PASSIVE_LEVEL'de çalışıyorsa, zaman uyumsuz bir G/Ç işlemi yerine zaman uyumlu bir G/Ç işlemi yapmakta serbesttir. Geri çağrı rutini DISPATCH_LEVEL'de çalışırsa, sürücü, senkron G/Ç yapmadan önce daha düşük bir IRQL'de çalışana kadar beklemelidir.

SD cihaz sürücüsü, SD veri yolu arabirimini başlatırken çalıştırılacağı IRQL'i belirtir. Kesme bildirimi geri çağırma yordamında DISPATCH_LEVEL çalıştırmak için, sürücünün SDBUS_INTERFACE_PARAMETERS yapısının CallbackAtDpcLevel üyesini TRUE olarak ayarlaması ve bu yapıyı arabirim başlatma yordamına geçirmesi gerekir. Arabirim yordamının açıklaması için bkz. PSDBUS_INITIALIZE_INTERFACE_ROUTINE. Yalnızca PASSIVE_LEVEL'da çalıştırmak için, sürücünün CallbackAtDpcLevel'i FALSEolarak ayarlaması gerekir.