Bagikan melalui


struktur FLT_FILE_NAME_INFORMATION (fltkernel.h)

Struktur FLT_FILE_NAME_INFORMATION berisi informasi nama file.

Sintaks

typedef struct _FLT_FILE_NAME_INFORMATION {
  USHORT                     Size;
  FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
  FLT_FILE_NAME_OPTIONS      Format;
  UNICODE_STRING             Name;
  UNICODE_STRING             Volume;
  UNICODE_STRING             Share;
  UNICODE_STRING             Extension;
  UNICODE_STRING             Stream;
  UNICODE_STRING             FinalComponent;
  UNICODE_STRING             ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;

Anggota

Size

Ukuran, dalam byte, dari struktur FLT_FILE_NAME_INFORMATION.

NamesParsed

Bitmask bendera yang menunjukkan komponen nama mana yang telah diurai dari string Nama oleh FltParseFileNameInformation. Perhatikan bahwa, saat mengurai string Nama , FltParseFileNameInformation mengatur bendera ini untuk setiap komponen, apakah komponen ditemukan ada dalam string. Nilai-nilai ini dapat digabungkan dengan menggunakan operator OR.

Bendera Komponen
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT FinalComponent
FLTFL_FILE_NAME_PARSED_EXTENSION Ekstensi
FLTFL_FILE_NAME_PARSED_STREAM Stream
FLTFL_FILE_NAME_PARSED_PARENT_DIR ParentDir

Format

Format informasi nama yang disimpan di anggota Nama . Anggota ini bisa menjadi salah satu nilai berikut. (Untuk penjelasan tentang format ini, lihat bagian Keterangan berikut.)

Nilai Makna
FLT_FILE_NAME_NORMALIZED Anggota Nama berisi nama yang dinormalisasi untuk file.
FLT_FILE_NAME_OPENED Anggota Nama berisi nama yang digunakan saat file dibuka. String nama ini tidak dinormalisasi.
FLT_FILE_NAME_SHORT Anggota Nama berisi nama pendek (8.3) untuk file tersebut. Nama pendek untuk file tidak menyertakan nama volume, jalur direktori, atau nama aliran. String nama ini tidak dinormalisasi.

Name

UNICODE_STRING struktur yang berisi string nama file, diformat seperti yang ditentukan oleh anggota Format .

Volume

UNICODE_STRING struktur yang berisi nama volume yang diurai dari string Nama . Jika Format FLT_FILE_NAME_SHORT, Volume.Length adalah nol.

Share

UNICODE_STRING struktur yang berisi nama berbagi jaringan yang diurai dari string Nama untuk file jarak jauh. Jika Format FLT_FILE_NAME_SHORT, Share.Length adalah nol.

Extension

UNICODE_STRING struktur yang berisi ekstensi yang diurai dari string Nama . Jika tidak ada ekstensi yang ditemukan, FltParseFileNameInformation mengatur Extension.Length ke nol.

Stream

UNICODE_STRING struktur yang berisi nama aliran yang diurai dari string Nama . Jika tidak ada nama aliran yang ditemukan, atau jika Format FLT_FILE_NAME_SHORT, FltParseFileNameInformation menetapkan Stream. Panjang hingga nol.

FinalComponent

UNICODE_STRING struktur yang berisi komponen nama akhir yang diurai dari string Nama . Jika tidak ada nama komponen akhir yang ditemukan, atau jika Format FLT_FILE_NAME_SHORT, FltParseFileNameInformation mengatur FinalComponent.Length ke nol.

ParentDir

UNICODE_STRING struktur yang berisi nama direktori induk yang diurai dari string Nama oleh FltParseFileNameInformation. Jika tidak ada nama direktori induk yang ditemukan, atau jika Format FLT_FILE_NAME_SHORT, FltParseFileNameInformation mengatur ParentDir.Length ke nol.

Keterangan

Anggota Nama berisi salah satu hal berikut ini:

  • Nama yang dinormalisasi untuk file
  • Nama yang dibuka untuk file
  • Nama pendek untuk file
Nama file dianggap dinormalisasi jika semua hal berikut ini benar:
  • Ini berisi jalur direktori lengkap untuk file, termasuk nama volume, kecuali pengguna membuka file dengan ID file tetapi tidak memiliki hak istimewa melintasi untuk seluruh jalur. (Untuk informasi selengkapnya, lihat FltGetFileNameInformation.)
  • Nama volume adalah nama objek perangkat volume yang tidak konsisten (misalnya, "\Device\HarddiskVolume1").
  • Semua nama pendek diperluas ke nama panjang yang setara.
  • String ":$DATA" atau "::$DATA" berikutnya dihapus dari nama aliran.
  • Semua titik pemasangan diselesaikan.
Berikut ini adalah contoh nama file yang dinormalisasi untuk file lokal:
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Berikut ini adalah contoh nama file yang dinormalisasi untuk file jarak jauh:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Nama yang dibuka untuk file adalah nama yang digunakan ketika file dibuka. Seperti nama yang dinormalisasi, ini berisi jalur direktori lengkap untuk file, termasuk nama volume. Ini berbeda dari nama yang dinormalisasi dengan cara berikut:

  • Jalur direktori untuk file dapat berisi nama pendek serta nama panjang.
  • String ":$DATA" dan "::$DATA" berikutnya tidak dihapus dari nama aliran.
  • Titik pemasangan tidak diselesaikan.
Berikut ini adalah contoh nama file yang dibuka untuk file lokal:
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA

Berikut ini adalah contoh nama file yang dibuka untuk file jarak jauh:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Nama pendek untuk file adalah nama pendek (8.3) untuk komponen akhir nama file. Karena dihasilkan ketika file dibuka, nama pendek tidak tersedia untuk objek file yang tidak dibuka, dan tidak tersedia di jalur buat pengiriman ("pra-buat"). Ini juga tidak tersedia untuk objek file aliran NTFS. Tidak semua file yang terbuka memiliki nama file pendek. Misalnya, pada partisi NTFS di mana pembuatan nama file pendek telah dinonaktifkan, tidak ada file yang memiliki nama file pendek.

Berikut ini adalah contoh nama pendek untuk file:

TestRe~1.txt

Untuk mendapatkan struktur FLT_FILE_NAME_INFORMATION untuk file, panggil FltGetFileNameInformation, FltGetFileNameInformationUnsafe, atau FltGetDestinationFileNameInformation. Rutinitas ini mengembalikan penunjuk ke struktur FLT_FILE_NAME_INFORMATION milik Manajer Filter yang dibagikan oleh semua minifilter.

Catatan Jangan ubah isi struktur FLT_FILE_NAME_INFORMATION, karena struktur ini di-cache oleh Manajer Filter sehingga semua minifilter dapat menggunakannya. Jika minifilter Anda harus memodifikasi informasi ini dalam beberapa cara, itu harus menyalin informasi ke buffer lain terlebih dahulu.
 
Sistem file seperti NTFS dan FAT menggunakan cache terowongan per volume untuk mempertahankan nama file dan metadata lain secara singkat untuk file yang sedang diganti namanya, ditautkan, atau dihapus. Penerowongan nama file ini dapat menyebabkan komponen akhir dalam informasi nama file yang dinormalisasi yang dikembalikan oleh panggilan praoperasi ke FltGetFileNameInformation, FltGetFileNameInformationUnsafe, atau FltGetDestinationFileNameInformation menjadi tidak valid. Jika minifilter mengambil informasi nama file yang dinormalisasi dalam rutinitas panggilan balik praoperasi (PFLT_PRE_OPERATION_CALLBACK) untuk operasi buat, tautan keras, atau ganti nama, itu harus memanggil FltGetTunneledName dari rutinitas panggilan balik pascaoperasi (PFLT_POST_OPERATION_CALLBACK) untuk mengambil informasi nama file yang benar untuk file.

Meskipun berisi banyak struktur UNICODE_STRING , struktur FLT_FILE_NAME_INFORMATION tidak menempati banyak ruang dalam memori karena semua struktur UNICODE_STRING dalam struktur FLT_FILE_NAME_INFORMATION berbagi buffer tunggal.

Untuk mengurai konten string Nama , panggil FltParseFileNameInformation. Rutinitas ini menetapkan nilai anggota Ekstensi, Stream, FinalComponent, ParentDir, dan NamesParsed dari struktur ini.

Minifilter bertanggung jawab untuk memanggil FltReleaseFileNameInformation untuk merilis struktur FLT_FILE_NAME_INFORMATION ketika tidak lagi diperlukan.

Persyaratan

Persyaratan Nilai
Header fltkernel.h (termasuk Fltkernel.h)

Lihat juga

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileName

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING