Функция IoCheckEaBufferValidity (ntifs.h)
IoCheckEaBufferValidity проверяет допустимость указанного буфера расширенных атрибутов (EA).
Синтаксис
NTSTATUS IoCheckEaBufferValidity(
[in] PFILE_FULL_EA_INFORMATION EaBuffer,
[in] ULONG EaLength,
[out] PULONG ErrorOffset
);
Параметры
[in] EaBuffer
Указатель на буфер, содержащий проверяемые точки сертификации.
[in] EaLength
Длина в байтах EaBuffer.
[out] ErrorOffset
Указатель на переменную, которая получает смещение обижающей записи в буфере EA, если обнаружена ошибка. Эта переменная действительна только в том случае, если возникает ошибка.
Возвращаемое значение
IoCheckEaBufferValidity возвращает STATUS_SUCCESS, если буфер EA действителен; в противном случае возвращается STATUS_EA_LIST_INCONSISTENT.
Замечания
IoCheckEaBufferValidity проверяет каждую запись FILE_FULL_EA_INFORMATION в указанном буфере EA, чтобы убедиться, что выполнены следующие условия:
Вся запись должна находиться в буфере.
Значение 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 |