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.
Yerleşik bellek veya diğer cihaza bağımlı depolama yöntemleri için ayırıcı gerektiren filtreler ayırıcı özelliklerini ve yöntemlerini destekleyerek belirli bir ayırıcı sağlayabilir. Daha fazla bilgi için bkz. KSPROPERTY_STREAM_ALLOCATOR.
Filtre, ayırıcı için çerçeveleme seçeneklerini belirten KSCREATE_REQUEST_ALLOCATOR türünde bir IRP_MJ_CREATE alır. Minidriver ayırıcı oluşturma yordamı , KsValidateAllocatorCreateRequest çağrısı yaparak oluşturma isteğini doğrular. Çağrı başarılı olursa, bu yordam ilgili KSALLOCATOR_FRAMING yapısına bir işaretçi döndürür.
Filtre çerçeveleme gereksinimlerini karşılayamıyorsa, IRP'ye yanıt olarak bir hata kodu döndürür. Aksi takdirde, filtre, dosya nesnesinin FsContext üyesine bir yapıya işaretçi ekleyerek ortaya çıkan ayırıcı isteklerini karşılar.
Akış arabirimine geçirilen arabelleklerin filtre tarafından anında değiştirilmesi gerekiyorsa, kullanıcı modu istemcisi, ilgili KSALLOCATOR_FRAMING yapısında KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER bayrağını ayarlar.
Ayırıcının kullanabileceği iki arabirim vardır. öncelikle ayırıcıların IRP tabanlı KSMETHODSETID_StreamAllocator desteklemesi gerekir. Bu mekanizmayı kullanan ayırıcılar, ayrılan çerçeve sayısı üst sınırıyla sınırlıdır. Bu sınırı aşan çerçeveleri ayırma istekleri beklemede olarak işaretlenir.
İkinci olarak, ayırma havuzu türüne DISPATCH_LEVEL hizmet verebiliyorsa, minidriver işlev tablosu erişimini destekleyebilir. İşlev tablosu erişimi sağlamak isteğe bağlıdır. KSPROPSETID_StreamAllocator özelliklerini destekleyerek bunu yapın.
DISPATCH_LEVEL arabirimi aşağıdaki gibi çalışır:
Ayırıcıya bir ayırma isteği gönderildiğinde, eğer mevcutsa ayırıcı bir frame'e işaretçi döndürür. Aksi takdirde, hemen NULL döndürür.
Ayırıcıya ücretsiz bir istek gönderildiğinde ayırıcı, akış ayırıcısına "serbest çerçeve" olayını işaret ederek istemciye boş bir çerçevenin kullanılabilir olduğunu bildirir. Ayrıca, tamamlanmayı bekleyen ayırma isteği IRP'leri varsa, ayırıcının bir çalışan öğeyi zamanlaması (mevcut IRQL PASSIVE_LEVEL değilse) ve isteği boş çerçeveyle tamamlaması gerekir.
Hem DISPATCH_LEVEL arabiriminin hem de IRP tabanlı arabirimin ücretsiz çerçeveler için iddialı olması mümkündür. KS, döndürme kilidini iptal et komutunu kullanarak bu kuyruğu eşitler.