BILGI: Anlama aygıt adları ve Simgesel bağlantılar

Makale çevirileri Makale çevirileri
Makale numarası: 235128 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Sabit diskler, seri bağlantı noktaları paralel bağlantı noktaları bir iç Windows NT aygıt adı ve isteğe bağlı olabilir gibi aygıtlar, bir MS-DOS aygıt adı vardır. Bu adlar, Windows NT Nesne Yöneticisi'nin ad boşluğunda yer alır. Windows NT kendisi ve çekirdek modu sürücüleri NT aygıt adı kullanırken, Win32 program MS-DOS aygıt adı kullanmanız gerekir. MS-DOS aygıt adı temel NT aygıt adı sembolik bir bağlantıdır. Bu makalede, aygıt adları, Simgesel bağlantılar ve Win32 programları nasıl oluşturabilir ve Simgesel bağlantılar kaldırmak açıklanır.

Daha fazla bilgi

Iç NT aygıt adı

Bir çekirdek modu aygıt sürücüsü yüklendiğinde, kendi başlatma yordamı, Windows NT'NIN Nesne Yöneticisi ile aygıt adı kaydettirir. Bu ad, Windows NT aygıt adı adlandırılır. Çekirdek modu bileşenleri, Windows NT ve çekirdek modu sürücüler, aygıt, Windows NT aygıt adlarına göre başvuru. Bu adları \Device\CDRom0 ve \Device\Serial0 gibi bir biçimi vardır ve ayrıca Nesne Yöneticisi'nin ad \device dizininde bulunur.

Win32 alt sistemidir ve Win32 API MS-DOS aygıt adları gibi A:, C:, COM1 ve daha alışık sürücü harflerinin gerektirdiği için Win32 program erişim aygıtları için iç Windows NT aygıt adlarını kullanamazsınız: ve LPT1:. Bunlar ancak, Windows NT aygıt adı Win32 programları kullanabilir, ancak olabilir aygıtlarına erişmek için MS-DOS aygıt adlarını kaldırmak ve tanımlayın. Bunlar, bir MS-DOS aygıt adı ile ilişkilendirilen iç Windows NT aygıt adı de alabilirsiniz. Bu makalenin "Simgesel bağlantılar" bölümündeki örnek kod, bunun nasıl yapılacağı açıklanır.

Bir daha iyi nasıl Nesne Yöneticisi adları aygıtları ve diğer sistem nesnelerine izler anlama kazanmak için <a0></a0>, Platform SDK'DA WinObj.exe aracıyla nesne Yöneticisi'nin ad görüntüleyebilirsiniz.

MS-DOS aygıt adı

Win32 programlar, aygıt sürücüleri, seri bağlantı noktaları ve paralel bağlantı noktalarından MS-DOS aygıt adları gibi kullanın. Disk sürücüleri için bu sürücü A: ve C: gibi harflerdir. Seri ve paralel bağlantı noktaları COM1 adları şunlardır:, COM2: ve LPT1:. Nesne Yöneticisi'nin ad alanı'ndaki bu adlar Windows NT aygıt adları gibi ancak bulunan \?? Dizin, kullanıcı modu Win32 programları tarafından görülebilir.

MS-DOS aygıt adı Windows NT aygıt adı farklı sağlar, bunlar Windows NT Çekirdek veya çekirdek modu sürücüleri tarafından kullanılmaz olur. Bunların amacı, Win32 programları bilinen bir sürücü harfi ve aygıt adları; böylece, Windows NT aygıt adlarını belirtmek için ise örneğin, COM1: Windows NT aygıtlarına erişmek için. Bu nedenle, MS-DOS aygıt adı "Simgesel bağlantılar" Windows NT aygıt adı verilir. Diğer bir deyişle, bir MS-DOS aygıt adı nesne yöneticisinde 's var. \?? Dizin ve işaret \device dizindeki Nesne Yöneticisi'nin Windows NT aygıt adı.

Her bir MS-DOS aygıt adı en fazla bir iç Windows NT aygıta gösterebilir. Ancak, birden çok MS-DOS aygıt adı için tek bir aygıt üzerine gidebilirsiniz. Örneğin, C: yalnızca tek bir bölüm için işaret ederken, iki veya daha fazla sürücü harfleri, aynı bölüm D:, E: ve Z:, noktasına gibi sahip olanaklı değildir.

Simgesel bağlantılar

Kayıt defterinde depolandığından sistem tarafından oluşturulan sembolik bağlantılar bilgisayar yeniden başlatmalar kalıcı. Program, simgesel bağlantılarda DefineDosDevice() APı'SI ile de oluşturabilirsiniz. Bu bağlantılar, bilgisayar yeniden veya diğer bağlantıları ile ilgili bilgileri içeren kayıt defteri anahtarlarının güncelleştirilir sürece kapalı yalnızca kadar geçerlidir.

Windows NT aygıt adı için birden çok simgesel bağlantıları olabilir. Ancak, üzerinden ilk iç Windows NT aygıta atanan sistem kalan yalnızca MS-DOS aygıt adı yeniden başlatır. Bu nedenle, tek bir CD-ROM sürücü birden çok sürücü harfleri atama ek Simgesel bağlantılar oluştur olasıdır, ancak ek sürücü harflerine yalnızca makine kapalı veya yeniden kadar kalır.

Win32 program tarafından arama QueryDosDevice() MS-DOS aygıt adı ile ilişkili belirli bir MS-DOS aygıt adı ile Windows NT aygıt adı alabilirsiniz. Bunun nasıl yapılacağını gösteren kod örneği aşağıda verilmiştir:
char szNtDeviceName[MAX_PATH];

if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH))
{
   printf ("C: is linked to %s\n", szNtDeviceName);
}
				
Win32 programları oluşturabilir ve DefineDosDevice() çağırarak, Simgesel bağlantılar silin. Sembolik bir bağlantı oluşturmak için <a0></a0>, DDD_RAW_TARGET_PATH bayrağıyla DefineDosDevice arayın. Simgesel bir bağlantıyı kaldırmak için <a0></a0>, DDD_REMOVE_DEFINITION ve DDD_RAW_TARGET_PATH bayraklarıyla arayın. Aşağıdaki örnek program, bu işlemlerin her ikisini de gösterir:
/*
   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);
   }

}
				

Özellikler

Makale numarası: 235128 - Last Review: 21 Kasım 2006 Salı - Gözden geçirme: 4.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Win32 Uygulama Programlama Arabirimi, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Anahtar Kelimeler: 
kbmt kbinfo kbkernbase KB235128 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:235128

Geri Bildirim Ver

 

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