Bagikan melalui


Fungsi RtlGenerate8dot3Name (ntifs.h)

Rutinitas RtlGenerate8dot3Name menghasilkan nama pendek (8,3) untuk nama file panjang yang ditentukan.

Sintaks

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

Parameter

[in] Name

Penunjuk ke string Unicode yang berisi nama panjang untuk file. Setiap periode di depan dalam nama file ini dilewati selama pembuatan nama pendek yang sesuai.

[in] AllowExtendedCharacters

Atur ke TRUE jika nama file pendek yang dihasilkan dapat berisi karakter yang diperluas. Atur ke FALSE jika nama file pendek yang dihasilkan hanya boleh berisi karakter dalam rentang ANSI atau OEM halaman kode saat ini dari 0x20 (spasi) melalui 0x7f (DEL).

[in, out] Context

Penunjuk ke buffer yang dialokasikan pemanggil untuk digunakan oleh RtlGenerate8dot3Name. Sebelum memanggil RtlGenerate8dot3Name untuk pertama kalinya untuk menerjemahkan nama file panjang yang diberikan, pemanggil bertanggung jawab untuk mengisi buffer dengan nol.

[in, out] Name8dot3

Arahkan ke buffer yang dialokasikan pemanggil untuk menerima nama file pendek yang dihasilkan. Ukuran buffer ini harus minimal 24 byte (12 karakter Unicode).

Nilai kembali

Rutinitas ini mengembalikan STATUS_SUCCESS jika nama pendek berhasil dihasilkan. Ini mengembalikan STATUS_FILE_SYSTEM_LIMITATION jika sistem tidak dapat menghasilkan nama pendek yang unik untuk file tertentu. Ini mengembalikan kesalahan ini setelah 1 juta upaya coba lagi untuk satu nama panjang yang diberikan.

Keterangan

RtlGenerate8dot3Name mengembalikan nama pendek yang dihasilkan dengan paling banyak delapan karakter, diikuti dengan titik dan hingga tiga karakter lagi.

RtlGenerate8dot3Name dapat dipanggil berulang kali. Misalnya, jika nama pendek yang awalnya dihasilkan adalah duplikat dari nama file yang ada, pemanggil dapat meneruskan parameter yang sama ke RtlGenerate8dot3Name lagi. Dalam hal ini, buffer di Context tidak boleh diinisialisasi ulang dengan nol. Buffer ini harus di-nol hanya untuk panggilan awal untuk menerjemahkan nama panjang yang diberikan. Pada panggilan berulang untuk nama panjang yang sama, RtlGenerate8dot3Name menyimpan informasi konteks privat dalam buffer ini untuk mencegah tabrakan nama.

Dua panggilan ke RtlGenerate8dot3Name dengan Nama dan Konteks yang sama tidak dijamin untuk mengembalikan hasil yang sama. Penelepon harus mengasumsikan bahwa pemetaan nama panjang ke nama pendek tidak menentukan.

RtlGenerate8dot3Name menerjemahkan nama panjang yang diberikan menggunakan halaman kode sistem saat ini, membuang karakter yang tidak valid atau berlebihan dalam nama panjang input. Saat AllowExtendedCharacters diatur ke TRUE, karakter ANSI atau double-byte character set (DBCS) yang memetakan ke karakter OEM huruf besar dapat menjadi bagian dari nama pendek yang dikembalikan.

RtlGenerate8dot3Name mengembalikan nama file pendek dengan karakter alfabet huruf besar. Ini mengembalikan garis bawah dalam nama pendek yang dihasilkan untuk salah satu karakter berikut yang ditemuinya dalam nama panjang yang diberikan:

  • Titik dua dan titik koma
  • Koma
  • Tanda plus dan sama dengan
  • Kurung siku

Untuk informasi tentang rutinitas penanganan string lainnya, lihat Rutinitas Pustaka Run-Time (RTL).

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Lihat juga

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING