共用方式為


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 要求可能需要的所有記憶體。 如果 I/O 要求,例如 FltPerformSynchronousIoFltPerformAsynchronousIo,則需要某些結構的額外記憶體,要求可能會遇到記憶體配置。 FltAllocateCallbackDataEx 例程可用來透過預先配置記憶體來避免此潛在問題,以便 I/O 要求中使用的其他結構。 如果 RetNewCallbackData 結構或其他必要結構發生記憶體配置問題,則可以在回呼數據配置時加以處理。
 
回呼數據結構是從非分頁集區配置。

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

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

Minifilter 驅動程式應該使用 FltAllocateCallbackDataFltPerformAsynchronousIo,以及 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