Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas pisania ministerownika AVStream udostępniasz filtry, które używają jednego z dwóch paradygmatów przetwarzania: przetwarzania skoncentrowanego na pinach lub przetwarzania skoncentrowanego na filtrach.
Przetwarzanie zorientowane na piny oznacza, że AVStream wywołuje rutynową obsługę procesu pinu przez minidrivera, gdy nowe ramki trafiają do kolejki pinu.
Przetwarzanie skoncentrowane na filtrze oznacza, że AVStream wywołuje procedurę obsługi procesu filtrowania w minidriverze, gdy dla każdego utworzonego pinu dostępne są ramki danych. Należy pamiętać, że te definicje określają zachowanie domyślne; Minidrivers mogą modyfikować domyślne zachowanie, ustawiając flagi w strukturze KSPIN_DESCRIPTOR_EX .
Ogólnie rzecz biorąc, filtry oprogramowania korzystają z przetwarzania na bazie filtrów, a filtry sprzętowe używają przetwarzania na bazie pinów. Na przykład sprzęt, który przekształca lub renderuje dane, może kierować dane do filtru skoncentrowanego na pinezkach. Istnieją rzadkie przypadki, w których te role mogą zostać odwrócone.
Aby dostarczyć filtr zorientowany na pin, minidriver udostępnia wskaźnik do procedury zwrotnej AVStrMiniPinProcess w każdej strukturze KSPIN_DISPATCH; nie udostępniaj wysyłki przetwarzania w strukturze KSFILTER_DISPATCH.
Jeśli minidriver nie modyfikuje ustawień flagi w strukturze KSPIN_DESCRIPTOR_EX, AVStream wywołuje dostarczoną przez dostawcę procedurę wywołania zwrotnego AVStrMiniPinProcess w trzech sytuacjach:
Pin przechodzi do stanu minimalnego przetwarzania. Ramki muszą już istnieć w kolejce, a pin musi przechodzić ze stanu przetwarzania mniejszego niż minimalny do stanu przetwarzania co najmniej minimalnego.
Pojawią się nowe ramki. Pin musi być w co najmniej minimalnym stanie przetwarzania i nie może być ramek na lub przed krawędzią wiodącą.
Minidriver jawnie wywołuje KsPinAttemptProcessing.
Domyślnie wstrzymanie to minimalny stan przetwarzania.
Ponadto usługa AVStream nie wywołuje procedury przetwarzania pinezki, jeśli bramka AND pinezki jest zamknięta. Jeśli używasz procedur KSGATEXxx, aby dodać dodatkowe wyłączone wejścia do bramy AND pinu, na przykład, wywołanie procesu nie zostanie zrealizowane.
Gdy funkcja AVStream wywołuje metodę AVStrMiniPinProcess, udostępnia wskaźnik do obiektu pin, który ma dostępne dane. Dyspozytor przetwarzania minidrivera może następnie uzyskać wskaźnik krawędzi wiodącej, wywołując polecenie KsPinGetLeadingEdgeStreamPointer. Minidrivers następnie manipulują danymi strumienia przy użyciu interfejsu API wskaźnika strumienia.
Minidrivery korzystające z przetwarzania skoncentrowanego na pinach mogą modyfikować, kiedy AVStream wywołuje dyspozytor AVStrMiniPinProcess, ustawiając flagi w odpowiedniej strukturze KSPIN_DESCRIPTOR_EX. Opisy flag na stronie referencyjnej KSPIN_DESCRIPTOR_EX są szczególnie istotne dla dostawców, którzy implementują filtry skoncentrowane na pinach.
Próby przetwarzania mogą zakończyć się niepowodzeniem, jeśli minidriver przechowuje mutex przetwarzania za pośrednictwem KsPinAcquireProcessingMutex. Problemy mogą również wystąpić, jeśli minidriver bezpośrednio manipuluje bramą przy użyciu wywołań KSGATE* .
AvStream Simulated Hardware Sample Driver (AVSHwS) w zestawie przykładowych sterowników systemu Windows to sterownik przechwytywania skoncentrowany na pinach dla symulowanego sprzętu. W przykładzie Avshws pokazano, jak zaimplementować usługę DMA za pośrednictwem usługi AVStream.