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 작업을 시작하는 미니필터 드라이버 instance 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 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 작업을 시작합니다. 이러한 루틴은 시작 instance 아래에 연결된 미니필터 드라이버 인스턴스(Instance 매개 변수에 지정됨) 및 파일 시스템에만 I/O 작업을 보냅니다. 지정된 instance 위에 연결된 미니필터 드라이버는 I/O 작업을 받지 못합니다.

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

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

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