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.
Bu makalede, basit bir çekirdek modu sürücü çerçevesi (KMDF) tabanlı istemci sürücüsü yazmak için Microsoft Visual Studio ile sağlanan USB Kernel-Mode Sürücüsü şablonunu kullanacaksınız. İstemci sürücüsünü derleyip yükledikten sonra, istemci sürücüsünü Cihaz Yöneticisi'nde ve sürücü çıkışını bir hata ayıklayıcıda görüntüleyebilirsiniz.
Şablon tarafından oluşturulan kaynak kodu hakkında bir açıklama için bkz. USB istemci sürücüsü için KMDF şablon kodunu anlama.
Önkoşullar
Çekirdek modu sürücüsü geliştirmek, hata ayıklamak ve yüklemek için iki bilgisayara ihtiyacınız vardır:
- Windows 7 veya Windows işletim sisteminin sonraki bir sürümünü çalıştıran bir konak bilgisayar. Ana bilgisayar, sürücünüzü yazdığınız ve hatalarını ayıkladığınız geliştirme ortamınızdır.
- Windows Vista veya windows'un sonraki bir sürümünü çalıştıran bir hedef bilgisayar. Hedef bilgisayarda hata ayıklamak istediğiniz çekirdek modu sürücüsü var.
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
Yazılım gereksinimleri
- Ana bilgisayarınız geliştirme ortamınızı barındırıyor ve Visual Studio'ya sahip.
- Ana bilgisayarınızda en son Windows Sürücü Seti (WDK) vardır. Kit, KMDF sürücüsü geliştirmek, derlemek ve hatalarını ayıklamak için gereken üst bilgileri, kitaplıkları, araçları, hata ayıklama araçlarını ve belgeleri içerir. WDK'nin en son sürümünü edinmek için bkz. Windows Sürücü Seti'ni (WDK) indirme.
- Ana bilgisayarınız Windows için hata ayıklama araçlarının en son sürümüne sahiptir. WDK'den en son sürümü alabilir veya Windows için Hata Ayıklama Araçları'nı indirip yükleyebilirsiniz.
- Hedef bilgisayarınız Windows Vista veya windows'un sonraki bir sürümünü çalıştırıyor.
- Konak ve hedef bilgisayarlarınız çekirdek hata ayıklaması için yapılandırılmıştır. Daha fazla bilgi için bkz. Visual Studio'da Ağ Bağlantısı Kurma.
Donanım gereksinimleri
İstemci sürücüsünü yazacağınız bir USB cihazı alın. Çoğu durumda size bir USB cihazı ve donanım belirtimi sağlanır. Belirtim, cihaz özelliklerini ve desteklenen satıcı komutlarını açıklar. USB sürücüsünün işlevselliğini ve ilgili tasarım kararlarını belirlemek için belirtimlerini kullanın.
USB sürücü geliştirmeye yeni başladıysanız, WDK ile birlikte gelen USB örneklerini incelemek için OSR USB FX2 öğrenme setini kullanın. Öğrenme setini OSR Online'dan alabilirsiniz. USB FX2 cihazını ve bir istemci sürücüsü uygulamak için gerekli tüm donanım belirtimlerini içerir.
Microsoft USB Test Aracı (MUTT) cihazları da alabilirsiniz. MUTT donanımı JJG Technologies'ten satın alınabilir. Cihazda yüklü üretici yazılımı yüklü değil. Üretici yazılımını yüklemek için bu Web sitesinden MUTT yazılım paketini indirin ve MUTTUtil.exeçalıştırın. Daha fazla bilgi için paketin içerdiği belgelere bakın.
Okuma önerileri
- Tüm Sürücü Geliştiricileri için Kavramlar
- Cihaz düğümleri ve cihaz yığınları
- Windows'da sürücüleri kullanmaya başlama
- Kernel-Mode Sürücü Çerçevesi
- Penny Orwick ve Guy Smith tarafından yazılan Windows Driver Foundation ile Sürücü Geliştirme. Daha fazla bilgi için bkz. WDF ile Sürücü Geliştirme.
1. Adım: Visual Studio USB sürücü şablonunu kullanarak KMDF sürücü kodunu oluşturma
KMDF sürücü kodu oluşturma hakkında yönergeler için Bkz. Şablona dayalı KMDF sürücüsü yazma.
USB'ye özgü kod için Visual Studio'da aşağıdaki seçenekleri belirleyin:
- Yeni Proje iletişim kutusunda, üstteki arama kutusuna USB yazın.
- Orta bölmede Çekirdek Modu Sürücüsü, USB (KMDF) seçeneğini belirleyin.
- sonrakiseçin.
- Proje adı girin, bir kaydetme konumu seçin ve oluşturseçin.
Aşağıdaki ekran görüntüleri USB Kernel-Mode Sürücüsü şablonunun Yeni Proje iletişim kutusunu gösterir.
Bu makalede, Visual Studio projesinin adının "MyUSBDriver_" olduğu varsayılır. Aşağıdaki dosyaları içerir:
| Dosyalar | Açıklama |
|---|---|
| Public.h | İstemci sürücüsü ve USB cihazıyla iletişim kuran kullanıcı uygulamaları tarafından paylaşılan ortak bildirimler sağlar. |
| <Proje adı.inf> | İstemci sürücüsünü hedef bilgisayara yüklemek için gereken bilgileri içerir. |
| Trace.h | İzleme işlevlerini ve makrolarını bildirir. |
| Driver.h; Driver.c | Sürücü giriş noktalarını ve olay geri çağırma yordamlarını bildirir ve tanımlar. |
| Device.h; Device.c | Donanım hazırlama olayı için olay geri çağırma yordamını bildirir ve tanımlar. |
| Queue.h; Queue.c | Çerçevenin kuyruk nesnesi tarafından tetiklenen olay için bir olay geri çağırma yordamı bildirir ve tanımlar. |
2. Adım: Cihazınız hakkında bilgi eklemek için INF dosyasını değiştirme
Sürücüyü derlemeden önce, şablon INF dosyasını cihazınızla ilgili bilgilerle, özellikle donanım kimliği dizesiyle değiştirmeniz gerekir.
Çözüm Gezgini'ndekiSürücü Dosyaları'nın altında INF dosyasına çift tıklayın.
INF dosyasında üretici ve sağlayıcı adı, cihaz kurulum sınıfı vb. gibi bilgiler sağlayabilirsiniz. Sağlamanız gereken bilgilerden biri cihazınızın donanım tanımlayıcısıdır.
Donanım kimliği dizesini sağlamak için:
USB cihazınızı ana bilgisayarınıza takın ve Windows'un cihazı listelemesine izin verin.
Cihaz Yöneticisi'ni açın ve cihazınızın özelliklerini açın.
Ayrıntılar sekmesinde, Özellik'in altında Sabit Kimlikler'i seçin.
Cihazın donanım kimliği liste kutusunda görüntülenir. Seçin ve basılı tutun (veya sağ tıklayın) ve donanım kimliği dizesini kopyalayın.
Aşağıdaki satırdaki USB\VID_vvvv&PID_pppp yerine donanım kimliği dizenizi yazın.
[Standard.NT$ARCH$] %MyUSBDriver_.DeviceDesc%=MyUSBDriver__Device, USB\VID_vvvv&PID_pppp
3. Adım: USB istemci sürücü kodunu oluşturma
Sürücünüzü oluşturmak için:
- Visual Studio'da sürücü projesini veya çözümünü açma
- Çözüm Gezgini'nde çözümü seçip basılı tutun (veya sağ tıklayın) ve Configuration Manager'ı seçin.
- Configuration Manager'dan, ilgilendiğiniz derlemenin türüne karşılık gelen Etkin Çözüm Yapılandırması 'nı (örneğin, Hata Ayıkla veya Yayın) ve Etkin Çözüm Platformu'nun (örneğin, Win32) seçin.
- Derle menüsünden Çözümü Derleseçin.
Daha fazla bilgi için bkz. Sürücü Oluşturma.
4. Adım: Bilgisayarı test ve hata ayıklama için yapılandırma
Bir sürücüyü test etmek ve hata ayıklamak için, hata ayıklayıcıyı konak bilgisayarda ve sürücüyü hedef bilgisayarda çalıştırırsınız. Şimdiye kadar, sürücü oluşturmak için konak bilgisayarda Visual Studio'yu kullandınız. Ardından bir hedef bilgisayar yapılandırmanız gerekir. Hedef bilgisayarı yapılandırmak için Sürücü dağıtımı ve testi için bilgisayar sağlama başlığındaki yönergeleri izleyin.
5. Adım: Çekirdek hata ayıklaması için izlemeyi etkinleştirme
Şablon kodu, işlev çağrılarını izlemenize yardımcı olabilecek birkaç izleme iletisi (TraceEvents) içerir. Kaynak koddaki tüm işlevler, bir yordamın girişini ve çıkışını işaretleyen izleme iletileri içerir. Hatalar için izleme iletisi hata kodunu ve anlamlı bir dizeyi içerir. Sürücü projeniz için WPP izleme etkinleştirildiğinden, derleme işlemi sırasında oluşturulan PDB sembol dosyası izleme iletisi biçimlendirme yönergelerini içerir. Ana bilgisayar ve hedef bilgisayarları WPP izleme için yapılandırdığınızda, sürücünüz bir dosyaya veya hata ayıklayıcıya izleme iletileri gönderebilir.
Ana bilgisayarınızı WPP izleme için yapılandırmak için:
PDB sembol dosyasından izleme iletisi biçimlendirme yönergelerini ayıklayarak izleme iletisi biçimi (TMF) dosyaları oluşturun.
TMF dosyaları oluşturmak için Tracepdb.exe kullanabilirsiniz. Araç, WDK'nin <Windows Kits\10.0\bin\<architecture> yükleme> klasöründe bulunur. Aşağıdaki komut, sürücü projesi için TMF dosyaları oluşturur.
tracepdb -f <PDBFiles> -p <TMFDirectory>
-f seçeneği, PDB sembol dosyasının konumunu ve adını belirtir. -p seçeneği Tracepdb tarafından oluşturulan TMF dosyalarının konumunu belirtir. Daha fazla bilgi için bkz . Tracepdb Komutları.
Belirtilen konumda üç dosya (projede her .c dosyası için bir dosya) görürsünüz. Bunlara GUID dosya adları verilir.
Hata ayıklayıcısına aşağıdaki komutları yazın:
.load Wmitrace
Wmitrace.dll uzantısını yükler.
.chain
Hata ayıklayıcısı uzantısının yüklendiğini doğrulayın.
!wmitrace.searchpath +<TMF dosya konumu>
TMF dosyalarının konumunu hata ayıklayıcı uzantısının arama yoluna ekleyin.
Çıkış aşağıdakine benzer:
Trace Format search path is: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE;c:\drivers\tmf'
Hedef bilgisayarınızı WPP izleme için yapılandırmak için:
Hedef bilgisayarınızda Tracelog aracının olduğundan emin olun. Araç, WDK'nin <install_folder>Windows Kits\8.0\Tools\<arch> klasöründe bulunur. Daha fazla bilgi için bkz . Tracelog Komut Sözdizimi.
Bir Komut Penceresi açın ve yönetici olarak çalıştırın.
Aşağıdaki komutu yazın:
tracelog -start MyTrace -guid #c918ee71-68c7-4140-8f7d-c907abbcb05d -flag 0xFFFF -level 7-rt -kd
Komut, MyTrace adıyla bir izleme oturumu başlatır.
GUID bağımsız değişkeni, istemci sürücüsü olan izleme sağlayıcısının GUID'sini belirtir. GUID'yi Visual Studio Professional 2019 projesinde Trace.h dosyasından alabilirsiniz. Başka bir seçenek olarak, aşağıdaki komutu yazabilir ve GUID'yi bir .guid dosyasında belirtebilirsiniz. Dosya, GUID'yi kısa çizgi biçiminde içerir:
tracelog -start MyTrace -guid c:\drivers\Provider.guid -flag 0xFFFF -level 7-rt -kd
Aşağıdaki komutu yazarak izleme oturumunu durdurabilirsiniz:
tracelog -stop MyTrace
6. Adım: Sürücüyü hedef bilgisayara dağıtma
- Çözüm Gezgini penceresinde *<proje adı>*Paket öğesini seçip basılı tutun (veya sağ tıklayın) ve Özellikler'i seçin.
- Sol bölmede Yapılandırma Özellikleri > Sürücü Yükleme > Dağıtımı'na gidin.
- Dağıtımı etkinleştirin ve sürücü deposuna aktarımı işaretleyin.
- Uzak Bilgisayar Adı için hedef bilgisayarın adını belirtin.
- Yükle ve Doğrula'yı seçin.
- tamamseçin.
- Hata Ayıklama menüsünde Hata Ayıklamayı Başlat seçin veya klavyede F5 basın.
Uyarı
Donanım Kimliği Sürücü Güncelleştirmesi altında cihazınızın donanım kimliğinibelirtmeyin. Donanım kimliği yalnızca sürücünüzün bilgi (INF) dosyasında belirtilmelidir.
Visual Studio'da sürücüyü hedef sisteme dağıtma hakkında daha fazla bilgi için bkz. Test Bilgisayarına Sürücü Dağıtma.
Ayrıca, Aygıt Yöneticisi'ni kullanarak sürücüyü hedef bilgisayara el ile de yükleyebilirsiniz. Sürücüyü bir komut isteminden yüklemek istiyorsanız, şu yardımcı programlar kullanılabilir:
-
Bu araç Windows ile birlikte gelir. Windows\System32'dedir. Sürücüyü sürücü deposuna eklemek için bu yardımcı programı kullanabilirsiniz.
C:\>pnputil /a m:\MyDriver_.inf Microsoft PnP Utility Processing inf : MyDriver_.inf Driver package added successfully. Published name : oem22.infDaha fazla bilgi için bkz. PnPUtil Örnekleri.
-
Bu araç WDK ile birlikte gelir. Sürücüleri yüklemek ve güncelleştirmek için kullanabilirsiniz.
devcon update c:\windows\inf\MyDriver_.inf USB\VID_0547&PID_1002\5&34B08D76&0&6
7. Adım: Sürücüyü Cihaz Yöneticisi'nde görüntüleme
Cihaz Yöneticisi'ni açmak için aşağıdaki komutu girin:
devmgmtCihaz Yöneticisi'nin aşağıdaki düğüm için bir düğüm gösterdiğini doğrulayın:
Örnekleri
MyUSBDriver_Device
8. Adım: Çıkışı hata ayıklayıcıda görüntüleme
Visual Studio ilk olarak Çıkış penceresinde ilerleme durumunu görüntüler. Ardından Hata Ayıklayıcı Anında Penceresi açılır. İzleme iletilerinin konak bilgisayardaki hata ayıklayıcıda göründüğünü doğrulayın. Çıkış şöyle görünmelidir; burada "MyUSBDriver_" sürücü modülünün adıdır:
[3]0004.0054::00/00/0000-00:00:00.000 [MyUSBDriver_]MyUSBDriver_EvtDriverContextCleanup Entry
[1]0004.0054::00/00/0000-00:00:00.000 [MyUSBDriver_]MyUSBDriver_EvtDriverDeviceAdd Entry
[1]0004.0054::00/00/0000-00:00:00.000 [MyUSBDriver_]MyUSBDriver_EvtDriverDeviceAdd Exit
[0]0004.0054::00/00/0000-00:00:00.000 [MyUSBDriver_]DriverEntry Entry
[0]0004.0054::00/00/0000-00:00:00.000 [MyUSBDriver_]DriverEntry Exit