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 Description
IRP_MJ_CREATE 일반적으로 이 루틴은 필터와 연결된 컨텍스트 및 리소스를 초기화하려는 미니 드라이버에서 사용됩니다. 미니 드라이버는 KSFILTER_DISPATCH 구조체Create 멤버에서 이 루틴의 주소를 지정합니다. 루틴이 호출되는 시점에서 파일 개체에는 연결된 컨텍스트가 있으며 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