Ses için Evrensel Windows Sürücüleri

Windows 10'da, birçok donanım türünde çalışacak evrensel bir ses sürücüsü yazabilirsiniz. Bu konu başlığında, bu yaklaşımın avantajları ve platformlar arasındaki farklar ele alınmaktadır. Windows, ses için Evrensel Windows sürücülerine ek olarak WDM gibi önceki ses sürücüsü teknolojilerini desteklemeye devam eder.

Ses için Evrensel Windows sürücülerini kullanmaya başlama

IHV'ler tüm cihazlarda (masaüstleri, dizüstü bilgisayarlar, tabletler, telefonlar) çalışan bir Evrensel Windows sürücüsü geliştirebilir. Bu, ilk geliştirme ve sonraki kod bakımı için geliştirme süresini ve maliyetini azaltabilir.

Bu araçlar Evrensel Windows sürücüleri geliştirmek için kullanılabilir:

  • Visual Studio 2015: "Hedef Platform" değerini "Evrensel" olarak ayarlayın. Sürücü geliştirme ortamını ayarlama hakkında daha fazla bilgi için ve WDKile sürücü oluşturma Windows donanım geliştirici belgelerine bakın.

  • APIValidator Aracı: Sürücünüzün çağırdığını API'lerin Evrensel Windows sürücüsü için geçerli olduğunu doğrulamak için ApiValidator.exe aracını kullanabilirsiniz. Bu araç, Windows 10 için Windows Driver Kit'in (WDK) bir parçasıdır ve Visual Studio 2015 kullanıyorsanız otomatik olarak çalışır. Daha fazla bilgi için bkz. APIValidator.

  • DDI başvuru belgeleri: DDI başvuru belgeleri, Evrensel Windows sürücüleri tarafından desteklenen DDI'leri gösterecek şekilde güncelleştirilir. Daha fazla bilgi için bkz. Ses Cihazları Başvurusu.

Evrensel Ses Sürücüsü Oluşturma

Adım adım yönergeler için WDKile sürücü oluşturma ve Windows donanım geliştirici belgelerine bakın. Adımların özeti aşağıdadır:

  1. Evrensel ses sürücünüz için başlangıç noktası olarak kullanmak üzere universal audio sysvad örneğini yükleyin. Alternatif olarak, boş WDM sürücü şablonuyla başlayın ve ses sürücünüz için gerektiğinde evrensel sysvad örneğinden kod ekleyin.

  2. Proje özelliklerinde Hedef Platform'un değerini "Evrensel" olarak ayarlayın.

  3. Yükleme paketi oluşturma: Hedefiniz masaüstü sürümleri için Windows 10 (Home, Pro, Enterprise ve Education) çalıştıran bir cihazsa Evrensel INF dosyası kullanın. Hedefiniz Windows 10 Mobile çalıştıran bir cihazsa PkgGen kullanarak bir .spkg dosyası oluşturun.

  4. Windows 10 Masaüstü sürümleri veya Windows 10 Mobile için sürücüyü derleyin, yükleyin, dağıtın ve hata ayıklayın.

Örnek Kod

Sysvad ve SwapAPO, Evrensel Windows sürücü örneklerine dönüştürüldü. Daha fazla bilgi için bkz. Örnek Ses Sürücüleri.

Ses için Evrensel Windows sürücüleri için Kullanılabilir Programlama Arabirimleri

Windows 10'dan başlayarak, sürücü programlama arabirimleri Windows'un OneCoreUAP tabanlı sürümlerinin bir parçasıdır. Bu ortak kümeyi kullanarak Evrensel Windows sürücüsü yazabilirsiniz. Bu sürücüler hem masaüstü sürümleri için Windows 10 hem de Windows 10 Mobile ve diğer Windows 10 sürümlerinde çalışır.

Aşağıdaki DDI'ler, evrensel ses sürücüleriyle çalışırken kullanılabilir.

Mevcut Ses Sürücüsünü Evrensel Windows sürücüsüne dönüştürme

Mevcut bir ses sürücüsünü Evrensel Windows sürücüsüne dönüştürmek için bu işlemi izleyin.

  1. Mevcut sürücü çağrılarınızın OneCoreUAP Windows üzerinde çalışıp çalışmayacağını belirleyin. Başvuru sayfalarının gereksinimler bölümünü denetleyin. Daha fazla bilgi için bkz. Ses Cihazları Referansı.

  2. Sürücünüzü Evrensel Windows sürücüsü olarak yeniden derle. Proje özelliklerinde Hedef Platform'un değerini "Evrensel" olarak ayarlayın.

  3. Sürücünüzün çağırdığını DDI'lerin Evrensel Windows sürücüsü için geçerli olduğunu doğrulamak için ApiValidator.exe aracını kullanın. Bu araç, Windows 10 için Windows Driver Kit'in (WDK) bir parçasıdır ve Visual Studio 2015 kullanıyorsanız otomatik olarak çalışır. Daha fazla bilgi için bkz. APIValidator.

  4. Sürücü OneCoreUAP'ın parçası olmayan arabirimleri çağırırsa, derleyici hataları bildirir.

  5. Bu çağrıları alternatif çağrılarla değiştirin veya bir kod geçici çözümü oluşturun veya yeni bir sürücü yazın.

Bileşenli ses sürücüsü yüklemesi oluşturma

Genel bakış

Daha sorunsuz ve daha güvenilir bir yükleme deneyimi oluşturmak ve bileşen hizmetini daha iyi desteklemek için sürücü yükleme işlemini aşağıdaki bileşenlere bölün.

  • DSP (varsa) ve kodlayıcı
  • APO
  • OEM Özelleştirmeleri

İsteğe bağlı olarak, DSP ve Codec için ayrı INF dosyaları kullanılabilir.

Bu diyagram, bileşenli ses yüklemesini özetler.

DSP sürücüsü, codec'i ve API'leri olan bileşenli ses yığını diyagramı.

Belirli bir sistem için her temel sürücü bileşenini özelleştirmek için ayrı bir uzantı INF dosyası kullanılır. Özelleştirmeler, parametrelerin düzenlenmesini ve sisteme özel diğer ayarların yapılmasını içerir. Daha fazla bilgi için bkz. Uzantı INF Dosyası kullanma.

Uzantı INF dosyası evrensel bir INF dosyası olmalıdır. Daha fazla bilgi için bkz. Evrensel INF Dosyası Kullanma.

INF dosyalarını kullanarak yazılım ekleme hakkında bilgi için bkz. Bileşen INF Dosyası Kullanma ve DCH Tasarım İlkeleri ve En İyi Yöntemler.

Bileşenli INF dosyalarını gönderme

APO INF paketleri, temel sürücü paketinden ayrı olarak İş Ortağı Merkezi'ne gönderilmelidir. Paket oluşturma hakkında daha fazla bilgi için bkz. Windows HLK Başlarken.

SYSVAD bileşenli INF dosyaları

Bileşenli INF dosyalarına bir örnek görmek için GitHub'da sysvad/TabletAudioSampleinceleyin.

Dosya adı Açıklama
ComponentizedAudioSample.inf Temel bileşenli örnek ses INF dosyası.
ComponentizedAudioSampleExtension.inf OEM özelleştirmeleri eklenen sysvad tabanının uzantı sürücüsü.
ComponentizedApoSample.inf Bir APO uzantısı için örnek INF dosyası.

Geleneksel INF dosyaları SYSVAD örneğinde kullanılabilir olmaya devam ediyor.

Dosya adı Açıklama
tabletaudiosample.inf Sürücüyü yüklemek için gereken tüm bilgileri içeren bir masaüstü monolitik INF dosyası.

APO satıcısına özgü ayarlama parametreleri ve özellik yapılandırması

Tüm APO satıcı sistemine özgü ayarlar, parametreler ve ayarlama değerleri bir uzantı INF paketi aracılığıyla yüklenmelidir. Çoğu durumda bu, INF AddReg yönergesiile basit bir şekilde gerçekleştirilebilir. Daha karmaşık durumlarda bir ayarlama dosyası kullanılabilir. 

Temel sürücü paketlerinin çalışabilmesi için bu özelleştirmelere bağlı olmaması gerekir (tabii ki işlevsellik azaltılabilir). 

UWP Ses Ayarları AP'leri

Son kullanıcı kullanıcı arabirimini uygulamak için Windows Evrensel Ses sürücüsü için Donanım Destek Uygulaması (HSA) kullanın. Daha fazla bilgi için bkz. Donanım Destek Uygulaması (HSA): Sürücü Geliştiricileriiçin adımlar.

Program aracılığıyla UWP Donanım Destek Uygulamalarını başlatma

Bir sürücü olayına (örneğin, yeni bir ses cihazı bağlandığında) bağlı olan bir UWP Donanım Destek Uygulamasını program aracılığıyla başlatmak için Windows Kabuğu API'lerini kullanın. Windows 10 Kabuk API'leri, kaynak etkinleştirmeye dayalı olarak veya doğrudan IApplicationActivationManageraracılığıyla UWP kullanıcı arabirimini başlatmak için bir yöntemi destekler. UWP uygulamalarının otomatik olarak başlatılması hakkında daha fazla ayrıntıya Windows 10 UWP uygulamalarını başlatmayı otomatikleştirmebölümlerinde ulaşabilirsiniz. 

AudioModules API'nin APO ve cihaz sürücüsü satıcıları tarafından kullanımı

Ses Modülleri API'si/DDI, bir UWP uygulaması veya kullanıcı modu hizmeti arasında çekirdek sürücüsü modülüne veya DSP işleme bloğuna geçirilen komutlar için iletişim aktarımını (protokol değil) standartlaştırmak üzere tasarlanmıştır. Ses Modülleri, modül numaralandırmasını ve iletişimini desteklemek için doğru DDI'yi uygulayan bir sürücü gerektirir. Komutlar ikili olarak geçirilir ve yorum/tanım oluşturucuya bırakılır. 

Ses Modülleri şu anda bir UWP uygulaması ile ses altyapısında çalışan bir SW APO arasında doğrudan iletişimi kolaylaştıracak şekilde tasarlanmamıştır.

Ses modülleri hakkında daha fazla bilgi için bkz. Ses Modülü İletişimi Uygulama veses cihazı modüllerini yapılandırma ve sorgulama .

APO HWID dizeleri oluşturma

APO Donanım Kimlikleri hem standart bilgileri hem de satıcı tanımlı dizeleri içerir.

Bunlar aşağıdaki gibi oluşturulur:

SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)

Nerede:

  • v(4), APO cihaz satıcısının 4 karakterli tanımlayıcısıdır. Bu, Microsoft tarafından yönetilecektir. 
  • a(4), APO satıcısı tarafından tanımlanan APO için 4 karakterli tanımlayıcıdır. 
  • n(4), üst cihazın alt sistemi satıcısının PCI SIG tarafından atanan 4 karakterli tanımlayıcısıdır. Bu genellikle OEM tanımlayıcısıdır.
  • s(4), üst cihaz için 4 karakterli satıcı tanımlı alt sistem tanımlayıcısıdır. Bu genellikle OEM ürün tanımlayıcısıdır.

Sürücü güncellemesi için Plug and Play INF sürümü ve tarih değerlendirmesi

Windows Tak Çalıştır sistemi, birden çok sürücü mevcut olduğunda hangi sürücünün yükleneceğini belirlemek için tarihi ve sürücü sürümünü değerlendirir. Daha fazla bilgi için bkz. Windows Sürücüleri Nasıl Derecelendirir.

En son sürücünün kullanılmasına izin vermek için, sürücünün her yeni sürümü için tarihi ve sürümü güncelleştirin.

APO sürücüsü kayıt defteri anahtarı

Üçüncü taraf tanımlı ses sürücüsü/APO kayıt defteri anahtarları için HKR kullanın.

UWP <-> APO iletişimini kolaylaştırmak için Windows Hizmeti kullanma

Windows Hizmeti, API'ler gibi kullanıcı modu bileşenlerinin yönetimi için kesinlikle gerekli değildir. Ancak, tasarımınız UWP <-> APO iletişimini kolaylaştırmak için bir RPC sunucusu içeriyorsa, bu işlevselliğin ses motorunda çalışan APO'yu denetleyen bir Windows Hizmetinde uygulanmasını öneririz. 

Windows 10 Desktop için Sysvad Evrensel Ses Örneği Oluşturma

Windows 10 masaüstü için sysvad örneğini derlemek için aşağıdaki adımları tamamlayın.

  1. Masaüstü inf dosyasını (tabletaudiosample.inf) bulun ve üretici adını "Contoso" gibi bir değere ayarlayın

  2. Çözüm Gezgini'nde 'sysvad' Çözümü'ne basılı tutun (veya sağ tıklayın) ve Configuration Manager'ı seçin. Windows'un 64 bit sürümüne dağıtıyorsanız hedef platformu x64 olarak ayarlayın. Yapılandırma ve platform ayarlarının tüm projeler için aynı olduğundan emin olun.

  3. Sysvad çözümündeki tüm projeleri derleyin.

  4. Derlemeden derlemenin çıkış dizinini bulun. Örneğin, aşağıdaki gibi bir dizinde bulunabilir:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Sysvad sürücüsünü yüklemek istediğiniz sisteme aşağıdaki dosyaları kopyalayın:

Dosya Açıklama
TabletAudioSample.sys Sürücü dosyası.
tabletaudiosample.inf Sürücüyü yüklemek için gereken bilgileri içeren bir bilgi (INF) dosyası.
sysvad.cat Katalog dosyası.
SwapAPO.dll API'leri yönetmek için bir kullanıcı arabirimi için örnek sürücü uzantısı.
KeywordDetectorAdapter.dll Örnek anahtar sözcük algılayıcısı.

Sürücüyü yükleme ve test edin

Hedef sistemde PnpUtil kullanarak sürücüyü yüklemek için bu adımları izleyin.

  1. Yönetici komut istemini açın ve sürücü dosyalarını kopyaladığınız dizine aşağıdakileri yazın.

    pnputil -i -a tabletaudiosample.inf

  2. Sysvad sürücüsü yüklemesi tamamlanmalıdır. Herhangi bir hata varsa ek bilgi için bu dosyayı inceleyebilirsiniz: %windir%\inf\setupapi.dev.log

  3. Cihaz Yöneticisi'ndeki Görünüm menüsünde Türe göre cihazlar'ı seçin. Cihaz ağacında Microsoft Sanal Ses Cihazı (WDM) - Sysvad Örneği'ni bulun. Bu genellikle Ses, video ve oyun denetleyicileri düğümü altındadır.

  4. Hedef bilgisayarda Denetim Masası'nı açın ve Donanım ve Ses'e>Ses cihazlarını yönetin. Ses iletişim kutusunda Microsoft Sanal Ses Cihazı (WDM) - Sysvad Örneği olarak etiketlenmiş hoparlör simgesini seçin, ardından Varsayılanı Ayarla'yı seçin, ancak Tamam'ı seçmeyin. Bu, Ses iletişim kutusunu açık tutar.

  5. Hedef bilgisayarda bir MP3 veya başka bir ses dosyası bulun ve çalmak için çift tıklayın. Ardından Ses iletişim kutusunda, Microsoft Sanal Ses Cihazı (WDM) - Sysvad Örnek sürücüsüyle ilişkili ses düzeyi göstergesinde etkinlik olduğunu doğrulayın.