Aracılığıyla paylaş


Ses Oturumları

ses oturumu, WASAPI istemcisinin toplu olarak yönetebileceği ilgili ses akışları grubudur. İstemciler her oturumun ses düzeyini ve sessize alma durumunu denetleyebilir. Sistem, oturumdaki tüm akışlara istemci tarafından belirtilen birimi uygular ve ayarları sessize alır.

İstemci bir ses akışını başlatırken ses akışını bir ses oturumuna atar. Daha fazla bilgi için bkz. IAudioClient::Initialize.

Ses oturumu, işleme akışlarını veya yakalama akışlarını içerir, ancak ikisini birden içermez. Varsayılan olarak, bir işleme oturumu için birim ve sessiz ayarları sistem yeniden başlatmalarında kalıcıdır. Yakalama oturumu için ses düzeyi ve sessiz ayarları kalıcı değildir. (Geri döngü modunda çalışan akışları içeren bir oturum, yakalama oturumuyla aynı şekilde ele geçirilir. Yani, oturum ayarları kalıcı değildir. Geri döngü modu hakkında daha fazla bilgi için bkz. Geri Döngü Kaydı.)

Her ses akışı tam olarak bir oturuma aittir. İstemci, akış nesnesini başlatırken belirli bir oturuma ses akışı atar. Akış, akışın ömrü boyunca oturumdaki üyeliğini korur. Bir akış nesnesi oluşturulduktan sonra, bir istemci nesneye son sayılan başvuruyu serbest bırakana kadar nesne var olur ve nesne silinir.

İstemci mevcut bir akışın atandığı oturumu değiştiremese de, akışı silerek (tüm başvuruları yayınlayarak), silinen akışı değiştirmek için yeni bir akış oluşturarak ve yeni akışı başka bir oturuma atayarak benzer bir etki elde edebilir.

Her işleme oturumu, belirli birses uç noktası cihazı üzerinden çalan genel karışımı oluşturan akışların bir alt kümesini temsil eder. Genel karma, cihazı paylaşan tüm uygulamalardan tüm oturumları birleştirir.

Sık sık, birkaç akışı olan bir uygulama tüm akışlarını aynı oturuma atar. Ancak, uygulama bir seçenek olarak farklı oturumlara farklı akışlar atayabilir. Uygulamanın bir oturuma açıkça atamadığı tüm akışlar varsayılan oturuma aittir.

Tipik ses uygulamaları, oturumlar için ses düzeyini ve sessiz ayarlarını değiştirmekten kaçınmalıdır. Bunun yerine, kullanıcılar bu ayarları denetim programlarının kullanıcı arabirimleri aracılığıyla denetler. Örneğin, Windows Vista'da, Sndvol.exesistem tarafından sağlanan program, sistemdeki her etkin veya son etkin işleme oturumu için bir birim denetimi görüntüler ve denetimi sessize alır. Bu denetimler aracılığıyla kullanıcılar sistemdeki tüm oturumların ses düzeyini ve sesini kapatma ayarlarını yapabilir.

Sndvol programı şu anda yalnızca ses işleme uç noktası cihazları için birim denetimlerini görüntüler. Ses yakalama cihazları için ses denetimlerini görüntülemez.

Oturum, bir veya daha fazla etkin akış içeriyorsa etkindir. Etkin akış, çalışıyor durumundadır. Etkin olmayan akış, durduruldu durumunda. Bir oturum, ilk akışı etkin olduğunda etkin hale gelir. Son etkin akışı etkin olmadığında oturum devre dışı olur. Bir oturum belirli bir süre devre dışı bırakıldıktan sonra, sistem oturumun durumunu etkin değil durumundan süresi dolmak üzere değiştirir.

Sndvol, tüm etkin ve etkin olmayan işleme oturumları için birim ve sessiz denetimlerini görüntüler. Sndvol, oturumun durumu etkin değil durumundan süresi dolmaya başladığında veya oturum sona erdiğinde oturumun birim ve sessiz denetimlerini kaldırır. (Bir oturum, akışların sonuncusu silindiğinde sonlandırılır; diğer bir ifadeyle istemci, oturumda kalan son akış nesnesine ilişkin son başvuru sayısını serbest bıraktığında.) Bu kuralın tek istisnası sistem bildirimi sesleridir. Sndvol, bu seslerin oturumun durumundan bağımsız olarak sistem bildirimi sesleri için ses düzeyi ve sesi kapatma denetimlerini her zaman görüntüler.

Genellikle bir akış, yalnızca akışı oluşturan uygulamayı içeren işleme yayılan bir oturuma aittir. Ancak, uygulamalar iki veya daha fazla işlemden gelen akışları birleştiren işlemler arası oturumlar tanımlama seçeneğine sahiptir.

WASAPI öncelikle işlemler arası oturumları destekler, böylece:

  • Sndvol programı, tüm uygulamalarda sistem bildirimi seslerini yönetmek için kullanıcıya tek bir birim denetimi sunabilir.
  • Bir işlemde çalışan bir medya yürütücü, korumalı içeriği başka bir işlemde çalışan bir şifre çözme programına akışla aktarabilir.

İşleme özgü işleme oturumlarının denetim ayarlarına benzer şekilde, işlemler arası işleme oturumlarının denetim ayarları varsayılan olarak sistem yeniden başlatmaları arasında kalıcıdır. WASAPI, bu davranışı öncelikle sistem bildirimi seslerinin yararına sağlar. Uygulama karışımı zaman içinde değiştiğinden, kullanıcının ses düzeyini ve sessize alabilmesi gerekir.

Sndvol programı, her oturum için birim denetimini bir görünen ad ve simgeyle etiketler. İstemcinin oturuma açıkça bir görünen ad ve simge atama seçeneği vardır. İstemci bu öğeleri sağlamazsa, Sndvol bunun yerine varsayılan bir ad ve varsayılan simge görüntüler. Varsayılan ad, uygulama penceresinin başlığı gibi bilgileri içerir. Varsayılan simge, uygulama penceresinin simgesidir. Yalnızca işleme özgü oturumlarda bu varsayılanlar kullanıcılara anlamlı bilgiler sağlar. İşlemler arası oturumun birden fazla uygulamayla ilişkilendirilebileceğini unutmayın. Bu durumda, yalnızca istemci tarafından sağlanan bir görünen ad ve simge anlamlıdır.

bir işleme oturumu için birim ve sessiz ayarları varsayılan olarak sistem yeniden başlatmalarında kalıcı olsa da, istemci tarafından sağlanan görünen ad ve simge değildir. Sndvol'ün istemci tarafından sağlanan adı ve simgeyi görüntülediğinden emin olmak için, istemcinin oturuma ilk akışı atayışı sırasında oturuma ad ve simgeyi açıkça ataması gerekir. Sistem, yalnızca oturum sonlandırana kadar oturum için görünen adı ve simgeyi korur.

Her oturum bir oturum GUID'i tarafından tanımlanır. İstemci bir akışı açtığında, istemci bu akışı belirli bir oturuma atar. İstemci, bu oturumu tanımlamak için aşağıdaki iki bilgi parçasını sağlar:

  • Oturum GUID'i.
  • Oturumun işlemler arası mı yoksa işleme özgü bir oturum mu olduğu; işleme özgü bir oturumda yalnızca istemcinin işleminden akışlar bulunur.

Bu bilgiler, belirli bir oturumu aynı bilgisayardaki diğer tüm oturumlardan ayırt etmek için yeterlidir. İşleme özgü bir oturumun oturum GUID'i oturumu yalnızca oturumun sahibi olan işlem kapsamında benzersiz olarak tanımlar. Buna karşılık, işlemler arası oturum için oturum GUID'si, bilgisayarda çalışan tüm işlemler kapsamında benzersizdir.

İşleme özgü bir oturum söz konusu olduğunda sistem, oturumu bilgisayar kapsamında benzersiz olarak tanımlamak için oturum GUID'si ve işlem kimliğinin bir bileşimini kullanır. Bu nedenle, iki farklı işlemdeki istemciler kendi akışlarını özdeş oturum GUID'lerine sahip işleme özgü iki oturuma atarsa, sistem işlem kimlikleri farklı olduğundan oturumları ayrı olarak ele alır. Ayrıca, işlemler arası oturum bir veya daha fazla işleme özgü oturumla aynı oturum GUID'sini kullanıyorsa sistem, aynı oturum GUID'sini paylaşsalar bile işlemler arası oturumu işleme özgü oturumlardan ayrı olarak ele alır.

Örneğin, Windows Vista'da, Windows multimedya waveOutXxx işlevleri ve DirectSound gibi üst düzey API'ler genellikle oluşturdukları ses akışlarını oturum GUID değeri GUID_NULL tarafından tanımlanan varsayılan işleme özgü oturumlara atar. Bu API'lerin istemcileri için, oturumlar aynı oturum GUID'lerine sahip olsa bile, her istemci işlemi için varsayılan oturum diğer istemci işlemleri için varsayılan oturumlardan ayrıdır. Ayrıca, bir veya daha fazla uygulama GUID_NULL oturum GUID değeriyle tanımlanan işlemler arası oturuma akış atarsa, sistem bu işlemler arası oturumu aynı oturum GUID'sini paylaşan varsayılan, işleme özgü oturumlardan ayrı olarak değerlendirir. Buna göre, Sndvol programı her istemcinin varsayılan, işleme özgü oturumu için ayrı bir birim denetimi görüntüler ve oturum varsa GUID_NULL oturum GUID değeri tarafından tanımlanan işlemler arası oturum için ek bir birim denetimi görüntüler.

Her oturum yalnızca bir ses uç noktası cihazıyla ilişkilendirilir. İki oturum aynı oturum GUID'lerine ve işlem kimliklerine sahipse ancak farklı cihazlarla ilişkiliyse, sistem iki oturumu ayrı olarak ele alır. Bir yakalama akışı yalnızca bir yakalama cihazıyla ilişkilendirilebildiği ve işleme akışının yalnızca bir işleme cihazıyla ilişkilendirilebildiği için oturum hiçbir zaman hem yakalama hem de işleme akışlarını içeremez.

Daha önce belirtildiği gibi, bir oturumun birim ve sessiz ayarları sistem yeniden başlatmalarında kalıcıdır. Bir uygulamanın iki veya daha fazla örneği, aynı oturum GUID'lerine sahip işleme özgü oturumlar oluşturabilir. Sndvol programı aracılığıyla, kullanıcı bu oturumların her biri için farklı birim ve sessiz ayarları seçebilir. Bu oturumlar sonlandırıldıktan sonra sistem, bu oturumlardan yalnızca birinin (sonlandırılan son oturum) denetim ayarlarını korur. Daha sonra, uygulamanın yeni bir örneği daha önce olduğu gibi aynı oturum GUID'sine sahip işleme özgü bir oturum oluşturursa, bu oturum daha önce kaydedilen birimi devralır ve sesi kapatma ayarlarını devralır.

Bir uygulama, başka bir ilgisiz uygulamaya ait olan bir oturumun birim düzeyini denetlemeye veya buna akış eklemeye çalışmamalıdır. Ayrıca, bir uygulama bildirim sesleri için sistem tarafından yönetilen oturumun ses düzeyini denetlemeye çalışmamalıdır. Ancak uygulama, PlaySound işlevini çağırarak bildirim sesleri için sistem oturumu üzerinden ses çalabilir. Daha fazla bilgi için bkz. Eski Ses Uygulamaları için Bildirim Sesleri.

Bir uygulama, oturumun durumu değiştiğinde bildirim almak için kaydolabilir. Daha fazla bilgi için bkz. Ses Oturumu Olayları.

Nadir durumlarda, işleme özgü bir oturum oluşturan bir uygulamanın, Sndvol'da tek bir birim denetimi altında iki veya daha fazla uygulama örneği için işleme özgü oturumların denetimini birleştirmesi gerekebilir. Daha fazla bilgi için bkz. Gruplandırma Parametreleri.

Programlama Kılavuzu