PFLT_GENERATE_FILE_NAME fungsi panggilan balik (fltkernel.h)

Driver minifilter yang menyediakan nama file untuk cache nama manajer filter dapat mendaftarkan rutinitas jenis PFLT_GENERATE_FILE_NAME sebagai rutinitas GenerateFileNameCallback driver minifilter.

Sintaks

PFLT_GENERATE_FILE_NAME PfltGenerateFileName;

NTSTATUS PfltGenerateFileName(
  [in]           PFLT_INSTANCE Instance,
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PFLT_CALLBACK_DATA CallbackData,
  [in]           FLT_FILE_NAME_OPTIONS NameOptions,
  [out]          PBOOLEAN CacheFileNameInformation,
  [out]          PFLT_NAME_CONTROL FileName
)
{...}

Parameter

[in] Instance

Penunjuk instans buram untuk instans driver minifilter tempat rutinitas panggilan balik ini didaftarkan.

[in] FileObject

Penunjuk ke objek file untuk file yang namanya sedang diminta.

[in, optional] CallbackData

Penunjuk ke struktur data panggilan balik untuk operasi di mana nama ini diminta. Parameter ini NULL ketika FltGetFileNameInformationUnsafe dipanggil untuk mengambil nama file.

[in] NameOptions

FLT_FILE_NAME_OPTIONS nilai yang menentukan format nama, metode kueri, dan bendera untuk kueri informasi nama file ini.

[out] CacheFileNameInformation

Penunjuk ke nilai Boolean yang menentukan apakah nama ini dapat di-cache. Atur ke TRUE pada output jika nama dapat di-cache; atur ke FALSE jika tidak.

[out] FileName

Penunjuk ke struktur FLT_NAME_CONTROL yang dialokasikan manajer filter untuk menerima nama file pada output.

Nilai kembali

Rutinitas panggilan balik ini mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai.

Keterangan

Driver minifilter yang menyediakan nama file untuk cache nama manajer filter dapat mendaftarkan rutinitas jenis PFLT_GENERATE_FILE_NAME sebagai rutinitas GenerateFileNameCallback driver minifilter.

Untuk mendaftarkan rutinitas panggilan balik ini, driver minifilter menyimpan alamat rutinitas jenis PFLT_GENERATE_FILE_NAME di anggota GenerateFileNameCallback dari struktur FLT_REGISTRATION yang diteruskan driver minifilter sebagai parameter ke FltRegisterFilter.

Manajer filter memanggil rutinitas panggilan balik ini untuk memungkinkan driver minifilter mencegat permintaan nama file oleh driver minifilter lain di atasnya di tumpukan instans driver minifilter. Menggunakan rutinitas panggilan balik ini dan rutinitas panggilan balik PFLT_NORMALIZE_NAME_COMPONENT , driver minifilter dapat memberikan informasi nama filenya sendiri.

Untuk menentukan format nama file mana yang diminta, panggil FltGetFileNameFormat pada parameter NameOptions .

Sebelum Windows 8, rutinitas panggilan balik ini hanya dipanggil untuk nama file yang dibuka dan nama file pendek. Ketika manajer filter menerima permintaan untuk nama file yang dinormalisasi, manajer filter memanggil rutinitas panggilan balik ini untuk meminta nama file yang dibuka. Kemudian memanggil panggilan balik PFLT_NORMALIZE_NAME_COMPONENT driver minifilter untuk menormalkan setiap komponen dalam nama file.

Dimulai dengan Windows 8, rutinitas panggilan balik ini juga dipanggil untuk nama yang dinormalisasi. Ketika manajer filter menerima permintaan untuk nama file yang dinormalisasi, manajer filter memanggil rutinitas panggilan balik ini dengan FLT_FILE_NAME_NORMALIZED yang ditentukan dalam parameter NameOptions . Jika minifilter kembali STATUS_SUCCESS dari panggilan balik ini, panggilan balik PFLT_NORMALIZE_NAME_COMPONENT minifilter tidak akan dipanggil. Jika minifilter mengembalikan kode kegagalan (seperti STATUS_NOT_SUPPORTED), manajer filter akan memanggil rutinitas panggilan balik ini lagi, meminta nama file yang dibuka. Manajer filter kemudian akan memanggil panggilan balik PFLT_NORMALIZE_NAME_COMPONENT driver minifilter untuk menormalkan setiap komponen dalam nama file.

Ketika rutinitas panggilan balik ini dipanggil, driver minifilter menghasilkan informasi nama filenya sendiri, berdasarkan informasi nama file sistem file untuk file tersebut. Untuk mendapatkan informasi nama file sistem file untuk file, panggil FltGetFileNameInformation, FltGetFileNameInformationUnsafe, atau FltGetDestinationFileNameInformation.

Untuk nama file yang dibuka, informasi nama file yang dihasilkan harus menyertakan informasi volume. Untuk file jarak jauh, file harus menyertakan informasi berbagi juga.

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

\Device\LanManRedirector\MyServer\MyShare\Docume~1\MyUser\My Documents\TestRe~1.txt:stream1

Untuk informasi selengkapnya tentang format nama file, lihat entri referensi untuk FLT_FILE_NAME_INFORMATION dan FltParseFileNameInformation.

Setelah menghasilkan informasi nama file, driver minifilter harus memanggil FltCheckAndGrowNameControl untuk memeriksa apakah struktur FLT_NAME_CONTROL yang ditunjuk parameter FileName berisi buffer nama yang cukup besar untuk menyimpan nama file yang dihasilkan. Jika buffer nama terlalu kecil, FltCheckAndGrowNameControl menggantinya dengan yang lebih besar. Driver minifilter kemudian menyimpan informasi nama file ke dalam buffer nama dan kembali.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header fltkernel.h (termasuk Fltkernel.h)
IRQL PASSIVE_LEVEL

Lihat juga

FLT_CALLBACK_DATA

FLT_FILE_NAME_INFORMATION

FLT_FILE_NAME_OPTIONS

FLT_NAME_CONTROL

FLT_REGISTRATION

FltCheckAndGrowNameControl

FltGetDestinationFileNameInformation

FltGetFileNameFormat

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetFileNameQueryMethod

FltParseFileName

FltParseFileNameInformation

FltPurgeFileNameInformationCache

FltRegisterFilter

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

PFLT_NORMALIZE_NAME_COMPONENT_EX