PFLT_NORMALIZE_NAME_COMPONENT_EX fungsi panggilan balik (fltkernel.h)

Driver minifilter yang menyediakan nama file untuk cache nama manajer filter dapat mendaftarkan rutinitas jenis PFLT_NORMALIZE_NAME_COMPONENT_EX sebagai rutinitas panggilan balik NormalizeNameComponentExCallback driver minifilter.

Sintaks

PFLT_NORMALIZE_NAME_COMPONENT_EX PfltNormalizeNameComponentEx;

NTSTATUS PfltNormalizeNameComponentEx(
  [in]      PFLT_INSTANCE Instance,
  [in]      PFILE_OBJECT FileObject,
  [in]      PCUNICODE_STRING ParentDirectory,
  [in]      USHORT VolumeNameLength,
  [in]      PCUNICODE_STRING Component,
  [out]     PFILE_NAMES_INFORMATION ExpandComponentName,
  [in]      ULONG ExpandComponentNameLength,
  [in]      FLT_NORMALIZE_NAME_FLAGS Flags,
  [in, out] PVOID *NormalizationContext
)
{...}

Parameter

[in] Instance

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

[in] FileObject

Arahkan ke objek file untuk file yang namanya diminta atau file yang merupakan target operasi IRP_MJ_SET_INFORMATION jika bendera FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME diatur. Lihat parameter Bendera di bawah ini untuk informasi selengkapnya.

[in] ParentDirectory

Penunjuk ke struktur UNICODE_STRING yang berisi nama direktori induk untuk komponen nama ini.

[in] VolumeNameLength

Panjang, dalam byte, dari nama direktori induk yang disimpan dalam struktur yang dirujuk parameter ParentDirectory .

[in] Component

Penunjuk ke struktur UNICODE_STRING yang berisi komponen nama yang akan diperluas.

[out] ExpandComponentName

Penunjuk ke struktur FILE_NAMES_INFORMATION yang menerima informasi nama file yang diperluas (dinormalisasi) untuk komponen nama.

[in] ExpandComponentNameLength

Panjang, dalam byte, dari buffer yang dirujuk parameter ExpandComponentName .

[in] Flags

Bendera normalisasi nama. FLTFL_NORMALIZE_NAME_CASE_SENSITIVE menentukan bahwa nama yang akan dinormalisasi peka huruf besar/kecil. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME menentukan bahwa rutinitas panggilan balik telah dipanggil untuk melayani panggilan rutin FltGetDestinationFileNameInformation . Jika bendera FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME diatur, FileObject mewakili file/direktori yang merupakan target operasi IRP_MJ_SET_INFORMATION. Jika bendera FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME tidak diatur, FileObject mewakili file/direktori yang namanya sedang diminta.

[in, out] NormalizationContext

Arahkan ke informasi konteks yang disediakan driver minifilter untuk diteruskan dalam setiap panggilan berikutnya ke rutinitas panggilan balik ini yang dibuat untuk menormalkan komponen yang tersisa di jalur nama file yang sama.

Nilai kembali

Rutinitas panggilan balik ini mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai. Jika komponen nama yang ditentukan parameter Komponen tidak ada di direktori induk yang ditentukan parameter ParentDirectory , rutinitas panggilan balik ini harus mengembalikan STATUS_NO_SUCH_FILE. Jika panggilan balik ini secara rutin mengeluarkan permintaan IRP_MN_QUERY_DIRECTORY (FileNamesInformation) ke direktori induk, sistem file mengembalikan kode status yang benar. Dalam situasi ini, panggilan balik ini hanya dapat mengembalikan kode status yang dikembalikan sistem file.

Keterangan

Driver minifilter yang menyediakan nama file untuk cache nama manajer filter dapat mendaftarkan rutinitas jenis PFLT_NORMALIZE_NAME_COMPONENT_EX sebagai rutinitas panggilan balik NormalizeNameComponentExCallback driver minifilter.

Perbedaan utama antara rutinitas panggilan balik NormalizeNameComponentExCallback dan rutinitas panggilan balik NormalizeNameComponentCallback (dari jenis PFLT_NORMALIZE_NAME_COMPONENT) adalah bahwa rutinitas panggilan balik NormalizeNameComponentExCallback mendukung parameter FileObject tambahan. Objek file (FileObject) dapat digunakan oleh driver minifilter untuk mengambil struktur TXN_PARAMETER_BLOCK untuk operasi yang diikuti file/direktori dengan memanggil rutinitas IoGetTransactionParameterBlock . Struktur TXN_PARAMETER_BLOCK dapat digunakan oleh driver minifilter untuk mengeluarkan permintaan pembuatannya sendiri dalam konteks transaksi yang diikuti objek file ini.

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

Manajer filter memanggil rutinitas panggilan balik ini untuk mengkueri driver minifilter untuk nama yang dinormalisasi untuk komponen dalam jalur nama file yang namanya telah diubah oleh driver minifilter. Jika jalur nama file berisi lebih dari satu komponen tersebut, manajer filter dapat memanggil rutinitas panggilan balik ini beberapa kali dalam proses menormalkan semua komponen di jalur. Driver minifilter dapat menggunakan parameter NormalizationContext untuk meneruskan informasi konteks ke panggilan berikutnya ke rutinitas panggilan balik ini.

Jika driver minifilter menggunakan parameter NormalizationContext , driver minifilter juga harus mendaftarkan rutinitas panggilan balik pembersihan konteks normalisasi. Untuk informasi selengkapnya, lihat entri referensi untuk PFLT_NORMALIZE_CONTEXT_CLEANUP.

Persyaratan

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

Lihat juga

FILE_NAMES_INFORMATION

FLT_REGISTRATION

FltGetDestinationFileNameInformation

FltRegisterFilter

IRP_MJ_SET_INFORMATION

IoGetTransactionParameterBlock

PFLT_GENERATE_FILE_NAME

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

TXN_PARAMETER_BLOCK

UNICODE_STRING