IoCheckEaBufferValidity 函式 (ntifs.h)
IoCheckEaBufferValidity 例程會檢查指定的擴充屬性 (EA) 緩衝區是否有效。
語法
NTSTATUS IoCheckEaBufferValidity(
[in] PFILE_FULL_EA_INFORMATION EaBuffer,
[in] ULONG EaLength,
[out] PULONG ErrorOffset
);
參數
[in] EaBuffer
包含要檢查之 EA 之緩衝區的指標。
[in] EaLength
EaBuffer的長度,以位元組為單位。
[out] ErrorOffset
如果找到錯誤,則會接收EA緩衝區中違規專案位移的變數指標。 只有在發生錯誤時,這個變數才有效。
傳回值
如果 EA 緩衝區有效,IoCheckEaBufferValidity 會傳回STATUS_SUCCESS;否則會傳回STATUS_EA_LIST_INCONSISTENT。
言論
IoCheckEaBufferValidity 會檢查指定 EA 緩衝區中的每個FILE_FULL_EA_INFORMATION專案,以確保符合下列條件:
整個項目必須落在緩衝區內。
EaName 的值必須是 null 終止的字元陣列。
EaNameLength 的值必須符合 EaName 陣列的位元組長度(不包括零終止符)。
對於最後一個專案以外的所有專案,NextEntryOffset 的值必須大於零,而且必須落在 ULONG 界限上。
此外,IoCheckEaBufferValidity 檢查 EA 緩衝區,以確保符合下列條件:
傳入 EaLength 長度符合緩衝區的實際長度。
實際的緩衝區長度為非負值。
若要有效,EA 緩衝區必須符合所有這些條件。
IoCheckEaBufferValidity 不會執行任何同步處理,以確保 EaBuffer 的內容不會以異步方式變更。 如果使用者模式應用程式可以在另一個線程中存取緩衝區,應用程式可以在執行IoCheckEaBufferValidity 時變更緩衝區。 這項變更可能會導致例程傳回不正確的資訊。 若要避免這種情況,驅動程式應該先複製緩衝區,再呼叫 IoCheckEaBufferValidity。 在驗證緩衝區之後,呼叫端應該只使用已驗證的複本,而不是原始緩衝區。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |