PFNKSFILTERIRP 콜백 함수(ks.h)
필터가 IRP를 받으면 AVStream 미니 드라이버의 AVStrMiniFilterCreate 루틴이 호출됩니다.
통사론
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
매개 변수
[in] Filter
KSFILTER대한 포인터입니다.
[in] Irp
필터대한 IRP에 대한 포인터입니다.
반환 값
루틴이 성공하면 STATUS_SUCCESS 또는 오류 코드를 반환합니다.
발언
IRP | 묘사 |
---|---|
IRP_MJ_CREATE | 일반적으로 이 루틴은 필터와 연결된 컨텍스트 및 리소스를 초기화하려는 미니 드라이버에서 사용됩니다. 미니 드라이버는 KSFILTER_DISPATCH 구조의 만들기 멤버에서 이 루틴의 주소를 지정합니다. 루틴이 호출되는 시점에 파일 개체에 연결된 컨텍스트가 있고 KS 개체 헤더가 할당되었습니다. 이 루틴은 디바이스 뮤텍스가 유지된 IRQL = PASSIVE_LEVEL 호출됩니다. 루틴이 성공하면 만들기 작업이 성공하도록 보장됩니다. 필터를 만들려는 시도에서 반환된 STATUS_SUCCESS 또는 오류 코드를 반환합니다. STATUS_PENDING 법적 반환 코드이기도합니다. 미니 드라이버가 STATUS_PENDING 반환하는 경우 AVStream은 IRP_MJ_CREATE 즉시 완료하지 않습니다. STATUS_PENDING 반환하기 전에 미니 드라이버는 IoMarkIrpPending호출해야 합니다. 만들기 처리가 완료되면 미니 드라이버는 IRP의 상태 코드를 설정한 다음 KsCompletePendingRequest호출해야 합니다. 이 루틴은 선택 사항입니다. |
IRP_MJ_CLOSE | 미니 드라이버는 KSFILTER_DISPATCH 구조의 Close 멤버에서 이 루틴의 주소를 지정합니다. 루틴이 호출되는 시점에 필터에 등록된 모든 이벤트가 해제되었지만 개체는 그대로 유지됩니다. 이 루틴은 디바이스 뮤텍스가 유지된 IRQL = PASSIVE_LEVEL 호출됩니다. 뮤텍스에 대한 자세한 내용은 AVStream 뮤텍스를 참조하세요. 이 루틴은 선택 사항입니다. STATUS_SUCCESS 또는 STATUS_PENDING 반환합니다. 미니 드라이버가 STATUS_PENDING 반환하는 경우 AVStream은 즉시 IRP_MJ_CLOSE 완료하지 않습니다. 그러나 STATUS_PENDING 반환하기 전에 미니 드라이버는 IoMarkIrpPending호출해야 합니다. 닫기 처리가 완료되면 미니 드라이버는 IRP의 상태 코드를 설정한 다음 KsCompletePendingRequest호출해야 합니다. |
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | ks.h(Ks.h 포함) |
IRQL | PASSIVE_LEVEL(설명 섹션 참조) |