Microsoft Stocks Up: Windows sürücüsünün Rust ile Geliştirilmesi

Microsoft yavaş yavaş Windows çekirdeğine entegre olur ve Windows sürücüsünün gelişimini yavaş yavaş değiştirir. Microsoft bir ara dengeyi izler.

Windows çekirdek API'sının karmaşıklığı nedeniyle, Windows sürücüsü programlamasının mevcut durumunu özetleyen Surface geliştirme ekibi tarafından bir blog yayınında Microsoft'a göre, tüm pas tasarım süreci tamamlanana kadar zaman alacaktır. Her durumda, şirket ayarlanmış kalmak istiyor, çünkü Microsoft için Rust gibi depolama geçirmez diller güvenli yazılım geliştirmenin geleceğini temsil ediyor. Ayrıca güvenlik panoraması her düzeyde güvenilirlik ve güvenlik garantisi gerektirir.

Rust programcıları şu anda Microsoft tarafından sağlanan Rust Project Github Deposuna (Windows-Drives-GRS) içe aktarabilir, bunları Windows sürücü kitinde (WDK) kargo-wdk aracı ile C. C. olarak kullanın, her ikisi de daha rahat çalışmalıdır.

Microsoft Visual Studio'da C'de Windows Driver'ı yazmak için çeşitli modeller mevcuttur. Rust ile aynı şekilde geliştirme yapmak için Microsoft şimdi yük-wadk yükünü tanıttı. Zaten gerekli tüm bağlantıları getirmiş, pasajlar ve bağımlılıklar oluşturmuş olan boş sürücü projeleri oluşturmak için kullanılabilir. Buna ek olarak, Infvenif gibi Visual Studio-Call WDK araçlarında C'de bir sürücünün oluşturulmasına kargo-wdk-sinilasyon.

Ekran görüntüsü terminali

Kargo-wdk yükünün genişlemesi eylemde.

(Resim: Microsoft)

Microsoft, Cargo-WDK'nın bir örnek kullanarak nasıl çalıştığını gösterir. İçinde, geliştiriciler cargo wdk new –kmdf KMDF sürücü modeli. Girişiyle cargo wdk build Cargo-wdk, Infverif aracını sürücünün INF dosyası aracılığıyla gerçekleştirirse ve Visual Studio'da bulunan tüm hataları gösterirse. Örnekte, Inf dosyası nihayet doğrudur, kargo-wdk tekrar gerçekleştirilir ve sürücünün ilgili sertifikalarla birlikte verilmesini sağlar.

Orta vadede, kargo-wdk ekibi otomatik WDK kurulumları, NT_target_Veurs desteği, ek sürücüler ve tam ARM64 desteği gibi özellikleri entegre etmek istiyor. Uzun vadede Microsoft, bir yükleme ortamında aynı derleme araçlarına ve görsel çalışma yapılandırma seçeneklerine erişim sunmayı planlıyor.

Kargo-wdk'e ek olarak, repo da aşağıdaki hoparlörleri de içermektedir:

  • WDK-BUILD: WDK'nın aşağı akışını çalıştıran ve pas bağlama üreten bir mal inşaat komut dosyasının yapılandırılması için bir kitapçı.
  • WDK-SYS: Arılar için doğrudan FFI Inbumn WDK'da mevcuttur.
  • WDK: WDK'da bulunan arılar ile güvenli deyimsel bağ.
  • WDK-Panic: WDK ile oluşturulan programlar için panik yöneticisinin standart uygulaması
  • Wdk alloc: Sürücüler için küresel bir tahsisatçı.
  • WDK-Macro: WDK-SY'lerin doğrudan bağlantısı ile etkileşimi kolaylaştıran bir makro koleksiyonu.

Şu anda, Windows-Driver-GRS, Windows için pas sürücülerini programlamak için tüm tuğlaları içerir, ancak dikkate değer miktarlarda güvenli olmayan pas kodu hala gereklidir. Blog'a göre, Insecure Rust, güçlü bir test, sıfır maliyetle soyutlamalar ve yabancı fonksiyon arayüzü (FFI) aracılığıyla iyi uyumluluk gibi avantajlar sunar. Ancak uzun vadede, bir Windows sürücüsünün çoğunu korumak için geliştiriciler mümkün olmalıdır.

Bu amaçla Microsoft, şimdiye kadar sadece daha statik analizlerle tanınan belirli hata türlerini önlemek için Rust'tan tür ve kredi kontrol sistemini kullanmak istiyor. Ayrıca, deponun alanı sürekli olarak genişletilmelidir. Buna ek olarak, gerekli belirsiz kod bloklarının sayısını azaltmak ve derleme süresi boyunca güvenliği artırmak için çekirdek modundaki ve DDI'daki yapılar için güvenli soyutlamalar olmalıdır.

Yüzey ekibine ek olarak, diğer Microsoft departmanları da güvenli yapılar ve arılar geliştirmeye kararlıdır. Bunlar Windows Driver Framework'ün (WDF) ötesine geçer ve sürücünün gelişiminde Windows çekirdeği ve üçüncü taraf tedarikçilerinin geliştirilmesinde kullanılabilir. Bu çalışmaların bazıları zaten Windows çekirdeğine dahil edilmiştir.


(DSÖ)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir