AVStream의 디바이스 뮤텍스
디바이스 뮤텍스를 사용하여 계층 구조의 개체를 디바이스에서 필터로 동기화합니다. 각 AVStream 디바이스에는 연결된 단일 디바이스 뮤텍스가 있습니다. 필터 팩터리와 필터의 생성 및 소멸은 이 뮤텍스와 동기화됩니다. 특정 플러그 앤 플레이 및 전원 관리 작업도 이 뮤텍스와 동기화됩니다. 미니 드라이버는 디바이스 뮤텍스와 관련된 두 가지 기본 문제에 중점을 둡니다.
디바이스 뮤텍스가 유지되는 경우 개체 계층 구조는 디바이스에서 개별 필터까지 만 안정적으로 유지됩니다. 따라서 미니 드라이버는 KsCreateFilterFactory를 호출하여 필터 팩터리를 수동으로 만들기 전에 디바이스 뮤텍스를 가져와야 합니다. 또한 미니드라이버는 Ks Xxx GetFirstChild Xxx 및KsXxxGetNextSiblingXxx 함수를 호출하여 개체 계층 구조를 트래버스하기 전에 디바이스 뮤텍스를 가져와야 합니다.
AVStream은 다음 요청을 수신할 때 미니드라이버를 대신하여 디바이스 뮤텍스를 보유합니다.
필터 및 핀에 대한 절전 모드 및 절전 모드 해제 알림 KsFilterRegisterPowerCallbacks 및 KsPinRegisterPowerCallbacks를 참조하세요.
디바이스 뮤텍스를 재귀적으로 가져올 수 없다는 점에 유의해야 합니다. 다음 예제를 살펴보십시오. AVStream은 절전 모드 알림을 받습니다. 위에서 설명한 대로 미니 드라이버 대신 디바이스 뮤텍스를 사용합니다. 그런 다음 AVStream이 스레드 A의 컨텍스트에서 미니드라이버 제공 콜백 루틴을 호출하는 경우 미니드라이버가 이후에 스레드 A에서 디바이스 뮤텍스를 가져오려고 시도해서는 안 됩니다. 이렇게 하면 스레드 A가 자체적으로 교착 상태가 됩니다.
AVStream은 디바이스 뮤텍스가 이미 유지되는 동안 필터 컨트롤 뮤텍스를 가져오는 경우가 많습니다. 따라서 일반적으로 필터 컨트롤 뮤텍스를 가져온 스레드는 이후에 디바이스 뮤텍스를 사용하지 않아야 합니다.
디바이스 뮤텍스를 조작하려면 다음 함수를 사용합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기