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.
W starszym modelu klasy strumieniowej minidriver jest odpowiedzialny za utrzymanie własnych kolejek bloków żądań strumienia danych (SRB). AVStream zapewnia tę funkcjonalność poprzez abstrakcję wskaźnika strumienia. Wskaźnik strumienia jest odwołaniem do konkretnej ramki danych AVStream.
Minidrivery korzystające z przetwarzania skoncentrowanego na pinezkach (większość sterowników sprzętowych) używają wskaźników strumienia do zarządzania kolejkami numerów PIN. Każdy pin ma niezależną kolejkę buforów danych. Gdy pakiet danych dociera do pinu (żądanie odczytu lub zapisu), AVStream dodaje pakiet do kolejki i może wywołać rozpoczęcie przetwarzania przez pin.
Minidrivery, które korzystają z przetwarzania skoncentrowanego na filtrach, nie powinny bezpośrednio używać wskaźników strumienia. Aby uzyskać więcej informacji, zobacz przetwarzanie skoncentrowane na filtrach .
Domyślnie każda kolejka ma wskaźnik strumienia czołowego. Opcjonalnie może mieć wskaźnik strumienia krawędzi końcowej, jeśli określono flagę krawędzi końcowej. Minidriver może tworzyć nowe wskaźniki strumienia, wywołując funkcję KsStreamPointerClone.
Wskaźnik strumienia można przenosić tylko w jednym kierunku: do nowszej ramki. Jest to nazywane rozwijaniem wskaźnika strumienia.
Przesuwanie wskaźnika w strumieniu
Gdy przenosisz wskaźnik strumienia, przesuwasz go do nowszej ramki lub przesuwasz o pewną liczbę bajtów w bieżącej ramce. Na przykład minidriver może przejść wskaźnik strumienia po przybyciu pierwszej ramki do przybycia drugiej ramki.
Aby przesunąć wskaźnik strumienia, filtr pin-centryczny może wywołać funkcję KsStreamPointerAdvance lub KsStreamPointerUnlock z parametrem Eject ustawionym na TRUE.
Licznik odwołań do ramek
Ramki wskazywane przez wskaźniki strumienia są zliczane, podobnie jak ramki znajdujące się w oknie między krawędziami przednimi a tylnymi.
Gdy minidriver zakończy pracę ze wskaźnikiem strumienia, może opcjonalnie wywołać funkcję KsStreamPointerSetStatusCode w celu określenia kodu błędu, który posłuży do ukończenia danego pakietu żądania we/wy (IRP). Minidriver musi następnie wywołać ksStreamPointerDelete. AVStream następnie dekrementuje liczbę odwołań do ramki, do której wcześniej odwoływał się usunięty wskaźnik strumienia. Nie można usunąć początkowego i końcowego wskaźnika strumienia.