Menentukan Nama Perangkat MS-DOS
Nama perangkat MS-DOS adalah persimpangan yang menunjuk ke jalur perangkat MS-DOS. Persimpangan-persimpangan ini menyusun namespace perangkat MS-DOS. Panggil fungsi DefineDosDevice dan SetVolumeMountPoint untuk membuat dan memodifikasi persimpangan ini. DeleteVolumeMountPoint menghapus persimpangan yang dibuat oleh SetVolumeMountPoint, dan DefineDosDevice menghapus persimpangan yang dibuatnya.
Setelah nama perangkat MS-DOS ditentukan, nama perangkat tetap terlihat oleh semua proses.
- Semua perangkat MS-DOS diidentifikasi oleh Windows melalui ID autentikasi. ID autentikasi adalah LUID (pengidentifikasi unik lokal) yang terkait dengan setiap sesi masuk saat dibuat.
- Visibilitas nama perangkat MS-DOS dikategorikan sebagai global atau lokal, dan didefinisikan dengan penyertaannya dalam namespace Perangkat MS-DOS Global dan Perangkat MS-DOS Lokal. Konten perangkat MS-DOS di namespace layanan Global dapat diakses oleh semua pengguna, dan konten perangkat MS-DOS di namespace layanan Lokal hanya dapat diakses oleh pengguna yang token aksesnya berisi AuthenticationID yang terkait dengan namespace perangkat MS-DOS Lokal tersebut.
Beberapa namespace Perangkat Lokal MS-DOS dan hanya satu namespace Perangkat Global MS-DOS dapat ada pada satu waktu dan pada satu komputer.
Perhatikan bahwa hanya proses yang berjalan dalam konteks LocalSystem yang dapat memanggil DefineDosDevice untuk membuat perangkat MS-DOS di namespace perangkat Global MS-DOS. Selain itu, namespace perangkat MS-DOS lokal yang sesuai dengan AuthenticationID tertentu dihapus saat referensi terakhir ke AuthenticationID tersebut dihapus.
Saat kode Anda meminta nama perangkat MS-DOS yang sudah ada dengan memanggil QueryDosDevice, kode pertama-tama mencari namespace layanan Perangkat MS-DOS Lokal. Jika tidak ditemukan di sana, fungsi kemudian akan mencari namespace Perangkat Global MS-DOS. Saat kode Anda meminta semua nama perangkat MS-DOS yang ada melalui fungsi ini, daftar nama yang dikembalikan bergantung pada apakah kode tersebut berjalan dalam konteks LocalSystem. Jika demikian, hanya nama perangkat MS-DOS yang disertakan dalam namespace Perangkat MS-DOS Global yang akan dikembalikan. Jika tidak, perangkaian nama perangkat di namespace Perangkat MS-DOS Global dan Lokal akan dikembalikan. Jika nama perangkat ada di kedua namespace layanan, QueryDosDevice akan mengembalikan entri di namespace layanan Perangkat MS-DOS Lokal. Ini juga berlaku untuk daftar semua nama perangkat MS-DOS yang dikembalikan oleh GetLogicalDrives dan GetLogicalDriveStrings.
Perhatikan bahwa skenario berikut mungkin terjadi:
- Pengguna A, yang tidak berjalan dalam konteks LocalSystem, membuat nama perangkat di namespace layanan Perangkat MS-DOS Lokal yang sesuai, dan nama perangkat tersebut tidak ada di namespace Perangkat MS-DOS Global.
- Pengguna B, yang berjalan dalam konteks LocalSystem, membuat nama perangkat yang sama di namespace Perangkat MS-DOS Global.
Dalam skenario ini, Pengguna A tidak akan memiliki akses ke nama perangkat di namespace Layanan Perangkat MS-DOS Global sampai ia menghapus atau mengganti nama perangkat di namespace layanan Perangkat MS-DOS Lokalnya. Untuk mengurangi kemungkinan skenario ini terjadi, huruf drive MS-DOS harus dialokasikan di namespace Perangkat MS-DOS Global yang dimulai dengan C: dan diakhiri dengan Z:. Urutan ini harus dibalik untuk alokasi huruf drive MS-DOS di namespace Perangkat Lokal MS-DOS.
Jika Anda tidak berjalan dalam konteks LocalSystem, DefineDosDevice tidak akan mengizinkan Anda menentukan nama perangkat di namespace layanan Perangkat MS-DOS Lokal jika nama perangkat tersebut sudah ada di namespace Perangkat lokal atau Global MS-DOS Anda. PanggilQueryDosDevicesebelum memanggil DefineDosDevice untuk menentukan apakah nama perangkat yang ingin Anda tentukan ada di namespace MS-DOS Perangkat Anda.
Topik terkait