Definizione di un nome del dispositivo MS-DOS

Un nome del dispositivo MS-DOS è una giunzione che punta al percorso di un dispositivo MS-DOS. Queste giunzioni costituiscono lo spazio dei nomi dei dispositivi MS-DOS. Chiamare le funzioni DefineDosDevice e SetVolumeMountPoint per creare e modificare queste giunzioni. DeleteVolumeMountPoint elimina una giunzione creata da SetVolumeMountPoint e DefineDosDevice elimina le giunzioni create.

Dopo aver definito un nome del dispositivo MS-DOS, rimane visibile a tutti i processi.

  • Tutti i dispositivi MS-DOS vengono identificati da Windows tramite un ID di autenticazione. Un ID di autenticazione è il LUID (identificatore univoco locale) associato a ogni sessione di accesso al momento della creazione.
  • La visibilità di un nome di dispositivo MS-DOS viene categorizzata come globale o locale e viene definita come tale dall'inclusione negli spazi dei nomi del dispositivo MS-DOS globale e dei dispositivi MS-DOS locali. Il contenuto dei dispositivi MS-DOS nello spazio dei nomi Globale può essere accessibile da tutti gli utenti e il contenuto dei dispositivi MS-DOS nello spazio dei nomi Locale può essere accessibile solo dall'utente il cui token di accesso contiene l'AuthenticationID associato a tale spazio dei nomi del dispositivo MS-DOS locale.

Più spazi dei nomi dei dispositivi MS-DOS locali e uno spazio dei nomi del dispositivo MS-DOS globale può esistere alla volta e in un computer.

Si noti che solo i processi in esecuzione nel contesto di LocalSystem possono chiamare DefineDosDevice per creare un dispositivo MS-DOS nello spazio dei nomi dei dispositivi MS-DOS globale. Inoltre, lo spazio dei nomi del dispositivo MS-DOS locale corrispondente a un authenticationID specifico viene eliminato quando l'ultimo riferimento a tale AuthenticationID viene rimosso.

Quando il codice esegue una query su un nome di dispositivo MS-DOS esistente chiamando QueryDosDevice, cerca prima lo spazio dei nomi Del dispositivo MS-DOS locale. Se non è presente, la funzione cercherà lo spazio dei nomi Del dispositivo MS-DOS globale. Quando il codice esegue query su tutti i nomi dei dispositivi MS-DOS esistenti tramite questa funzione, l'elenco di nomi restituiti dipende dal fatto che sia in esecuzione nel contesto di LocalSystem. In tal caso, verranno restituiti solo i nomi dei dispositivi MS-DOS inclusi nello spazio dei nomi del dispositivo MS-DOS globale. In caso contrario, verrà restituita una concatenazione dei nomi dei dispositivi negli spazi dei nomi del dispositivo GLOBAL e Local MS-DOS. Se esiste un nome di dispositivo in entrambi gli spazi dei nomi, QueryDosDevice restituirà la voce nello spazio dei nomi Dispositivo MS-DOS locale. Questo vale anche per l'elenco di tutti i nomi dei dispositivi MS-DOS restituiti da GetLogicalDrives e GetLogicalDriveStrings.

Si noti che lo scenario seguente può verificarsi:

  1. L'utente A, che non è in esecuzione nel contesto LocalSystem, crea un nome del dispositivo nello spazio dei nomi del dispositivo MS-DOS locale corrispondente e il nome del dispositivo non esiste nello spazio dei nomi del dispositivo MS-DOS globale.
  2. L'utente B, che esegue all'interno del contesto LocalSystem, crea lo stesso nome del dispositivo nello spazio dei nomi Del dispositivo MS-DOS globale.

In questo scenario l'utente A non avrà accesso al nome del dispositivo nello spazio dei nomi del dispositivo MS-DOS globale finché non rimuove o rinomina il nome del dispositivo nello spazio dei nomi MS-DOS locale. Per ridurre la probabilità che si verifichi questo scenario, le lettere di unità MS-DOS devono essere allocate nello spazio dei nomi del dispositivo MS-DOS globale a partire da C: e terminando con Z:. Questa sequenza deve essere invertita per l'allocazione delle lettere di unità MS-DOS nello spazio dei nomi Dispositivo MS-DOS locale.

Se non si esegue nel contesto di LocalSystem, DefineDosDevice non consente di definire un nome del dispositivo nello spazio dei nomi Dispositivo MS-DOS locale se il nome del dispositivo esiste già negli spazi dei nomi del dispositivo Locale o Globale MS-DOS. Chiamare QueryDosDevice prima di chiamare DefineDosDevice per determinare se il nome del dispositivo che si intende definire esiste negli spazi dei nomi dei dispositivi MS-DOS.

Denominazione di file, percorsi e spazi dei nomi