다음을 통해 공유


PFNKSFILTERIRP 콜백 함수(ks.h)

필터가 IRP를 받으면 AVStream 미니 드라이버의 AVStrMiniFilterCreate 루틴이 호출됩니다.

IRP_MJ_CREATE

IRP_MJ_CLOSE

통사론

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(설명 섹션 참조)

참고 항목

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest