FsRtlFindInTunnelCache 函式 (ntifs.h)
FsRtlFindInTunnelCache 例程會在通道快取中搜尋符合指定名稱的相符專案。
語法
BOOLEAN FsRtlFindInTunnelCache(
[in] TUNNEL *Cache,
ULONGLONG DirectoryKey,
[in] UNICODE_STRING *Name,
[out] UNICODE_STRING *ShortName,
[out] UNICODE_STRING *LongName,
[in, out] ULONG *DataLength,
[out] VOID *Data
);
參數
[in] Cache
由 FsRtlInitializeTunnelCache初始化之通道快取的指標。
DirectoryKey
目錄的索引鍵值,其中包含正在建立或重新命名的檔案。
[in] Name
Unicode 字串的指標,其中包含要重新命名或建立之檔案的新名稱。
[out] ShortName
呼叫端配置的 Unicode 字串指標,以接收通道檔案的簡短名稱。 此字串必須足夠長,才能保存完整的 8.3 檔名。 (不同於 LongName,ShortName 不會動態成長。
[out] LongName
呼叫端配置的 Unicode 字串指標,以接收通道檔案的長名稱。 如果此字串不夠大而無法保存通道名稱,FsRtlFindInTunnelCache 以較大的系統配置字串取代它。 如果配置這類字串,呼叫端會負責偵測此案例,並釋放新的系統配置字串,以及原始呼叫端配置的字串。
[in, out] DataLength
在輸入時,這是變數的指標,可指定 Data所指向之緩衝區的長度。 在輸出中,相同的變數會接收寫入緩衝區之數據的位元組長度。
[out] Data
呼叫端配置的緩衝區指標,以接收通道快取中找到的數據。
傳回值
如果通道快取中找到相符的專案,FsRtlFindInTunnelCache 會傳回 TRUE,否則為 FALSE。
言論
當檔名新增至要建立或重新命名之檔案的目錄時,文件系統可以呼叫 FsRtlFindInTunnelCache。 FsRtlFindInTunnelCache 會搜尋通道快取中 符合 dirKey 和 Name的專案。 如果找到其中一個,FsRtlFindInTunnelCache 擷取快取的資訊。
比對的執行方式如下:
DirKey 的值會與項目的目錄索引鍵進行比較。 (這是傳遞至 FsRtlAddToTunnelCache的 DirectoryKey 值。
如果在呼叫 FsRtlAddToTunnelCache時,KeyByShortName 設為 TRUE,Name 所指向的字元串會與通道檔案的簡短名稱進行比較。 否則,它會與長名稱進行比較。
DataLength 所指向之緩衝區長度變數的值 必須大於或等於通道快取專案中所儲存數據的位元組長度。
呼叫端必須針對 FsRtlDeleteTunnelCache 同步處理此呼叫,。 換句話說,文件系統必須確保它不會從不同的線程同時呼叫 FsRtlFindInTunnelCache 和 FsRtlDeleteTunnelCache。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |