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.
Boşaltılan ses için bir sürücü uyguladığınızda, boşaltılan ses akışlarını işleyebilen ve bu özelliği Windows ses sistemine kullanıma sunan bir sürücü geliştirirsiniz.
Bu konu başlığında, donanımdan boşaltılan ses akışlarını işleyebilen bir ses bağdaştırıcısı için geliştirilen bir ses sürücüsünün uygulama ayrıntıları açıklanmaktadır.
Bu bölümdeki bu ek konular, boşaltılan ses akışlarını işlemek üzere bir donanım ses altyapısı uygulayan bir ses bağdaştırıcısı için ses sürücüsü geliştirirken bilmeniz gereken sorunları ele almaktadır.
Boşaltılan Ses İşleme için Portcls Yardımcı Arabirimleri
Aktarılan Ses için Hata Raporlama
Donanım boşaltma - KS filtre topolojisi
Windows, ses akışlarını işlemek için yerleşik donanım ses altyapısı kullanabilen bir ses bağdaştırıcısı kullanımını destekler. Böyle bir ses bağdaştırıcısı geliştirirken, ilgili ses sürücüsünün bu gerçeği kullanıcı modu ses sistemine belirli bir şekilde sunması gerekir, böylece ses sistemi bu bağdaştırıcının ve sürücüsünün özelliklerini bulabilir, kullanabilir ve düzgün bir şekilde kullanıma sunmalıdır.
Düğüm tanımlayıcıları için KSNODETYPE_AUDIO_ENGINE GUID'i
Ses bağdaştırıcısı boşaltılan ses akışlarını işleyebilecek durumdaysa bağdaştırıcının ses sürücüsü, bağdaştırıcının KS filtresindeki bir düğümü kullanarak bu özelliği kullanıma sunar.
Ses bağdaştırıcısı boşaltılan ses akışlarını işleyebilecek durumdaysa bağdaştırıcının ses sürücüsü, bağdaştırıcının KS filtresindeki belirli bir düğümü kullanarak bu özelliği kullanıma sunar.
Ses akışı yolundaki her düğümün bir düğüm tanımlayıcısı vardır; yükten donanım kapalı olması için sürücünün Tür GUID'sini KSNODETYPE_AUDIO_ENGINE olarak ayarlaması gerekir.
Sürücünün bu düğüm için düğüm tanımlayıcısını nasıl yapılandırabileceğine ilişkin bir örnek aşağıda verilmişti:
typedef struct _KSNODE_DESCRIPTOR {
const KSAUTOMATION_TABLE *AutomationTable; // drv specific
const GUID *Type; // must be set to KSNODETYPE_AUDIO_ENGINE
const GUID *Name; // drv specific (KSNODETYPE_AUDIO_ENGINE?)
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
Ad GUID'i KSNODETYPE_AUDIO_ENGINE olarak ayarlandıysa, bu düğüm için varsayılan bir ad dizesi oluşturmanız gerekir. Ardından bu dizeyi ks.inf'ye eklersiniz, böylece sürücü yüklenirken dize MediaCategories kayıt defteri anahtarını doldurmak için kullanılabilir.
KSNODETYPE_AUDIO_ENGINE düğüm türü için GUID'nin tanımı aşağıdaki gibidir:
Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)
Daha fazla bilgi için bkz. ksmedia.h üst bilgi dosyası.
Yukarıdaki bilgilere dayanarak, bir miniport düğümü için tanımlayıcı aşağıdaki gibi görünebilir:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
Ses altyapıları için KSPROPSETID_AudioEngine KS özelliği kümesi
KSPROPSETID_AudioEngine özellik kümesi, donanım ses altyapılarını ve donanımdan boşaltılan ses işlemeyi desteklemek için kullanılır. Bu nedenle boşaltılan ses akışlarını işleyebilen bir bağdaştırıcının sürücüsü bu yeni özellik kümesindeki özellikleri desteklemelidir.
KSPROPSETID_AudioEngine özellik kümesi aşağıdaki gibi tanımlanır:
#define STATIC_KSPROPSETID_AudioEngine\
0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)
Bu özellik kümesindeki özelliklerin adları KSPROPERTY_AUDIOENGINE sabit listesinde tanımlanır ve sürücünün bu adları desteklemesi gerekir.
KSPROPSETID_AudioEngine özellik kümesindeki özellikler şunlardır:
KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE
KSPROPERTY_AUDIOENGINE_DESCRIPTOR
KSPROPERTY_AUDIOENGINE_DEVICEFORMAT
KSPROPERTY_AUDIOENGINE_GFXENABLE
KSPROPERTY_AUDIOENGINE_LFXENABLE
KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION
KSPROPERTY_AUDIOENGINE_MIXFORMAT
KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
KSPROPSETID_ Ses özellik kümesindeki gerekli özellikler
Sürücü, KSPROPSETID_AudioEngine özellik kümesindeki özellikleri desteklemeye ek olarak, KSPROPSETID_Audio özellik kümesinde aşağıdaki mevcut özellikleri de desteklemelidir:
Donanımdan boşaltılan ses işleme için sürücü desteğinin uygulanmasını tamamlamak için, özellikler KSPROPSETID_ Ses özellik kümesinde kullanılabilir.
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Bağlantı noktası sınıfı sürücü güncelleştirmeleri ve hata raporlama
Windows bağlantı noktası sınıfı sürücüsü, donanımdan boşaltılan ses işlemeye yönelik önceki bölümlerde açıklanan desteğe ek olarak, boşaltılan ses akışlarıyla çalışabilen bir sürücü geliştirmeyi basit hale getirmek için "yardımcı arabirimler" sağlar. Böyle bir sürücü arıza algıladığında, sürücünün hata hatalarını bildirmesine izin veren bir mekanizma vardır. Aşağıdaki konular yardımcı arabirimler ve hata raporlama hakkında daha fazla ayrıntı sağlar:
Boşaltılan Ses İşleme için Portcls Yardımcı Arabirimleri Donanımdan boşaltılan ses işlemeye yönelik önceki bölümlerde açıklanan desteğe ek olarak, Windows bağlantı noktası sınıfı sürücüsü, boşaltılan ses akışlarıyla çalışabilecek bir sürücü geliştirmeyi basit hale getirmek için "yardımcı arabirimler" de içerir. Böyle bir sürücü arıza algıladığında, sürücünün hata hatalarını bildirmesine izin veren bir mekanizma vardır. Aşağıdaki konular yardımcı arabirimler ve hata raporlama hakkında daha fazla ayrıntı sağlar: