다음을 통해 공유


FltAllocateCallbackData 함수(fltkernel.h)

FltAllocateCallbackData 미니 필터 드라이버가 I/O 요청을 시작하는 데 사용할 수 있는 콜백 데이터 구조를 할당합니다.

통사론

NTSTATUS FLTAPI FltAllocateCallbackData(
  [in]           PFLT_INSTANCE      Instance,
  [in, optional] PFILE_OBJECT       FileObject,
  [out]          PFLT_CALLBACK_DATA *RetNewCallbackData
);

매개 변수

[in] Instance

I/O 작업을 시작하는 미니 필터 드라이버 인스턴스에 대한 불투명 인스턴스 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.

[in, optional] FileObject

I/O 작업에 사용할 파일 개체 포인터입니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다.

[out] RetNewCallbackData

새로 할당된 콜백 데이터(FLT_CALLBACK_DATA) 구조체의 주소를 수신하는 호출자 할당 변수에 대한 포인터입니다.

반환 값

FltAllocateCallbackData STATUS_SUCCESS 또는 다음과 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 묘사
STATUS_INSUFFICIENT_RESOURCES

FltAllocateCallbackData 콜백 데이터 구조를 할당하려고 할 때 풀 할당 오류가 발생했습니다. 오류 코드입니다.

발언

미니 필터 드라이버는 FltAllocateCallbackData 호출하여 미니 필터 드라이버에서 시작한 I/O 작업에 대한 콜백 데이터(FLT_CALLBACK_DATA) 구조를 할당할 수 있습니다.

참고FltAllocateCallbackData 루틴은 후속 I/O 요청에 필요할 수 있는 모든 메모리를 할당하지 않습니다. FltPerformSynchronousIo 또는 FltPerformAsynchronousIo같은 I/O 요청에 일부 구조에 대한 추가 메모리가 필요한 경우 요청에서 메모리 할당이 발생할 수 있습니다. FltAllocateCallbackDataEx 루틴은 I/O 요청에 사용할 추가 구조체에 대한 메모리를 미리 할당하여 이 잠재적인 문제를 방지하는 데 사용할 수 있습니다. RetNewCallbackData 구조 또는 추가 필수 구조에 대한 메모리 할당 문제가 있는 경우 콜백 데이터 할당 시점에서 처리할 수 있습니다.
 
콜백 데이터 구조는 비페이지 풀에서 할당됩니다.

FltAllocateCallbackData반환된 콜백 데이터 구조의 매개 변수를 초기화한 후 호출자는 fltPerformSynchronousIo 또는 FltPerformAsynchronousIo 구조를 전달하여 I/O 작업을 시작합니다. 이러한 루틴은 시작 인스턴스 아래에 연결된 미니 필터 드라이버 인스턴스(인스턴스 매개 변수에 지정됨) 및 파일 시스템에만 I/O 작업을 보냅니다. 지정된 인스턴스 위에 연결된 미니 필터 드라이버는 I/O 작업을 받지 않습니다.

미니 필터 드라이버는 IRP 기반 I/O 작업만 시작할 수 있습니다. 빠른 I/O 또는 FSFilter(파일 시스템 필터) 콜백 작업을 시작할 수 없습니다.

미니 필터 드라이버는 FltAllocateCallbackData , fltPerformAsynchronousIo , FltPerformSynchronousIo 다음과 같은 루틴을 사용할 수 없는 I/O 작업에만 사용해야 합니다.

FltClose

fltCreateFile

FltQueryVolumeInformation

fltReadFile

fltSetVolumeInformation

fltTagFile

fltUntagFile

fltWriteFile

FltAllocateCallbackData 의해 할당된 콜백 데이터 구조가 더 이상 필요하지 않은 경우 호출자는 FltFreeCallbackData호출하여 해제할 책임이 있습니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL <= APC_LEVEL

참고 항목

FLT_CALLBACK_DATA

FltClose

fltCreateFile

FltFreeCallbackData

fltPerformAsynchronousIo

fltPerformSynchronousIo

FltQueryVolumeInformation

fltReadFile

FltReissueSynchronousIo

FltReuseCallbackData

fltSetVolumeInformation

fltTagFile

fltUntagFile

fltWriteFile