AVStream-Zuweisungen
Der AVStream-Klassentreiber verwendet einen Allocator , um Datenpuffer in Einheiten zuzuordnen, die als Frames bezeichnet werden. Ein Frame ist ein Teil des kontinuierlichen Arbeitsspeichers, dessen Größe vom Anbieter über den AllocatorFraming-Member von KSPIN_DESCRIPTOR_EX angegeben wird.
Minidriver greifen über die Stream-Zeiger-API auf diese Puffer zu. rufen Sie KsPinGetLeadingEdgeStreamPointer auf, um einen Zeiger auf den Stream abzurufen.
AVStream-Clients können Mithilfe der schreibgeschützten Eigenschaft KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX Informationen zu den Rahmenanforderungen einer Pin abrufen. Diese Eigenschaft gibt eine Struktur vom Typ KSALLOCATOR_FRAMING_EX zurück, die die Rahmenanforderungen für den Stift beschreiben.
Wenn daten nicht mehr verwendet werden, verwendet AVStream die Zuweisung, um den Puffer frei zu geben.
AVStream stellt eine Standardzuweisung bereit. Die Standardzuweisung ordnet den Poolspeicher basierend auf den Zuweisungsanforderungen zu, die der Minitreiber im AllocatorFraming-Member der KSPIN_DESCRIPTOR_EX-Struktur bereitstellt.
Ein Anbieter mit gerätespezifischen Zuordnungsanforderungen kann einen Minitreiber schreiben, der seine eigenen Zuordnungsroutinen enthält. Sie können beispielsweise eine Zuweisung bereitstellen, wenn Ihr Treiber Arbeitsspeicher aus einem gemeinsamen DMA-Puffer zuordnet.
Um eine Zuweisung bereitzustellen, geben Sie eine KSALLOCATOR_DISPATCH-Struktur an, die Zeiger auf die folgenden vom Anbieter bereitgestellten Rückrufroutinen enthält:
Geben Sie einen Zeiger auf diese Zuweisungsverteilungsstruktur im Allocator-Member der KSPIN_DISPATCH-Struktur an, die den Pin beschreibt, für den diese Zuweisung Frames instanziieren wird.
Geben Sie einen Zeiger auf diese Pin-Dispatchstruktur im Dispatch-Member der entsprechenden KSPIN_DESCRIPTOR_EX-Struktur an. Weitere Informationen zu Verteilungsstrukturen in AVStream finden Sie unter AVStream-Dispatchtabellen.
Zur Laufzeit verarbeitet der Graph-Manager (z. B. das Modul Kernelstreamingproxy ) die Zuordnungsauswahl. Eine vom Anbieter bereitgestellte Zuweisung ist nicht garantiert, dass sie vom Graph-Manager ausgewählt wird.
Eine Kernelmoduszuweisung wird nur ausgewählt, wenn sich die Verbindung im Kernelmodus befindet. Darüber hinaus kann Ihre Zuweisung abgelehnt werden, wenn es einen Konflikt zwischen den Zuweisungsanforderungen und den Funktionen Ihrer Zuweisung gibt. Wenn Ihre Zuweisung nicht ausgewählt ist, wird ihre AVStrMiniInitializeAllocator-Rückrufroutine nie aufgerufen.
Weitere Informationen finden Sie unter AVStream DMA-Dienste und Streamzeiger.