Definiowanie nazwy urządzenia MS-DOS
Nazwa urządzenia MS-DOS to połączenie wskazujące ścieżkę urządzenia MS-DOS. Te połączenia tworzą przestrzeń nazw urządzeń o nazwie MS-DOS. Wywołaj funkcje DefineDosDevice i SetVolumeMountPoint, aby utworzyć i zmodyfikować te skrzyżowania. DeleteVolumeMountPoint usuwa punkt łączenia utworzony przez SetVolumeMountPoint, a DefineDosDevice usuwa punkty łączenia, które tworzy.
Po zdefiniowaniu nazwy urządzenia MS-DOS pozostaje ona widoczna dla wszystkich procesów.
- Wszystkie urządzenia MS-DOS są identyfikowane przez system Windows za pomocą identyfikatora uwierzytelniania. Identyfikator uwierzytelniania to identyfikator LUID (lokalnie unikatowy identyfikator) skojarzony z każdą sesją logowania w momencie jej utworzenia.
- Widoczność nazwy urządzenia MS-DOS jest kategoryzowana jako globalna lub lokalna i jest definiowana jako taka przez włączenie jej do przestrzeni nazw globalnego urządzenia MS-DOS i lokalnego MS-DOS urządzenia. Dostęp do zawartości urządzeń MS-DOS w globalnej przestrzeni nazw mogą uzyskiwać wszyscy użytkownicy, a zawartość urządzeń MS-DOS w lokalnej przestrzeni nazw może uzyskać dostęp tylko użytkownik, którego token dostępu zawiera identyfikator AuthenticationID skojarzony z tą przestrzenią nazw urządzenia lokalnego MS-DOS.
Wiele lokalnych MS-DOS przestrzeni nazw urządzeń i tylko jedna globalna MS-DOS przestrzeń nazw urządzeń może istnieć jednocześnie na jednej maszynie.
Należy pamiętać, że tylko procesy uruchomione w kontekście LocalSystem mogą wywoływać DefineDosDevice, aby utworzyć urządzenie MS-DOS w globalnej przestrzeni nazw urządzeń MS-DOS. Ponadto lokalna przestrzeń nazw urządzeń MS-DOS, odpowiadająca określonemu identyfikatorowi AuthenticationID, zostanie usunięta, gdy ostatnie odniesienie do tego identyfikatora AuthenticationID zostanie usunięte.
Gdy kod wysyła zapytanie o istniejącą nazwę urządzenia MS-DOS przez wywołanie QueryDosDevice, najpierw wyszukuje przestrzeń nazw lokalnego urządzenia MS-DOS. Jeśli nie zostanie tam znaleziona, funkcja będzie przeszukiwać globalną przestrzeń nazw urządzenia MS-DOS. Gdy kod wysyła zapytanie do wszystkich istniejących nazw urządzeń MS-DOS za pomocą tej funkcji, lista zwracanych nazw zależy od tego, czy jest on uruchomiony w kontekście LocalSystem. Jeśli tak, zostaną zwrócone tylko nazwy urządzeń MS-DOS uwzględnione w przestrzeni nazw urządzenia globalnego MS-DOS. W przeciwnym razie zostanie zwrócone połączenie nazw urządzeń w przestrzeniach nazw globalnych i lokalnych urządzenia MS-DOS. Jeśli nazwa urządzenia istnieje w obu przestrzeniach nazw, QueryDosDevice zwróci wpis w przestrzeni nazw urządzenia lokalnego MS-DOS. Dotyczy to również listy wszystkich nazw urządzeń MS-DOS zwracanych przez GetLogicalDrives i GetLogicalDriveStrings.
Należy pamiętać, że może wystąpić następujący scenariusz:
- Użytkownik A, który nie jest uruchomiony w kontekście LocalSystem, tworzy nazwę urządzenia w odpowiedniej przestrzeni nazw Local MS-DOS Device, a ta nazwa urządzenia nie istnieje w przestrzeni nazw Global MS-DOS Device.
- Użytkownik B, który działa w kontekście LocalSystem, tworzy tę samą nazwę urządzenia w globalnej przestrzeni nazw urządzenia MS-DOS.
W tym scenariuszu użytkownik A nie będzie miał dostępu do nazwy urządzenia w globalnej przestrzeni nazw MS-DOS Urządzenia, dopóki nie usunie nazwy urządzenia lub zmieni jej nazwę w przestrzeni nazw lokalnego MS-DOS urządzenia. Aby zmniejszyć prawdopodobieństwo wystąpienia tego scenariusza, litery dysków MS-DOS powinny zostać przydzielone w globalnej przestrzeni nazw urządzeń MS-DOS, począwszy od C: i kończąc na Z:. Sekwencja ta powinna zostać odwrócona przy przydzielaniu liter dysku MS-DOS w przestrzeni nazw lokalnego urządzenia MS-DOS.
Jeśli nie korzystasz z kontekstu LocalSystem, DefineDosDevice nie pozwoli zdefiniować nazwy urządzenia w lokalnej przestrzeni nazw urządzeń MS-DOS, jeśli ta nazwa urządzenia już istnieje w twoich lokalnych lub globalnych przestrzeniach nazw urządzeń MS-DOS. Wywołaj QueryDosDevice przed wywołaniem DefineDosDevice, aby określić, czy nazwa urządzenia, którą chcesz zdefiniować, istnieje w przestrzeniach nazw urządzeń MS-DOS.
Tematy pokrewne