FltCbdqRemoveNextIo 함수(fltkernel.h)

FltCbdqRemoveNextIo 는 미니필터 드라이버의 콜백 데이터 큐에서 일치하는 다음 항목을 제거합니다.

구문

PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
  [in, out]      PFLT_CALLBACK_DATA_QUEUE Cbdq,
  [in, optional] PVOID                    PeekContext
);

매개 변수

[in, out] Cbdq

취소 안전 콜백 데이터 큐에 대한 포인터입니다. 이 큐는 FltCbdqInitialize를 호출하여 초기화되어야 합니다.

[in, optional] PeekContext

일치하는 항목을 식별하는 호출자 정의 정보에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

FltCbdqRemoveNextIo는 일치하는 항목을 찾을 수 없는 경우 큐에서 제거된 항목의 콜백 데이터(FLT_CALLBACK_DATA) 구조에 대한 포인터를 반환합니다. FltCbdqRemoveNextIo 는 아직 취소되지 않은 I/O 작업에 대한 항목만 반환합니다.

설명

FltCbdqRemoveNextIo 는 미니필터 드라이버의 콜백 데이터 큐에서 일치하는 다음 항목을 제거합니다.

미니필터 드라이버는 FltCbdqXxx 루틴을 사용하여 IRP 기반 I/O 작업에 대한 콜백 데이터 큐를 구현할 수 있습니다. 미니필터 드라이버는 이러한 루틴을 사용하여 큐를 취소로부터 안전하게 만들 수 있습니다. 시스템은 미니필터 드라이버에 대한 I/O 취소를 투명하게 처리합니다.

FltCbdqXxx 루틴은 IRP 기반 I/O 작업에만 사용할 수 있습니다. 지정된 콜백 데이터(FLT_CALLBACK_DATA) 구조가 IRP 기반 I/O 작업을 나타내는지 여부를 확인하려면 FLT_IS_IRP_OPERATION 매크로를 사용합니다.

콜백 데이터 큐는 FltCbdqInitialize에 의해 초기화됩니다. FltCbdqRemoveNextIo 는 큐의 디스패치 테이블에 제공된 루틴을 사용하여 큐를 잠그고 큐에서 일치하는 다음 항목을 제거합니다. 제거 작업 자체는 미니필터 드라이버의 CbdqRemoveIo 콜백 루틴에 의해 수행됩니다.

FltCbdqRemoveNextIo 는 큐의 CbdqPeekNextIo 콜백 루틴을 사용하여 일치하는 항목에 대한 큐를 검사합니다. PeekContext 매개 변수는 일치하는 항목을 반복하기 위해 CbdqPeekNextIo 콜백 루틴에 전달됩니다. PeekContext의 의미와 지정된 PeekContext와 일치하는 항목에 대한 기준은 전적으로 미니필터 드라이버에 따라 달라집니다.

큐가 뮤텍스 개체 또는 리소스 변수가 아닌 스핀 잠금으로 보호되는 경우 FltCbdqRemoveNextIo 호출자는 IRQL <= DISPATCH_LEVEL 실행할 수 있습니다. 뮤텍스 또는 리소스를 사용하는 경우 호출자는 IRQL <= APC_LEVEL 실행되어야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
IRQL 설명 섹션을 참조하십시오.

추가 정보

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo