Поделиться через


Функция 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

См. также

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA