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,以重新發出小型篩選驅動程式透過呼叫 FltAllocateCallbackData 和 FltPerformSynchronousIo 例程所產生的 I/O。 在此情況下,不論它在後續作回呼例程或作業回呼例程的內容之外呼叫 FltReissueSynchronousIo,都無關緊要。 針對在後續作回呼例程內容之外呼叫,請考慮改用 FltReuseCallbackData 和 FltPerformSynchronousIo 例程。
呼叫端可以在重新發出 I/O 要求之前,先修改回呼資料 (FLT_CALLBACK_DATA) 結構的 I/O 參數區塊內容。 如果這樣做,它必須先呼叫 FltSetCallbackDataDirty,再呼叫 FltReissueSynchronousIo。
例如,如果迷你篩選驅動程式使用重新剖析點,而且其建立後回呼例程會針對傳回STATUS_REPARSE的建立作業呼叫,迷你篩選驅動程式就可以重新發出建立作業,以取得自己的重新分析點。 在此情況下,迷你篩選驅動程式會完成下列步驟:
在回呼數據結構的 I/O 參數區塊中設定FILE_OPEN_REPARSE_POINT旗標。
呼叫 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重新發出) |
IRP_MJ_CREATE的FLT_PARAMETERS