Udostępnij przez


Blokowanie i odblokowywanie wskaźników strumienia

Każdy wskaźnik strumienia zachowuje stan blokady: zablokowany lub odblokowany.

Wskaźniki strumienia w stanie zablokowanym gwarantują odwołanie się do danych w kolejce. Nie można anulować ramek danych wskazywanych przez zablokowane wskaźniki strumienia. W związku z tym minidrivery powinny zminimalizować czas przechowywania zablokowanych wskaźników strumienia.

Odblokowany wskaźnik strumienia nie ma gwarancji, że odwołuje się do ramki danych w kolejce. Trzymając odblokowany wskaźnik strumienia, minidriver może zachować wskaźnik danych, ale nadal umożliwia anulowanie ramki.

Istnieje możliwość uzyskania dostępu do danych wskazywanych przez odblokowany wskaźnik strumienia. Jeśli podana przez ciebie rutyna CancelCallback w KsStreamPointerClone wywołuje KsStreamPointerDelete, należy zsynchronizować CancelCallback i dowolny dostęp do danych, które wykonuje. Ten minidriver musi upewnić się, że procedura anulowania nie usuwa wskaźnika strumienia, podczas gdy inny wątek używa go.

Jeśli procedura wywołania zwrotnego anulowania nie wywołuje KsStreamPointerDelete, synchronizacja może nie być konieczna.

Aby zablokować wskaźnik strumienia, wywołaj metodę KsStreamPointerLock. Aby odblokować wskaźnik strumienia, wywołaj metodę KsStreamPointerUnlock.

Po anulowaniu protokołu IRP funkcja AVStream wywołuje wywołania zwrotne anulowania dla wszystkich odblokowanych wskaźników strumienia wskazujących ramki w ramach protokołu IRP.

Odblokuj wskaźniki strumienia wiodącego i końcowego tylko wtedy, gdy nie są używane.