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 |