2011-02-08 20 views
5

Çekirdek modunda çalışan bir WFP belirtme çizgisi sürücüsü oluşturdum. Şimdi, bu sürücü ile kullanıcı kipinde çalışan GUI uygulamam arasında nasıl iletişim kuracağımı anlamaya çalışıyorum. Herhangi bir fikir?Çekirdek modu ve kullanıcı modu uygulaması arasındaki iletişim

  1. çizgisi sürücü portu 4444 tarihinde bir gelen bağlantı
  2. sürücüleri Kullanıcı tarafından bir mesaj göndermek (Bu sorumu bir parçası değildir) algılar: Ben istiyorum Tam olarak ne

    böyle bir şeydir mod uygulaması

  3. Uygulama, kullanıcıya bir bildirim gösterir ve bağlantıyı kabul etmeli/engellememizi sorar.
  4. Kullanıcı modu uygulaması, kullanıcının yanıtlama sürücüsüne verdiği yanıtı geri gönderir.

Teşekkürler!

cevap

4

LordDoskias'a katılıyorum. Bir aygıt nesnesi oluşturmanız ve Win32 ortamına erişmeniz gerekir. Sonra istek göndermek için CreateFile, ReadFile, WriteFile ve daha önce belirtilen DeviceIoControl kullanabilirsiniz.

Sürücüden uygulamaya bildirim almak için, inverted call model sözlüğünü kullanabilirsiniz. Bazı IRP'leri (belirtilen mekanizmalardan biriyle) aşağıya gönderirsiniz ve bunu eşzamansız bir şekilde (veya ayrı iş parçacıklarında) yaparsınız. Daha sonra sürücü, kullanıcı modu bileşenini bir şey hakkında bilgilendirmek zorunda kalmadan onları sarkıtıyor ve tamamlanmış IRP'yi döndürüyor. Alternatif yöntemler özü olan

, sürücü kullanıcı moduna bazı mesaj gönderebileceği doğrudan bir yolu yoktur

... bazı olay ayarlamak için vardır ve sürücü sırasının çeşit tutar ne olursa olsun UM isteği var uygulama.

+1

[Ters Çevirme Modeli] hakkında mükemmel bir makale okudum (http://www.osronline.com/article.cfm?id=94). Belki yardımcı olur. – QuangNHb

2

Kontrol Bu API çağrısı - ne yapardın Esasen DeviceIoControl

sonra GUI uygulama açmak ve yapılacak tamponlar vardır (farklı komutlar ve veri göndermek mümkün olacak, nesne yöneticisinde sürücü kayıt olan Bu) ve sonra bazı özel yapılmış IOCTL kodunu göndermek zorundasınız (WDK elkitabına bakınız).