Partilhar via


Função IoCheckEaBufferValidity (ntifs.h)

O IoCheckEaBufferValidity verifica se o buffer 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 EA se um erro for encontrado. Essa variável só será válida se ocorrer um erro.

Valor de retorno

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

Observações

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

  • A entrada inteira 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 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 de 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 tiver sido validado, o chamador deverá usar apenas a cópia validada, não o buffer original.

Requisitos

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

Consulte também

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA