Função RtlGenerate8dot3Name (ntifs.h)

A rotina RtlGenerate8dot3Name gera um nome curto (8.3) para o nome de arquivo longo especificado.

Sintaxe

NTSYSAPI NTSTATUS RtlGenerate8dot3Name(
  [in]      PCUNICODE_STRING       Name,
  [in]      BOOLEAN                AllowExtendedCharacters,
  [in, out] PGENERATE_NAME_CONTEXT Context,
  [in, out] PUNICODE_STRING        Name8dot3
);

Parâmetros

[in] Name

Ponteiro para uma cadeia de caracteres Unicode que contém o nome longo do arquivo. Todos os períodos à esquerda neste nome de arquivo são ignorados durante a geração de um nome curto correspondente.

[in] AllowExtendedCharacters

Defina como TRUE se o nome do arquivo curto gerado puder conter caracteres estendidos. Defina como FALSE se o nome do arquivo curto gerado deve conter apenas caracteres dentro do intervalo ANSI ou OEM da página de código atual, desde 0x20 (espaço) até 0x7f (DEL).

[in, out] Context

Ponteiro para um buffer alocado pelo chamador para uso por RtlGenerate8dot3Name. Antes de chamar RtlGenerate8dot3Name pela primeira vez para traduzir o nome de arquivo longo fornecido, o chamador é responsável por preencher o buffer com zeros.

[in, out] Name8dot3

Ponteiro para um buffer alocado pelo chamador para receber o nome de arquivo curto gerado. O tamanho desse buffer deve ser de pelo menos 24 bytes (12 caracteres Unicode).

Retornar valor

Essa rotina retornará STATUS_SUCCESS se um nome curto for gerado com êxito. Ele retornará STATUS_FILE_SYSTEM_LIMITATION se o sistema não puder gerar um nome curto exclusivo para um determinado arquivo. Ele retorna esse erro após 1 milhão de tentativas de repetição para um único nome longo determinado.

Comentários

RtlGenerate8dot3Name retorna um nome curto gerado com no máximo oito caracteres, seguido imediatamente por um período e até três caracteres a mais.

RtlGenerate8dot3Name pode ser chamado repetidamente. Por exemplo, se o nome curto gerado inicialmente for uma duplicata de um nome de arquivo existente, o chamador poderá passar os mesmos parâmetros para RtlGenerate8dot3Name novamente. Nesse caso, o buffer em Contexto não deve ser reinicializado com zeros. Esse buffer deve ser zerado apenas para a chamada inicial para traduzir um determinado nome longo. Em chamadas repetidas para o mesmo nome longo, RtlGenerate8dot3Name armazena informações de contexto privado nesse buffer para evitar colisões de nome.

Não há garantia de que duas chamadas para RtlGenerate8dot3Name com o mesmo Nome e Contexto retornem o mesmo resultado. Os chamadores devem assumir que o mapeamento de nome longo para nome curto não é determinístico.

RtlGenerate8dot3Name converte o nome longo fornecido usando a página de código do sistema atual, descartando caracteres inválidos ou supérfluos no nome longo de entrada. Quando AllowExtendedCharacters é definido como TRUE, caracteres ANSI ou DBCS (conjunto de caracteres de byte duplo) que são mapeados para caracteres OEM maiúsculos podem se tornar parte de um nome curto retornado.

RtlGenerate8dot3Name retorna um nome de arquivo curto com caracteres alfabéticos maiúsculos. Ele retorna sublinhados no nome curto gerado para qualquer um dos seguintes caracteres encontrados no nome longo especificado:

  • Dois-pontos e ponto-e-vírgula
  • Vírgulas
  • Sinais de adição e igual
  • Colchetes

Para obter informações sobre outras rotinas de tratamento de cadeia de caracteres, consulte Rotinas rtl (biblioteca em tempo de execução).

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

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING