Função IoCheckEaBufferValidity (ntifs.h)

A rotina IoCheckEaBufferValidity verifica se o buffer de EA (atributo estendido) especificado é válido.

Sintaxe

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

Parâmetros

[in] EaBuffer

Ponteiro para o buffer que contém os EAs a serem verificados.

[in] EaLength

Comprimento, em bytes, de EaBuffer.

[out] ErrorOffset

Ponteiro para uma variável que recebe o deslocamento da entrada ofensiva no buffer de EA se um erro for encontrado. Essa variável só será válida se ocorrer um erro.

Retornar valor

IoCheckEaBufferValidity retornará STATUS_SUCCESS se o buffer EA for válido; caso contrário, retornará STATUS_EA_LIST_INCONSISTENT.

Comentários

IoCheckEaBufferValidity verifica cada entrada de FILE_FULL_EA_INFORMATION no buffer EA especificado para garantir que as seguintes condições sejam atendidas:

  • Toda a entrada deve estar dentro do buffer.

  • O valor de EaName deve ser uma matriz de caracteres terminada em nulo.

  • O valor de EaNameLength deve corresponder ao comprimento em bytes da matriz EaName (sem incluir o terminador zero).

  • Para todas as entradas, exceto a última, o valor de NextEntryOffset deve ser maior que zero e deve cair em um limite ULONG.

Além disso, IoCheckEaBufferValidity verifica o buffer do EA para garantir que as seguintes condições sejam atendidas:

  • O comprimento passado em EaLength corresponde ao comprimento real do buffer.

  • O comprimento real do buffer não é negativo.

Para ser válido, o buffer do EA deve atender a todas essas condições.

IoCheckEaBufferValidity não executa nenhuma sincronização para garantir que o conteúdo do EaBuffer não seja alterado de forma assíncrona. Se um aplicativo de modo de usuário puder acessar o buffer em outro thread, o aplicativo poderá alterar o buffer enquanto IoCheckEaBufferValidity estiver em execução. Essa alteração pode fazer com que a rotina retorne informações incorretas. Para evitar esse cenário, o driver deve copiar o buffer antes de chamar IoCheckEaBufferValidity. Depois que o buffer for validado, o chamador deverá usar apenas a cópia validada, não o buffer original.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Confira também

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA