Thông tin: Tên thi?t b? s? hi?u bi?t và liên k?t tư?ng trưng

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 235128 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Các thi?t b? như đ?a c?ng, c?ng tu?n t?, song song c?ng m?t tên thi?t b? Windows NT n?i b? và có th? tùy ch?n có m?t tên thi?t b? MS-DOS. Các tên đư?c đ?t trong không gian tên đ?i tư?ng Manager Windows NT. Trong khi Windows NT và tr?nh đi?u khi?n ch? đ? l?i s? d?ng tên thi?t b? NT, chương tr?nh Win32 ph?i s? d?ng tên thi?t b? MS-DOS. Tên thi?t b? MS-DOS là m?t liên k?t tư?ng trưng đ?n tên thi?t b? NT n?m bên dư?i. Bài vi?t này mô t? tên thi?t b?, liên k?t tư?ng trưng và làm th? nào Win32 các chương tr?nh có th? t?o và xoá liên k?t tư?ng trưng.

THÔNG TIN THÊM

N?i b? NT tên thi?t b?

Khi tr?nh đi?u khi?n thi?t b? ch? đ? l?i đư?c n?p, thói quen kh?i t?o đăng k? m?t tên thi?t b? v?i Windows NT Object Manager. Tên này đư?c g?i là tên thi?t b? Windows NT. Các thành ph?n ch? đ? l?i c?a Windows NT và tr?nh đi?u khi?n ch? đ? l?i tham kh?o thi?t b? b?ng tên thi?t b? Windows NT c?a h?. Nh?ng tên có m?t đ?nh d?ng, ch?ng h?n như \Device\CDRom0 và \Device\Serial0 và c?ng t?n t?i trong thư m?c \device c?a không gian tên c?a ngư?i qu?n l? đ?i tư?ng.

Win32 các chương tr?nh không th? s? d?ng n?i b? Windows NT tên thi?t b? cho các thi?t b? truy c?p, v? h? th?ng ph? Win32 và Win32 API yêu c?u các ch? cái ? đ?a quen thu?c hơn và tên thi?t b? MS-DOS, ch?ng h?n như A:, C:, COM1:, và LPT1:. M?c dù Win32 các chương tr?nh không th? s? d?ng tên thi?t b? Windows NT, h? có th? Tuy nhiên, xác đ?nh và lo?i b? tên thi?t b? MS-DOS đ? truy c?p vào thi?t b?. H? c?ng có th? truy xu?t n?i b? Windows NT tên thi?t b? g?n li?n v?i m?t tên thi?t b? MS-DOS. Các ví d? m? trong ph?n "Liên k?t tư?ng trưng" c?a bài vi?t này mô t? làm th? nào đ? làm đi?u này.

Đ? đ?t đư?c m?t s? hi?u bi?t t?t hơn v? cách qu?n l? đ?i tư?ng theo d?i tên đ? các thi?t b? và h? th?ng đ?i tư?ng, b?n có th? xem không gian tên c?a ngư?i qu?n l? đ?i tư?ng v?i công c? WinObj.exe trong SDK n?n t?ng.

MS-DOS tên thi?t b?

Win32 các chương tr?nh s? d?ng các thi?t b? như ? đ?a, c?ng n?i ti?p, và c?ng song song thông qua MS-DOS tên thi?t b? c?a h?. Đ?i v?i ? đ?a, đây là k? t? ? đ?a như A: và C:. Đ?i v?i c?ng n?i ti?p, song song đây là nh?ng cái tên như COM1:, COM2:, và LPT1:. Như tên thi?t b? Windows NT, các tên n?m trong ph?n đi?n tên c?a ngư?i qu?n l? đ?i tư?ng, nhưng trong các \?? thư m?c, mà đư?c hi?n th? cho các chương tr?nh Win32 ch? đ? ngư?i dùng.

Đi?u g? làm cho MS-DOS tên thi?t b? khác v?i tên thi?t b? Windows NT là r?ng h? không đư?c s? d?ng b?i tr?nh đi?u khi?n nào v? h?t nhân ho?c ch? đ? l?i Windows NT. M?c đích c?a h? là đ? ch? tên thi?t b? Windows NT đ? cho Win32 các chương tr?nh có th? s? d?ng các ch? cái ? đ?a quen thu?c và tên thi?t b?; Ví d?, COM1:, đ? truy c?p vào các thi?t b? Windows NT. Do đó, tên thi?t b? MS-DOS đư?c g?i là "liên k?t tư?ng trưng" đ? Windows NT tên thi?t b?. Có ngh?a là, m?t tên thi?t b? MS-DOS t?n t?i trong các đ?i tư?ng c?a ngư?i qu?n l? \?? thư m?c và các đi?m đ?n m?t tên thi?t b? Windows NT trong thư m?c c?a ngư?i qu?n l? đ?i tư?ng \device.

M?i MS-DOS tên thi?t b? có th? tr? đ?n t?i đa m?t n?i b? thi?t Windows NT b?. Tuy nhiên, nhi?u MS-DOS tên thi?t b? có th? tr? đ?n m?t thi?t b? duy nh?t. Ví d?, trong khi C: ch? có th? tr? đ?n m?t phân vùng, có th? có hai ? đ?a ch?, như D:, E: và Z:, đi?m đ?n cùng phân vùng.

Liên k?t tư?ng trưng

Liên k?t tư?ng trưng t?o b?i h? th?ng v?n t?n t?i trên toàn kh?i đ?ng l?i máy tính b?i v? chúng đư?c lưu tr? trong registry. Chương tr?nh c?ng có th? t?o liên k?t tư?ng trưng v?i DefineDosDevice() API. Các liên k?t này là h?p l? ch? cho đ?n khi máy tính kh?i đ?ng l?i ho?c t?t tr? khi các khóa registry có ch?a thông tin v? các liên k?t đư?c C?p Nh?t.

Có th? có nhi?u liên k?t tư?ng trưng cho m?t tên thi?t b? Windows NT. Tuy nhiên, ch? MS-DOS tên thi?t b? mà h? th?ng ban đ?u đư?c gán cho thi?t b? Windows NT n?i b? v?n c?n trên toàn kh?i đ?ng l?i. Do đó, nó có th? t?o thêm các liên k?t tư?ng trưng ch? đ?nh nhi?u ch? cái ? đ?a cho m?t ? đ?a CD-ROM duy nh?t, nhưng các k? t? ? đ?a b? sung ch? ? l?i cho đ?n khi máy t?t ho?c kh?i đ?ng l?i.

Win32 các chương tr?nh có th? truy xu?t tên thi?t b? Windows NT k?t h?p v?i m?t tên thi?t b? c? th? MS-DOS b?i g?i QueryDosDevice() v?i tên thi?t b? MS-DOS. Sau đây là ví d? m? đó cho th?y làm th? nào đ? làm đi?u này:
char szNtDeviceName[MAX_PATH];

if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH))
{
   printf ("C: is linked to %s\n", szNtDeviceName);
}
				
Win32 các chương tr?nh có th? t?o và xoá liên k?t tư?ng trưng b?ng cách g?i DefineDosDevice(). Đ? t?o ra m?t liên k?t tư?ng trưng, g?i DefineDosDevice v?i các DDD_RAW_TARGET_PATH c?. Đ? lo?i b? m?t liên k?t tư?ng trưng, g?i nó v?i các DDD_REMOVE_DEFINITION và DDD_RAW_TARGET_PATH c?. M?u sau đây chương tr?nh ch?ng t? c? hai trong s? các ho?t đ?ng này:
/*
   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);
   }

}
				

Thu?c tính

ID c?a bài: 235128 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Win32 Application Programming Interface
T? khóa: 
kbinfo kbkernbase kbmt KB235128 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:235128

Cung cấp Phản hồi

 

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