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 值,如下所示:

傳回碼 Description
STATUS_INSUFFICIENT_RESOURCES

FltAllocateCallbackData 嘗試配置回呼數據結構時發生集區配置失敗。 這是錯誤碼。

備註

迷你篩選驅動程式可以呼叫 FltAllocateCallbackData ,為迷你篩選驅動程式起始的 I/O 作業配置回呼數據 (FLT_CALLBACK_DATA) 結構。

注意FltAllocateCallbackData 例程不會配置後續 I/O 要求可能需要的所有記憶體。 如果 I/O 要求,例如 FltPerformSynchronousIoFltPerformAsynchronousIo,則需要某些結構的額外記憶體,要求可能會遇到記憶體配置。 FltAllocateCallbackDataEx 例程可用來避免此潛在問題,方法是預先配置記憶體以供 I/O 要求中使用的其他結構。 如果 RetNewCallbackData 結構或其他必要結構發生記憶體配置問題,可以在回呼數據配置時加以處理。
 
回呼數據結構會從非分頁集區配置。

初始化 FltAllocateCallbackData 傳回的回呼數據結構參數之後,呼叫端會藉由將結構傳遞至 FltPerformSynchronousIoFltPerformAsynchronousIo 來起始 I/O 作業。 這些例程只會將 I/O 作業傳送至附加在 實例參數) 和文件系統中所指定起始實例下方的迷你篩選驅動程式 (實例。 附加在指定實例上方的迷你篩選驅動程式不會收到I/O 作業。

迷你篩選驅動程式只能起始 IRP 型 I/O 作業。 它們無法起始快速 I/O 或文件系統篩選 (FSFilter) 回呼作業。

Minifilter 驅動程式應該只針對無法使用下列例程的 I/O 作業使用 FltAllocateCallbackDataFltPerformAsynchronousIoFltPerformSynchronousIo

FltClose

FltCreateFile

FltQueryVolumeInformation

FltReadFile

FltSetVolumeInformation

FltTagFile

FltUntagFile

FltWriteFile

不再需要 FltAllocateCallbackData 所配置的回呼數據結構時,呼叫端會負責呼叫 FltFreeCallbackData 來釋放它。

規格需求

需求
目標平台 Universal
標頭 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