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
STATUS_ACCESS_DENIED
Mode pemohon IRP yang dikirim ke MUP bukan dari mode kernel.
STATUS_ACCESS_VIOLATION
Pelanggaran akses terjadi saat mencoba akses ke perangkat MUP.
STATUS_DATATYPE_MISALIGNMENT
Ada ketidakselarasan data.
STATUS_INSUFFICIENT_RESOURCES
Tidak tersedia cukup sumber daya untuk mengalokasikan memori untuk buffer.
STATUS_INVALID_DEVICE_REQUEST
Permintaan dibuat untuk mendaftarkan penyedia yang diketahui yang sudah terdaftar.
STATUS_INVALID_PARAMETER
Parameter RedirDevName tidak valid karena panjang RedirDevName adalah nol.
STATUS_OBJECT_TYPE_MISMATCH
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)

Lihat juga

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem