FltCbdqRemoveIo 함수(fltkernel.h)

FltCbdqRemoveIo 는 미니필터 드라이버의 콜백 데이터 큐에서 특정 항목을 제거합니다.

구문

PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveIo(
  [in, out] PFLT_CALLBACK_DATA_QUEUE            Cbdq,
  [in]      PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT Context
);

매개 변수

[in, out] Cbdq

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

[in] Context

제거할 항목에 대한 컨텍스트 포인터입니다. 이 컨텍스트는 I/O 요청이 큐에 처음 삽입될 때 FltCbdqInsertIo 에 의해 초기화됩니다. 이 매개 변수는 필수이며 NULL이 아닌 매개 변수여야 합니다.

반환 값

FltCbdqRemoveIo 는 큐에서 제거된 I/O 요청에 대한 콜백 데이터 구조에 대한 포인터를 반환합니다. 일치하는 I/O 요청이 없거나 큐가 비어 있는 경우 FltCbdqRemoveIoNULL을 반환합니다.

설명

FltCbdqRemoveIo 는 미니필터 드라이버의 콜백 데이터 큐에서 특정 I/O 작업에 대한 콜백 데이터(FLT_CALLBACK_DATA) 구조를 제거합니다. FltCbdqRemoveIo컨텍스트 구조가 연결된 콜백 데이터 구조를 삭제하는 데만 사용할 수 있습니다. 이 연결은 FltCbdqInsertIo가 콜백 데이터 큐에 콜백 데이터 구조를 삽입할 때 만들어집니다.

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

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

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

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

취소된 I/O 요청을 제거하는 필터 관리자와 필터 드라이버가 완료되었기 때문에 필터 드라이버 간에 경합이 발생할 수 있습니다. 요청 컨텍스트가 처음 제거된 후에도 유효한 상태로 유지되므로 두 번째 제거 시도가 실패합니다.

요구 사항

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

추가 정보

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveNextIo