Menentukan Nama Perangkat MS-DOS

Nama perangkat MS-DOS adalah persimpangan yang menunjuk ke jalur perangkat MS-DOS. Persimpangan ini membentuk 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 tersebut 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 di 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 layanan perangkat MS-DOS Lokal tersebut.

Beberapa namespace Layanan Perangkat MS-DOS Lokal dan hanya satu namespace Perangkat MS-DOS Global yang mungkin 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 MS-DOS Global. Selain itu, namespace layanan 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 ada dengan memanggil QueryDosDevice, pertama-tama kode tersebut mencari namespace Layanan Perangkat MS-DOS Lokal. Jika tidak ditemukan di sana, fungsi kemudian akan mencari namespace Perangkat MS-DOS Global. Saat kode Anda meminta semua nama perangkat MS-DOS yang ada melalui fungsi ini, daftar nama yang dikembalikan bergantung pada apakah itu 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 Layanan Perangkat MS-DOS Global dan Lokal akan dikembalikan. Jika nama perangkat ada di kedua namespace, 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:

  1. Pengguna A, yang tidak berjalan dalam konteks LocalSystem, membuat nama perangkat di namespace Perangkat MS-DOS Lokal yang sesuai, dan nama perangkat tersebut tidak ada di namespace Perangkat MS-DOS Global.
  2. 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 Perangkat MS-DOS Global sampai dia menghapus atau mengganti nama perangkat di namespace Layanan Perangkat MS-DOS Lokalnya. Untuk mengurangi kemungkinan skenario ini terjadi, huruf kandar MS-DOS harus dialokasikan di namespace Layanan Perangkat MS-DOS Global yang dimulai dengan C: dan diakhpuni dengan Z:. Urutan ini harus dibalik untuk alokasi huruf kandar MS-DOS di namespace Layanan Perangkat MS-DOS Lokal.

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 MS-DOS Lokal atau Global Anda. Panggil QueryDosDevice sebelum memanggil DefineDosDevice untuk menentukan apakah nama perangkat yang ingin Anda tentukan ada di namespace MS-DOS Device Anda.

Menamai File, Jalur, dan Namespace