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 |