Función RtlGenerate8dot3Name (ntifs.h)

La rutina RtlGenerate8dot3Name genera un nombre corto (8.3) para el nombre de archivo largo especificado.

Sintaxis

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

Puntero a una cadena Unicode que contiene el nombre largo del archivo. Los períodos iniciales de este nombre de archivo se omiten durante la generación de un nombre corto correspondiente.

[in] AllowExtendedCharacters

Se establece en TRUE si el nombre de archivo corto generado puede contener caracteres extendidos. Se establece en FALSE si el nombre de archivo corto generado debe contener solo caracteres dentro del intervalo ANSI o OEM de la página de códigos actual desde 0x20 (espacio) hasta 0x7f (DEL).

[in, out] Context

Puntero a un búfer asignado por el autor de la llamada para su uso por RtlGenerate8dot3Name. Antes de llamar a RtlGenerate8dot3Name por primera vez para traducir el nombre de archivo largo especificado, el llamador es responsable de rellenar el búfer con ceros.

[in, out] Name8dot3

Puntero a un búfer asignado por el autor de la llamada para recibir el nombre de archivo corto generado. El tamaño de este búfer debe ser de al menos 24 bytes (12 caracteres Unicode).

Valor devuelto

Esta rutina devuelve STATUS_SUCCESS si se genera correctamente un nombre corto. Devuelve STATUS_FILE_SYSTEM_LIMITATION si el sistema no puede generar un nombre corto único para un archivo determinado. Devuelve este error después de 1 millón de reintentos para un único nombre largo determinado.

Comentarios

RtlGenerate8dot3Name devuelve un nombre corto generado con al menos ocho caracteres, seguido inmediatamente de un punto y hasta tres caracteres más.

Se puede llamar repetidamente a RtlGenerate8dot3Name. Por ejemplo, si el nombre corto generado inicialmente es un duplicado de un nombre de archivo existente, el autor de la llamada puede pasar los mismos parámetros a RtlGenerate8dot3Name de nuevo. En este caso, el búfer de Context no se debe reinicializar con ceros. Este búfer debe estar cero solo para la llamada inicial para traducir un nombre largo determinado. En las llamadas repetidas para el mismo nombre largo, RtlGenerate8dot3Name almacena información de contexto privada en este búfer para evitar colisiones de nombres.

No se garantiza que dos llamadas a RtlGenerate8dot3Name con el mismo nombre y context devuelvan el mismo resultado. Los autores de llamadas deben suponer que la asignación de nombre largo a nombre corto no es determinista.

RtlGenerate8dot3Name traduce el nombre largo especificado mediante la página de códigos del sistema actual, descartando los caracteres no válidos o superfluos en el nombre largo de entrada. Cuando AllowExtendedCharacters se establece en TRUE, los caracteres de juego de caracteres ANSI o de doble byte (DBCS) que se asignan a caracteres OEM en mayúsculas pueden formar parte de un nombre corto devuelto.

RtlGenerate8dot3Name devuelve un nombre de archivo corto con caracteres alfabéticos en mayúsculas. Devuelve caracteres de subrayado en el nombre corto generado para cualquiera de los siguientes caracteres que encuentra en el nombre largo especificado:

  • Puntos y coma
  • Comas
  • Signos más e iguales
  • Corchetes

Para obtener información sobre otras rutinas de control de cadenas, vea Rutinas de la biblioteca en tiempo de ejecución (RTL).

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

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING