다음을 통해 공유


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