Fungsi RxPrepareToReparseSymbolicLink (rxprocs.h)
RxPrepareToReparseSymbolicLink menyiapkan nama objek file untuk memfasilitasi pemilahan ulang. Rutinitas ini digunakan oleh pengalih mini jaringan untuk melintasi tautan simbolis.
Sintaks
NTSTATUS RxPrepareToReparseSymbolicLink(
PRX_CONTEXT RxContext,
BOOLEAN SymbolicLinkEmbeddedInOldPath,
PUNICODE_STRING NewPath,
BOOLEAN NewPathIsAbsolute,
PBOOLEAN ReparseRequired
);
Parameter
RxContext
Penunjuk ke struktur RX_CONTEXT.
SymbolicLinkEmbeddedInOldPath
Nilai Boolean yang menunjukkan bahwa tautan simbolis ditemukan. Jika nilainya TRUE, tautan simbolis ditemui sebagai bagian dari traversal jalur lama.
NewPath
Penunjuk ke string Unicode yang berisi nama jalur baru yang akan dilalui.
NewPathIsAbsolute
Nilai Boolean yang menunjukkan apakah jalur baru bersifat absolut. Jika nilai ini FALSE, \Device\Mup harus ditambahkan ke NewPath. Jika nilai ini TRUE, parameter NewPath adalah jalur lengkap untuk dipilah kembali. Dalam hal ini, buffer yang berisi NewPath digunakan secara langsung, daripada mengalokasikan buffer baru.
ReparseRequired
Penunjuk ke nilai Boolean yang menunjukkan apakah pemisahan ulang diperlukan. Jika nilai ini TRUE, diperlukan pemisahan ulang.
Nilai kembali
RxPrepareToReparseSymbolicLink mengembalikan STATUS_SUCCESS pada keberhasilan atau salah satu nilai kesalahan berikut pada kegagalan:
Menampilkan kode | Deskripsi |
---|---|
|
Permintaan untuk menghapus gagal. |
|
Tidak tersedia cukup sumber daya. |
|
Parameter yang tidak valid diteruskan ke rutinitas. Kesalahan ini akan dikembalikan jika anggota MajorFunctionRxContext tidak IRP_MJ_CREATE. |
Keterangan
Rutinitas RxPrepareToReparseSymbolicLink hanya akan digunakan oleh pengalih mini jaringan yang mendukung tautan simbolis dan menggunakan titik reparse untuk mengimplementasikan tautan simbolis. Rutinitas RxPrepareToReparseSymbolicLink biasanya akan dipanggil oleh pengalih mini jaringan dari rutinitas panggilan balik MrxCreate-nya .
Parameter SymbolicLinkEmbeddedInOldPath yang diteruskan ke rutinitas ini sangat penting. Untuk mempertahankan semantik yang benar, semantik harus digunakan dengan hati-hati. Misalnya, pertimbangkan jalur lama \A\B\C\D di mana C kebetulan merupakan tautan simbolis. Dalam hal ini, tautan simbolis disematkan di jalur dan SymbolicLinkEmbeddedInOldPath harus diatur ke TRUE. Sebaliknya, ini sangat berbeda dari kasus ketika D kebetulan menjadi tautan simbolis. Dalam kasus sebelumnya, pemisahan ulang merupakan langkah perantara. Dalam contoh kedua, pemisahan ulang merupakan langkah terakhir dari resolusi nama dan SymbolicLinkEmbeddedInOldPath harus diatur ke FALSE.
Jika akses DELETE ditentukan, operasi buka atau buat ditolak untuk semua kasus di mana tautan simbolis tidak disematkan. Ada kemungkinan bahwa jika akses DELETE adalah satu-satunya yang ditentukan, maka upaya terbuka harus berhasil tanpa pemilahan ulang. Ini sesuai dengan semantik tautan simbolis UNIX.
Sebagai bagian dari rutinitas ini, RxContext juga ditandai dengan tepat. Ini memastikan bahwa nilai yang dikembalikan dapat diperiksa silang dengan pemanggilan rutinitas ini. Setelah RxPrepareToReparseSymbolicLink dipanggil, pengalih mini jaringan harus mengembalikan STATUS_REPARSE.
Nilai parameter ReparseRequired mengasumsikan signifikansi hanya jika STATUS_SUCCESS dikembalikan dari rutinitas ini. Jika ReparseRequiredFALSE, ini menyiratkan bahwa tidak ada upaya pemilahan ulang yang diperlukan dan file tautan simbolis itu sendiri harus dimanipulasi dibandingkan dengan target tautan. Jika ReparseRequiredTRUE, ini menyiratkan bahwa upaya pemilahan ulang berhasil disiapkan. Dalam kasus seperti itu, sangat penting bahwa pengalih mini jaringan mengembalikan STATUS_REPARSE untuk panggilan MRxCreate terkait. RDBSS akan memulai pemeriksaan untuk kondisi ini.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | rxprocs.h (termasuk Rxprocs.h) |
IRQL | <= APC_LEVEL |