Share via


Función IoCheckEaBufferValidity (ntifs.h)

La rutina IoCheckEaBufferValidity comprueba si el búfer de atributo extendido (EA) especificado es válido.

Sintaxis

NTSTATUS IoCheckEaBufferValidity(
  [in]  PFILE_FULL_EA_INFORMATION EaBuffer,
  [in]  ULONG                     EaLength,
  [out] PULONG                    ErrorOffset
);

Parámetros

[in] EaBuffer

Puntero al búfer que contiene las entidades de certificación que se van a comprobar.

[in] EaLength

Longitud, en bytes, de EaBuffer.

[out] ErrorOffset

Puntero a una variable que recibe el desplazamiento de la entrada incorrecta en el búfer de EA si se encuentra un error. Esta variable solo es válida si se produce un error.

Valor devuelto

IoCheckEaBufferValidity devuelve STATUS_SUCCESS si el búfer de EA es válido; de lo contrario, devuelve STATUS_EA_LIST_INCONSISTENT.

Comentarios

IoCheckEaBufferValidity comprueba cada entrada FILE_FULL_EA_INFORMATION en el búfer de EA especificado para asegurarse de que se cumplen las condiciones siguientes:

  • Toda la entrada debe estar dentro del búfer.

  • El valor de EaName debe ser una matriz de caracteres terminada en null.

  • El valor de EaNameLength debe coincidir con la longitud en bytes de la matriz EaName (no incluido el terminador cero).

  • Para todas las entradas excepto la última, el valor de NextEntryOffset debe ser mayor que cero y debe estar en un límite de ULONG.

Además, IoCheckEaBufferValidity comprueba el búfer de EA para asegurarse de que se cumplen las condiciones siguientes:

  • La longitud pasada en EaLength coincide con la longitud real del búfer.

  • La longitud real del búfer no es negativo.

Para ser válido, el búfer de EA debe cumplir todas estas condiciones.

IoCheckEaBufferValidity no realiza ninguna sincronización para asegurarse de que el contenido de EaBuffer no cambie de forma asincrónica. Si una aplicación en modo de usuario puede acceder al búfer en otro subproceso, la aplicación podría cambiar el búfer mientras se ejecuta IoCheckEaBufferValidity . Este cambio puede hacer que la rutina devuelva información incorrecta. Para evitar este escenario, el controlador debe copiar el búfer antes de llamar a IoCheckEaBufferValidity. Una vez validado el búfer, el autor de la llamada debe usar solo la copia validada, no el búfer original.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Consulte también

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA