Al momento sei offline in attesa che la connessione Internet venga ristabilita

INFORMAZIONI: Nomi di informazioni sulle periferiche e i collegamenti simbolici

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 235128
Sommario
Periferiche come dischi rigidi, le porte seriali e le porte parallele nome periferica interno Windows e possono facoltativamente dispongono di un nome di periferica MS-DOS. Questi nomi si trovano in spazio dei nomi della gestione di oggetti di Windows NT. Sebbene Windows NT se stesso e i driver in modalità kernel consente di utilizzare nomi di periferica NT, è necessario che programmi Win32 utilizzare i nomi di periferica di MS-DOS. Il nome di periferica MS-DOS è un collegamento simbolico al nome di periferica NT sottostante. In questo articolo viene descritto i nomi delle periferiche, i collegamenti simbolici e come creare e rimuovere i collegamenti simbolici programmi Win32.
Informazioni

Nomi di periferica NT interni

Quando viene caricato un driver di periferica in modalità kernel, la routine di inizializzazione registra un nome di periferica con Windows NT Object Manager. Questo nome è detto il nome di periferica di Windows NT. I componenti di modalità kernel di Windows e driver in modalità kernel fare riferimento a periferiche tramite i nomi di periferica di Windows NT. Questi nomi con un formato di file, ad esempio \Device\CDRom0 e \Device\Serial0 e inoltre esistono nella directory \device dello spazio dei nomi del gestore di oggetti.

Programmi Win32 non possono utilizzare interni nomi periferica di Windows NT periferiche di accesso poiché il sottosistema Win32 e API Win32 richiedono più familiare lettere di unità e i nomi di periferica di MS-DOS, ad esempio COM1 A:, C:,: e da LPT1:. Anche se programmi Win32 non possono utilizzare nomi di periferica Windows NT, è possibile, tuttavia, definire e rimuovere nomi di periferica MS-DOS per accedere ai dispositivi. È inoltre possibile recuperare il nome periferica interno di Windows NT associato con un nome di periferica MS-DOS. Il codice di esempio nella sezione "Collegamenti simbolici" di questo articolo viene descritto come eseguire questa operazione.

Per ottenere una migliore comprensione di come il gestore di oggetti tiene traccia dei nomi alle periferiche e altri oggetti di sistema, è possibile visualizzare spazio dei nomi del gestore di oggetti con lo strumento WinObj.exe in Platform SDK.

Nomi di periferica MS-DOS

Programmi Win32 utilizzano periferiche quali unità, le porte seriali e le porte parallele tramite i nomi di periferica MS-DOS. Per le unità disco, queste sono le lettere di unità A: e C:. Per le porte parallele e seriali sono nomi come COM1:, COM2: e da LPT1:. Come nomi di periferica Windows NT, questi nomi risiedono in spazio dei nomi del gestore di oggetti, ma nel \?? Directory, che è visibile a programmi Win32 in modalità utente.

Ciò che rende nomi di periferica MS-DOS diversi da nomi di periferica di Windows NT, si è che non vengano utilizzati dai driver del kernel o modalità kernel di Windows NT. Lo scopo è fare riferimento ai nomi di periferica di Windows in modo che programmi Win32 possano utilizzare le lettere di unità familiare e i nomi di periferica, ad esempio, COM1:, per le periferiche di Windows NT di accedere. Di conseguenza, nomi di periferica MS-DOS sono denominati "collegamenti simbolici" ai nomi di periferica di Windows NT. Un nome di periferica di MS-DOS esiste nel gestore di oggetti del \?? Directory e punta a un nome di periferica di Windows NT nella directory \device del gestore di oggetti.

Ogni nome di periferica MS-DOS può puntare al massimo una interna Windows periferica. Tuttavia, più nomi di periferica MS-DOS possono puntare a una singola periferica. Ad esempio, mentre C: solo può puntare a una singola partizione, è possibile avere due o più lettere di unità, ad esempio D:, E: e Z:, il punto di nella stessa partizione.

Collegamenti simbolici

I collegamenti simbolici creati dal sistema di mantenere riavvio del computer, poiché questi vengono memorizzati nel Registro di sistema. Programmi possono inoltre creare collegamenti simbolici con l'API DefineDosDevice(). Questi collegamenti sono validi solo fino a quando il computer viene riavviato o disattivato, a meno che le chiavi di registro contenente informazioni per i collegamenti vengano aggiornate.

Possono essere presenti più collegamenti simbolici e un nome di periferica di Windows NT. Tuttavia, solo il nome di periferica MS-DOS che viene inizialmente assegnata alla periferica Windows interna rimane su Riavvia. Di conseguenza, se si è possibile creare ulteriori collegamenti simbolici che assegnano più lettere di unità a una singola unità CD-ROM, ma la lettere di unità aggiuntive rimangono solo fino a quando il computer viene disattivato o riavviato.

Programmi Win32 è possono recuperare il nome di periferica di Windows NT è associato un nome di periferica MS-DOS specifico da QueryDosDevice() chiamata con il nome di periferica MS-DOS. Seguito è riportato esempio di codice viene illustrato come eseguire questa operazione:
char szNtDeviceName[MAX_PATH];if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH)){   printf ("C: is linked to %s\n", szNtDeviceName);}				
programmi Win32 possono creare e chiamare DefineDosDevice() per eliminare i collegamenti simbolici. Per creare un collegamento simbolico, è necessario chiamare DefineDosDevice con il flag DDD_RAW_TARGET_PATH. Per rimuovere un collegamento simbolico, è necessario chiamarlo con i flag DDD_REMOVE_DEFINITION e DDD_RAW_TARGET_PATH. Nel esempio programma riportato di seguito viene illustrato entrambe queste operazioni:
/*   DDD      This sample shows how to associate an MS-DOS device name with a       Windows NT device name. The association is a symbolic link between      device names stored in the Object Manager's namespace. Applications      use the MS-DOS device name, but Windows NT and kernel-mode drivers      use the Windows NT device name.     Usage:      ddd <MS-DOS Device Name> <NT Device Name>      ddd -r <MS-DOS Device Name>   NOTE: If the MS-DOS device name is a driver letter, the trailing    backlash is not accepted by DefineDosDevice or QueryDosDevice.   NOTE: The MS-DOS device name is defined only until the computer is    restarted.   To make the drive letter associations permanent on Window NT 4.0, you   have to update HKEY_LOCAL_MACHINE\SYSTEM\DISK\Information. However,    the contents of the value are undocumented.    On Windows 2000, you have to use the Volume Mount Point APIs.*/ #define WIN32_LEAN_AND_MEAN /* Reduce number of system headers parsed */                             /* during build. */ #include <windows.h>#include <stdio.h>void main (int argc, char **argv){   char * pszDosDeviceName,        * pszNtDeviceName;   bool  fRemoveDeviceName = false;   bool  fResult;   /*      Command-line parsing.        1) Make sure correct number of arguments are supplied.        2) See if you should add or remove the MS-DOS Device Name.   */    if (argc != 3)   {      printf("\nusage: %s <DOS device name> <NT device name>    to add\n",             argv[0]);      printf("usage: %s [-r] <DOS device name>                to remove\n",             argv[0]);      printf("\n\texample: %s d: \\device\\cdrom0\n", argv[0]);      return;   }   fRemoveDeviceName = !lstrcmpi (argv[1], "-r");   /* Now, add/remove the DOS device name. */    if (fRemoveDeviceName)   {      /*         Remove the MS-DOS device name. First, get the name of the Windows         NT device from the symbolic link, then delete the symbolic link.               */       pszDosDeviceName = argv[2];      pszNtDeviceName = (char *)LocalAlloc (LPTR, MAX_PATH);      fResult = QueryDosDevice (pszDosDeviceName, pszNtDeviceName,                                MAX_PATH);      if (fResult)      {         fResult = DefineDosDevice (DDD_RAW_TARGET_PATH|                                    DDD_REMOVE_DEFINITION|                                    DDD_EXACT_MATCH_ON_REMOVE,                                    pszDosDeviceName, pszNtDeviceName);      }      if (!fResult)         printf("error %lu: could not remove %s\n",                GetLastError(), pszDosDeviceName);      LocalFree (pszNtDeviceName);   }   else   {      /* Add the DOS device name */       pszDosDeviceName = argv[1];      pszNtDeviceName  = argv[2];      fResult = DefineDosDevice (DDD_RAW_TARGET_PATH, pszDosDeviceName,                                 pszNtDeviceName);      if (!fResult)         printf("error %lu: could not link %s to %s\n",                GetLastError(), pszDosDeviceName, pszNtDeviceName);   }}				
PERIFERICA DOS

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 235128 - Ultima revisione: 11/21/2006 15:36:42 - Revisione: 4.1

Microsoft Win32 Application Programming Interface

  • kbmt kbinfo kbkernbase KB235128 KbMtit
Feedback