Fungsi FsRtlRegisterUncProviderEx (ntifs.h)
Rutinitas FsRtlRegisterUncProviderEx mendaftarkan pengalih jaringan sebagai penyedia konvensi penamaan universal (UNC) dengan sistem beberapa penyedia UNC (MUP).
Sintaks
NTSTATUS FsRtlRegisterUncProviderEx(
[out] PHANDLE MupHandle,
[in] PCUNICODE_STRING RedirDevName,
[in] PDEVICE_OBJECT DeviceObject,
[in] FSRTL_UNC_PROVIDER_FLAGS Flags
);
Parameter
[out] MupHandle
Penunjuk ke lokasi untuk mengembalikan handel MUP yang akan digunakan saat memanggil FsRtlDeregisterUncProvider untuk membatalkan pendaftaran pengalihan jaringan. Handel yang dikembalikan hanya valid jika FsRtlRegisterUncProviderEx mengembalikan STATUS_SUCCESS.
[in] RedirDevName
Penunjuk ke string Unicode yang berisi nama perangkat pengalih jaringan. MUP menggunakan nama perangkat ini untuk membuat tautan simbolis di namespace Object Manager yang targetnya adalah \Device\Mup.
[in] DeviceObject
Penunjuk ke objek perangkat yang tidak disebutkan namanya yang mewakili pengalih jaringan.
[in] Flags
Bitmask yang menunjukkan fitur yang didukung oleh pengalih jaringan. Pengalih jaringan mengatur sedikit untuk menunjukkan bahwa fitur didukung. Parameter Bendera memiliki dua opsi:
FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED
Pengalih jaringan mendukung mailslots. Opsi ini biasanya dicadangkan untuk digunakan oleh pengalih Microsoft SMB.
FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED
Pengalih jaringan mendukung akses offline menggunakan penembolokan sisi klien.
Nilai kembali
FsRtlRegisterUncProviderEx mengembalikan STATUS_SUCCESS pada keberhasilan atau nilai NTSTATUS yang sesuai seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
|
Mode pemohon IRP yang dikirim ke MUP bukan dari mode kernel. |
|
Pelanggaran akses terjadi saat mencoba akses ke perangkat MUP. |
|
Ada ketidakselarasan data. |
|
Tidak tersedia cukup sumber daya untuk mengalokasikan memori untuk buffer. |
|
Permintaan dibuat untuk mendaftarkan penyedia yang diketahui yang sudah terdaftar. |
|
Parameter RedirDevName tidak valid karena panjang RedirDevName adalah nol. |
|
Ketidakcocokan jenis objek ditemui dengan parameter DeviceObject . |
Keterangan
Pengalih jaringan harus mendaftar dengan beberapa penyedia UNC (MUP) untuk menangani nama Universal Naming Convention (UNC). MUP adalah komponen mode kernel yang bertanggung jawab untuk menyalurkan semua akses sistem file jarak jauh menggunakan nama Universal Naming Convention (UNC) ke pengalih jaringan (penyedia UNC) yang mampu menangani permintaan sistem file jarak jauh. MUP terlibat ketika jalur UNC digunakan oleh aplikasi seperti yang diilustrasikan oleh contoh berikut yang dapat dijalankan dari baris perintah:
notepad \\server\public\readme.txt
MUP tidak terlibat selama operasi yang membuat huruf drive yang dipetakan (perintah "NET USE", misalnya). Operasi ini ditangani oleh beberapa router penyedia (MPR) dan DLL penyedia WNet mode pengguna untuk pengalihan jaringan. Namun, DLL penyedia WNet mode pengguna mungkin berkomunikasi langsung dengan driver pengalih jaringan mode kernel selama operasi ini.
Untuk pengalihan jaringan yang sesuai dengan model pengalihan Windows Vista, MUP terlibat bahkan ketika drive jaringan yang dipetakan digunakan. Operasi file yang dilakukan pada drive yang dipetakan melalui MUP ke pengalih jaringan. Perhatikan bahwa dalam hal ini, MUP hanya meneruskan operasi ke pengalihan jaringan yang terlibat.
FsRtlRegisterUncProviderEx mengirimkan kontrol sistem file privat (FSCTL) ke MUP untuk melakukan pendaftaran.
Nama perangkat yang ditentukan dalam parameter RedirDevName dalam panggilan ke FsRtlRegisterUncProviderEx menjadi tautan simbolis ke \device\Mup di namespace pengelola objek. Selain itu, permintaan terbuka dari nama perangkat, RedirDevName, akan merutekan dirinya ke objek perangkat pengalih jaringan aktual yang diarahkan oleh parameter DeviceObject .
Pengalih jaringan yang memanggil FsRtlRegisterUncProviderEx tidak boleh mendaftarkan diri sebagai sistem file (pengalihan jaringan tidak boleh memanggil IoRegisterFileSystem). Pengalih mini jaringan yang menggunakan Windows Vista RDBSS (penautan dinamis atau statis) tidak akan didaftarkan sebagai sistem file.
Objek file pada tumpukan sistem file jarak jauh yang dimiliki oleh pengalih jaringan yang sesuai dengan model pengalihan Windows Vista diselesaikan ke MUP. Jadi IoGetDeviceAttachmentBaseRef mengembalikan objek perangkat untuk MUP, bukan pengalih jaringan yang memiliki objek file. Namun, konten objek file masih dimiliki oleh pengalih jaringan.
Nilai registri ProviderOrder menentukan urutan di mana MUP mengeluarkan permintaan resolusi awalan ke pengalih jaringan individual. Urutan ini dapat diubah secara dinamis tanpa reboot. Nilai registri ini terletak di bawah kunci registri berikut:
HKLM\CurrentControlSet\Control\NetworkProvider\Order
Hanya satu penyedia jaringan pada sistem yang dapat mendukung mailslots. Jadi opsi FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED dalam parameter Bendera biasanya hanya diatur untuk pengalih Microsoft SMB.
Untuk membatalkan pendaftaran penyedia UNC, gunakan FsRtlDeregisterUncProvider dan lewati parameter MupHandle .
Jika driver mendaftar sebagai sistem file disk lokal (dengan memanggil IoCreateDevice dengan parameter DeviceType diatur ke FILE_DEVICE_DISK_FILE_SYSTEM), driver tidak boleh memanggil FsRtlRegisterUncProviderEx untuk mendaftar sebagai penyedia UNC dengan MUP.
Untuk informasi selengkapnya, lihat bagian berikut ini di Panduan Desain:
Dukungan untuk Penamaan UNC dan MUP
Perubahan MUP di Microsoft Windows Vista
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista |
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |