Bagikan melalui


Fungsi FltGetVolumeName (fltkernel.h)

Rutinitas FltGetVolumeName mendapatkan nama volume untuk volume tertentu.

Sintaks

NTSTATUS FLTAPI FltGetVolumeName(
  [in]                PFLT_VOLUME     Volume,
  [in, out, optional] PUNICODE_STRING VolumeName,
  [out, optional]     PULONG          BufferSizeNeeded
);

Parameter

[in] Volume

Penunjuk buram untuk volume. Parameter ini diperlukan dan tidak boleh NULL.

[in, out, optional] VolumeName

Arahkan ke struktur UNICODE_STRING yang dialokasikan penelepon yang berisi nama objek perangkat volume yang tidak persisten (misalnya, "\Device\HarddiskVolume1") saat STATUS_SUCCESS dikembalikan. Ketahuilah bahwa kumpulan untuk VolumeName-Buffer> juga dialokasikan pemanggil.

Parameter ini bersifat opsional dan dapat berupa NULL; namun harus non-NULL jika BufferSizeNeeded adalah NULL. Jika parameter ini NULL dan BufferSizeNeeded bukan NULL, FltGetVolumeName menyimpan ukuran buffer yang diperlukan untuk nama volume yang diminta dalam parameter BufferSizeNeeded dan mengembalikan STATUS_BUFFER_TOO_SMALL. Lihat Keterangan.

[out, optional] BufferSizeNeeded

Penunjuk ke variabel yang dialokasikan pemanggil yang menerima ukuran, dalam byte, dari nama volume yang diminta. Parameter ini bersifat opsional dan dapat berupa NULL; namun, itu harus non-NULL jika VolumeNameNULL sehingga FltGetVolumeName dapat menyimpan ukuran buffer yang diperlukan untuk nama volume yang diminta.

Mengembalikan nilai

FltGetVolumeName mengembalikan salah satu nilai NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS Struktur UNICODE_STRING, yang ditunjukkan oleh VolumeName, berisi nama volume di anggota Buffer untuk struktur dan panjang nama, dalam byte, di anggota Panjang .
STATUS_BUFFER_TOO_SMALL Anggota Buffer dari struktur UNICODE_STRING, yang ditunjukkan oleh VolumeName, terlalu kecil (seperti yang ditunjukkan oleh anggota MaximumLength-nya ) untuk berisi seluruh nama volume. Ini adalah kode kesalahan.
STATUS_INVALID_PARAMETER VolumeName dan BufferSizeNeeded keduanya NULL. Ini adalah kode kesalahan.

Keterangan

Agar rutinitas ini berhasil, anggota Buffer dari struktur UNICODE_STRING (ditunjukkan oleh VolumeName) harus cukup besar, seperti yang ditunjukkan oleh anggota MaximumLength-nya , untuk berisi seluruh string nama volume.

Pseudocode berikut menunjukkan satu metode yang mungkin untuk berhasil memperoleh nama volume jika BufferSizeNeeded tidak diketahui:

  • Panggil FltGetVolumeName untuk menentukan kumpulan yang diperlukan untuk Buffer dan ukuran yang diperlukan untuk MaximumLength. Misalnya: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Alokasikan VolumeNameSize byte kumpulan untuk Buffer dan atur MaximumLength ke VolumeNameSize.

  • Panggil FltGetVolumeName lagi untuk memperoleh nama volume. Misalnya: FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer berisi string nama volume Unicode, yang panjangnya byte VolumeNameStruct.Length .

Untuk mendapatkan nama GUID volume untuk volume tertentu, panggil FltGetVolumeGuidName.

Untuk mendapatkan penunjuk volume buram untuk volume dengan nama tertentu, panggil FltGetVolumeFromName.

Untuk informasi selengkapnya tentang cara memberi nama volume, lihat Mendukung Permintaan Mount Manager di Driver Kelas Penyimpanan**.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header fltkernel.h (termasuk FltKernel.h)
Pustaka FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Lihat juga

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING