FltReissueSynchronousIo 函式 (fltkernel.h)

FltReissueSynchronousIo 會起始新的同步 I/O 作業,以使用先前同步 I/O 作業的參數。

語法

VOID FLTAPI FltReissueSynchronousIo(
  [in] PFLT_INSTANCE      InitiatingInstance,
  [in] PFLT_CALLBACK_DATA CallbackData
);

參數

[in] InitiatingInstance

重新發出 I/O 作業之迷你篩選驅動程序實例的不透明實例指標。 必須是起始先前 I/O 作業的相同實例。 這是必要參數,而且無法設定為 NULL。

[in] CallbackData

先前同步處理 I/O 作業之回呼資料的指標 (FLT_CALLBACK_DATA) 結構。 這是必要參數,而且無法設定為 NULL。

傳回值

沒有

言論

小型篩選驅動程式會從後續作回呼 (PFLT_POST_OPERATION_CALLBACK) 例程呼叫 FltReissueSynchronousIo,以重新發出同步的 I/O 要求。 它通常會從後置回呼例程呼叫 FltReissueSynchronousIo,以使用不同的參數重新發出失敗的作業,或處理重新分析彈跳。 不過,它也可以呼叫 FltReissueSynchronousIo,以重新發出小型篩選驅動程式透過呼叫 FltAllocateCallbackDataFltPerformSynchronousIo 例程所產生的 I/O。 在此情況下,不論它在後續作回呼例程或作業回呼例程的內容之外呼叫 FltReissueSynchronousIo,都無關緊要。 針對在後續作回呼例程內容之外呼叫,請考慮改用 FltReuseCallbackDataFltPerformSynchronousIo 例程。

呼叫端可以在重新發出 I/O 要求之前,先修改回呼資料 (FLT_CALLBACK_DATA) 結構的 I/O 參數區塊內容。 如果這樣做,它必須先呼叫 FltSetCallbackDataDirty,再呼叫 FltReissueSynchronousIo

例如,如果迷你篩選驅動程式使用重新剖析點,而且其建立後回呼例程會針對傳回STATUS_REPARSE的建立作業呼叫,迷你篩選驅動程式就可以重新發出建立作業,以取得自己的重新分析點。 在此情況下,迷你篩選驅動程式會完成下列步驟:

  1. 在回呼數據結構的 I/O 參數區塊中設定FILE_OPEN_REPARSE_POINT旗標。

  2. 呼叫 FltSetCallbackDataDirty

  3. 呼叫 FltReissueSynchronousIo 以重新發出建立要求。

篩選管理員只會將重新發出的 I/O 要求傳送給附加在起始實例下方的小型篩選驅動程序實例(在 InitiatingInstance 參數中指定)和文件系統。 附加在起始實例上方的迷你篩選驅動程序實例不會收到重新發出 I/O 要求。

只有同步處理的 I/O 作業可以重新發出。 若要讓驅動程式能夠重新發出,請在後續作回呼例程中呼叫 FltReissueSynchronousIo,迷你篩選驅動程式必須在預先作回呼例程中特別傳回FLT_PREOP_SYNCHRONIZE。

注意

小型篩選驅動程式不會呼叫 FltIsOperationSynchronous 例程,以判斷此作業的預先作回呼例程是否傳回FLT_PREOP_SYNCHRONIZE。 小型篩選驅動程式會呼叫 FltIsOperationSynchronous,以判斷作業本身是否與 I/O 管理員的觀點同步。

只能重新發出 IRP 型 I/O 作業。 無法重新發出快速 I/O 作業和檔案系統篩選器 (FSFilter) 回呼作業。 若要判斷 I/O 作業是否以 IRP 為基礎,請使用 FLT_IS_IRP_OPERATION 巨集。

無法重新發出已取消的建立 (IRP_MJ_CREATE) 作業。 呼叫建立作業 FltReissueSynchronousIo 之前,呼叫端應該檢查建立作業之檔案物件的 旗標 成員。 如果已設定FO_FILE_OPEN_CANCELLED旗標,這表示已取消建立作業,而且這個檔案物件將會發出關閉 (IRP_MJ_CLOSE) 作業。 如果針對已取消的建立作業呼叫 FltReissueSynchronousIo,篩選管理員會因為STATUS_CANCELLED而重新發出 I/O 要求失敗。

注意

當迷你篩選驅動程式在建立後回呼中重新發出建立時,他們不需要釋放並設定與其重新分析點相關聯的緩衝區 (TagData 欄位在 CallbackData) 中。 相反地,篩選管理員會釋放並將緩衝區設定為 NULL。

要求

要求 價值
最低支援的用戶端 適用於SP4的 Windows 2000 更新匯總 1;Windows XP SP2
支援的最低伺服器 Windows Server 2003 SP1
目標平臺 普遍
標頭 fltkernel.h (包括 FltKernel.h)
連結庫 FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL (非分頁 IO 只能在PASSIVE_LEVEL重新發出)

另請參閱

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_IS_REISSUED_IO

IRP_MJ_CREATEFLT_PARAMETERS

FltCancelFileOpen

FltIsOperationSynchronous

FltPerformSynchronousIo

FltReuseCallbackData

FltSetCallbackDataDirty

IRP_MJ_CLOSE

IRP_MJ_CREATE

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK