INFORMACE: Principy zařízení jména a symbolické odkazy

Překlady článku Překlady článku
ID článku: 235128 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Zařízení jako pevné disky, sériové porty a paralelní porty mají interní název zařízení WINDOWSNT a volitelně může mít název zařízení MS-DOS. Tyto názvy jsou umístěny v oboru názvů WINDOWSNT Object Manager. Zatímco WINDOWSNT samotný ovladače režimu jádra a používají názvy zařízení NT, programy Win32 musí používat názvy zařízení MS-DOS. Název zařízení MS-DOS je symbolický odkaz podkladové název zařízení NT. Tento článek popisuje názvy zařízení, symbolické odkazy a jak mohou programy Win32 vytvářet a odebrat symbolické odkazy.

Další informace

Interní názvy zařízení NT

Při načtení ovladač zařízení režimu jádra jeho Inicializační rutina registruje název zařízení Windows NT Object Manager. Tento název se označuje jako název zařízení WINDOWSNT. Součásti režimu jádra WINDOWSNT a ovladače režimu jádra odkazovat podle jejich názvů zařízení WINDOWSNT zařízení. Tyto názvy mají formát, například \Device\CDRom0 a \Device\Serial0 a také existují v adresáři \device oboru názvů Object Manager.

Programy Win32 nelze použít vnitřní WINDOWSNT názvy zařízení k zařízení přístup, protože podsystém Win32 a Win32 API vyžadují více známých písmena jednotek a názvy zařízení MS-DOS (například COM1 A: C:,: a LPT1:. Přestože programy Win32 může pomocí názvů zařízení WINDOWSNT, mohou lze však definovat a odebrat názvy zařízení MS-DOS přístup k zařízení. Mohou také může načíst vnitřní název zařízení WINDOWSNT přidružený název zařízení MS-DOS. Příklad kódu v tomto článku v části "Symbolické odkazy" popisuje, jak to provést.

Získat lépe Principy z jak Object Manager sleduje názvy jiných objektů systému a zařízení, zobrazení oboru názvů správce objektů s WinObj.exe nástroj v sadě Platform SDK.

Názvy zařízení MS-DOS

Programy Win32 používat zařízení jako jednotek, sériových portů a paralelních portů prostřednictvím jejich názvy zařízení MS-DOS. Tyto jsou písmena jednotky A: a C: pro diskové jednotky. Sériové a paralelní porty pro tyto názvy COM1, jako jsou:, COM2: a LPT1:. Podobně jako názvy zařízení WINDOWSNT tyto názvy umístěny v oboru názvů Object Manager, ale v \?? adresář, který je zobrazen programy uživatelského režimu Win32.

Co provede názvy zařízení MS-DOS liší od názvů zařízení WINDOWSNT je, že není používají WINDOWSNT ovladače jádra nebo režimu jádra. Jejich účelem je odkazovat WINDOWSNT názvy zařízení, takže Win32 programy mohou používat písmena jednotek známých a názvy zařízení; například COM1:, přístup k zařízení WINDOWSNT. Proto názvy zařízení MS-DOS se nazývají "symbolické odkazy" WINDOWSNT názvy zařízení. Název zařízení MS-DOS, tedy existuje v objektu správce 's \?? adresář a body WINDOWSNT název zařízení v adresáři \device Object Manager.

Každý název zařízení MS-DOS lze přejděte nejvýše jeden vnitřní WINDOWSNT zařízení. Více názvy zařízení MS-DOS může však odkazovat na jediné zařízení. Například zatímco C: může odkazovat pouze na jeden oddíl, je možné mít dvě nebo více písmen jednotek jako D:, E: a Z:, bod do stejného oddílu.

Symbolické odkazy

Symbolické odkazy vytvořené systému přetrvávat v restartování počítače, protože jsou uloženy v registru. Programy mohou také vytvořit symbolické odkazy s API DefineDosDevice(). Tyto odkazy jsou platné, dokud nebude počítač restartován nebo vypnuto, pokud jsou aktualizovány klíče registru obsahující informace o propojení.

Může být více symbolické odkazy WINDOWSNT název zařízení. Však pouze MS-DOS název zařízení, které původně přiřazen interní zařízení WINDOWSNT systému zůstane přes restartován. Proto je možné vytvořit další symbolické odkazy přiřadit více písmena jednotek jedné jednotky, ale další písmena pouze zůstanou, dokud vypnutí nebo restartování počítače.

Programy Win32 může načíst WINDOWSNT název zařízení, která je spojena s konkrétní název zařízení MS-DOS podle volajícího QueryDosDevice() s názvem zařízení MS-DOS. Následující kód například ukazuje, jak tomu je:
char szNtDeviceName[MAX_PATH];

if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH))
{
   printf ("C: is linked to %s\n", szNtDeviceName);
}
				
Win32 programy můžete vytvořit a odstranit symbolické odkazy voláním DefineDosDevice(). Vytvoření symbolického odkazu volání DefineDosDevice s příznakem DDD_RAW_TARGET_PATH. Symbolický odkaz odebrat, volání s příznaky DDD_REMOVE_DEFINITION a DDD_RAW_TARGET_PATH. Následující ukázkový program ukazuje obě tyto operace:
/*
   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í aktualizace: 21. listopadu 2006 - Revize: 4.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Win32 Application Programming Interface na těchto platformách
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Klíčová slova: 
kbmt kbinfo kbkernbase KB235128 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:235128

Dejte nám zpětnou vazbu

 

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