INFO: Názvy pochopenie zariadení a symbolické odkazy

Preklady článku Preklady článku
ID článku: 235128 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Zariadenia ako pevné disky, sériové porty a paralelné porty majú vnútorného názov zariadenia systému Windows NT a voliteľne môže mať názov MS-DOS zariadenia. Tieto názvy sú umiestnené v priestore názvov objekt správcu systému Windows NT. Zatiaľ čo Windows NT, sama a ovládače režimu jadra použitie názvov zariadení NT, Win32 programy musia používať názvy zariadení systému MS-DOS. Názov zariadenia MS-DOS je symbolický odkaz na základný názov zariadenia NT. Tento článok popisuje názvy zariadení, symbolické prepojenia a ako Win32 programy možno vytvoriť a odstrániť symbolické odkazy.

DALSIE INFORMACIE

Vnútorné názvy zariadení NT

Keď sa načíta ovládač režimu jadra, jeho bežná Inicializácia zaregistruje názov zariadenia s správcovi objektov systému Windows NT. Tento názov sa označuje ako názov zariadenia systému Windows NT. Súčasti režimu jadra systému Windows NT a ovládače režimu jadra referenčné zariadenia podľa ich názvov zariadení systému Windows NT. Tieto názvy mať formát, ako je napríklad \Device\CDRom0 a \Device\Serial0 a tiež existujú v adresári \device názvov správca objektov.

Win32 programy nemôžete použiť vnútorný názvy zariadení systému Windows NT na prístup zariadenia, pretože podsystém Win32 a rozhranie API systému Win32 vyžadujú viac známe písmená jednotky a názvy zariadení systému MS-DOS, ako napríklad A:, C:, COM1:, a LPT1:. Hoci Win32 programy nesmú používať názvy zariadení systému Windows NT, môžete však určiť a odstrániť MS-DOS názvov zariadení na prístup k zariadeniam. Môžete tiež načítať vnútorného názov zariadenia systému Windows NT priradený názov MS-DOS zariadenia. Napríklad kód v sekcii "Symbolické odkazy" tento článok popisuje, ako to urobiť.

Na získanie lepšieho pochopenia ako správca objektov skladby mená zariadenia a iného systému objekty, môžete zobraziť správca objektov priestoru názvov pomocou nástroja WinObj.exe Platform SDK.

Názvy zariadení systému MS-DOS

Win32 programy používať zariadenia ako disky, sériové porty a paralelné porty prostredníctvom ich názvy zariadení systému MS-DOS. Pre diskové jednotky, tieto sú písmená jednotky ako A: a C:. Pre sériové a paralelné porty sú mená ako COM1:, COM2:, a LPT1:. Ako názvy zariadení systému Windows NT, tieto názvy zdržiavať v priestore názvov správca objektov, ale \? adresár, ktorý je zobrazený na používateľskom režime Win32 programy.

Čo robí názvy zariadení systému MS-DOS odlišný od názvov zariadení systému Windows NT je nie sú používané jadra alebo režimu jadra ovládače systému Windows NT. Ich účelom je odkazovať na názvy zariadení systému Windows NT, takže Win32 programy môžu použiť oboznámení písmená jednotiek a názvov zariadení; napríklad COM1:, prístup k zariadeniam systému Windows NT. Názvy zariadení systému MS-DOS sa preto nazývajú "symbolické odkazy" na názvy zariadení systému Windows NT. To je názov zariadenia MS-DOS existuje v objekt správcu \? adresár a body na názov zariadenia systému Windows NT v adresári \device správca objektov.

Každý názov zariadenia MS-DOS môžu poukázať na najviac jedného vnútorného systému Windows NT zariadenia. Avšak viaceré názvy zariadení systému MS-DOS môžu poukázať na jedného zariadenia. Napríklad, keď C: môžu len poukázať na jednu oblasť, je možné mať dve alebo viac písmen jednotky, ako D:, E: a Z:, bod do rovnakej oblasť.

Symbolické prepojenia

Symbolické prepojenia vytvorené v systéme pretrvávajú v celej reštartovaní počítača pretože sú uložené v databáze registry. Programy môžu tiež vytvoriť symbolické prepojenia s DefineDosDevice() API. Tieto prepojenia sú platné iba vtedy, pokiaľ sa počítač reštartoval alebo vypnutý, ak nie sú aktualizované kľúče databázy registry obsahujú informácie o prepojení.

Môže existovať viacero symbolické prepojenia na názov zariadenia systému Windows NT. Avšak iba systém MS-DOS zariadenie názov, ktorý systém spočiatku pridelená vnútorné zariadenie Windows NT zostane v celej reštartuje. Preto je možné vytvoriť ďalšie symbolické odkazy, ktoré priradiť viac písmen jednotiek na jednu jednotku CD-ROM, ale dodatočné písmená iba zostanú, kým stroj je vypnutie alebo reštartovanie.

Win32 programy môžete načítať názov zariadenia systému Windows NT, priradené špecifické názov zariadenia MS-DOS prostredníctvom volania QueryDosDevice() s názvom zariadenia MS-DOS. Takto je napríklad kód, ktorý ukazuje, ako to urobiť:
char szNtDeviceName[MAX_PATH];

if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH))
{
   printf ("C: is linked to %s\n", szNtDeviceName);
}
				
Win32 programy môžete vytvoriť a odstrániť symbolické prepojenia volaním DefineDosDevice(). Vytvoriť symbolické prepojenie, volajte na číslo DefineDosDevice s Príznak DDD_RAW_TARGET_PATH. Chcete odstrániť symbolické prepojenie, hovoria s DDD_REMOVE_DEFINITION a DDD_RAW_TARGET_PATH vlajky. Tieto vzorky Program demonštruje oboch týchto operácií:
/*
   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);
   }

}
				

Vlastnosti

ID článku: 235128 - Posledná kontrola: 23. októbra 2011 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Win32 Application Programming Interface
Kľúčové slová: 
kbinfo kbkernbase kbmt KB235128 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:235128

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com