共用方式為


IoCreateStreamFileObjectEx 函式 (ntifs.h)

IoCreateStreamFileObjectEx 例程會建立新的數據流檔案物件。

語法

PFILE_OBJECT IoCreateStreamFileObjectEx(
  [in, optional]  PFILE_OBJECT   FileObject,
  [in, optional]  PDEVICE_OBJECT DeviceObject,
  [out, optional] PHANDLE        FileHandle
);

參數

[in, optional] FileObject

與新數據流檔案相關的檔案物件的指標。 這個參數是選擇性的,而且可以 NULL

[in, optional] DeviceObject

要開啟數據流檔案之裝置的裝置物件的指標。 如果呼叫端為 fileObject 指定非NULL值,則會忽略 deviceObject 的值。 否則,呼叫端必須針對 deviceObject 指定非NULL 值。

[out, optional] FileHandle

輸出上數據流之檔案句柄的指標。 這個參數是選擇性的,而且可以 NULL

傳回值

IoCreateStreamFileObjectEx 會傳回新建立數據流檔案物件的指標。

言論

文件系統會呼叫 IoCreateStreamFileObjectEx,以建立新的數據流檔案物件。 數據流檔案物件 與一般檔案物件相同,不同之處在於已設定FO_STREAM_FILE檔案物件旗標。

數據流檔案物件通常用來代表文件系統所掛接之磁碟區的內部數據流。 此 虛擬磁碟區檔案 允許文件系統檢視、變更和快取磁碟區內部磁碟結構,就像是一般檔案一樣。 在此情況下,呼叫 IoCreateStreamFileObjectEx DeviceObject 參數 會指定磁碟區的磁碟區裝置物件 (VDO)。

數據流檔案物件也可以用來代表替代數據流來存取檔案的元數據,例如擴充屬性或安全性描述元。 在此情況下,呼叫 IoCreateStreamFileObjectEx FileObject 參數 會指定檔案的現有檔案物件。 新建立的數據流檔案物件可讓文件系統檢視、變更和快取檔案的元數據,就像是一般檔案一樣。

不再需要數據流檔案物件時,呼叫端必須藉由呼叫 ObDereferenceObject來遞減其參考計數。 當數據流檔案對象的參考計數達到零時,會將IRP_MJ_CLOSE要求傳送至磁碟區的檔系統驅動程式堆疊。

文件系統篩選驅動程式寫入器應該注意,IoCreateStreamFileObjectEx 會導致將IRP_MJ_CLEANUP要求傳送至磁碟區的文件系統驅動程式堆疊。 由於文件系統通常會建立串流檔案物件做為非IRP_MJ_CREATE作業的副作用,因此篩選驅動程式很難可靠地偵測串流檔案物件的建立。 因此,篩選驅動程式應該預期會收到先前未看到檔案物件的IRP_MJ_CLEANUP和IRP_MJ_CLOSE要求。

如果集區配置失敗,IoCreateStreamFileObjectEx 引發STATUS_INSUFFICIENT_RESOURCES例外狀況。

要求

要求 價值
最低支援的用戶端 Windows XP
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 被動

另請參閱

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectLite

ObDereferenceObject