정보: 이해 장치 이름 및 심볼 링크

기술 자료 번역 기술 자료 번역
기술 자료: 235128 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

하드 디스크, 직렬 포트와 병렬 포트 내부 Windows NT 장치 이름 및 선택적으로 수 같은 장치를 MS-DOS 장치 이름이 있습니다. 이러한 이름은 Windows NT 개체 관리자는 네임스페이스에 있는 위치합니다. NT 장치 이름 Windows NT 및 커널 모드 드라이버를 사용하는 동안 Win32 프로그램을 MS-DOS 장치 이름을 사용해야 합니다. MS-DOS 장치 이름을 기본 NT 장치 이름 기호화된 링크입니다. 이 문서에서는 장치 이름, 심볼 링크 및 Win32 프로그램 만들기 및 심볼 링크 제거 방법을 설명합니다.

추가 정보

내부 NT 장치 이름

커널 모드 장치 드라이버를 로드할 때 초기화 루틴을 Windows NT 개체 관리자를 사용하여 장치 이름을 등록합니다. 이 이름은 Windows NT 장치 이름으로 라고 합니다. Windows NT 및 커널 모드 드라이버는 커널 모드 구성 요소에 장치를 자신의 Windows NT 장치 이름을 참조합니다. 이러한 이름 \Device\CDRom0 및 \Device\Serial0 같은 서식을 가진 및 개체 관리자는 네임스페이스 \device 디렉터리에서 존재할 수도.

Win32 프로그램을 Win32 하위 시스템 및 Win32 API 보다 익숙한 드라이브 문자 및 A:, C:, COM1 같은 MS-DOS 장치 이름이 필요하므로 내부 Windows NT 장치 이름 액세스 장치에 사용할 수 없습니다:, 및 LPT1:. 그러나 Win32 프로그램이 Windows NT 장치 이름을 사용할 수 있지만, 수 정의하고 장치에 액세스하기 위해 MS-DOS 장치 이름을 제거합니다. MS-DOS 장치 이름과 관련된 내부 Windows NT 장치 이름을 검색할 수도 있습니다. 이 문서의 "심볼 링크" 절의 예제 코드를 이 작업을 수행하는 방법에 대해 설명합니다.

보다 잘 개체 관리자 이름을 장치 및 기타 시스템 개체를 추적하는 방법에 대해 이해할 확보하려면 Platform SDK에 WinObj.exe 도구 사용하여 개체 관리자의 네임스페이스를 볼 수 있습니다.

MS-DOS 장치 이름

Win32 프로그램은 드라이브, 직렬 포트 및 병렬 포트를 통해 MS-DOS 장치 이름이 같은 장치를 사용합니다. 디스크 드라이브, 이러한 A: 및 C: 드라이브 문자가 있습니다. 직렬 및 병렬 포트 COM1 같은 이름은 다음과 같습니다:, COM2:, 및 LPT1:. Windows NT 장치 이름 같은 이러한 이름은 개체 관리자는 네임스페이스 있지만 상주하는 있는 \? 디렉터리: Win32 사용자 모드 프로그램에 볼 수 있습니다.

어떤 MS-DOS 장치 이름이 Windows NT 장치 이름 다른 Windows NT 커널 또는 커널 모드 드라이버에서 사용되는 됩니다. Win32 프로그램을 익숙한 드라이브 문자 및 장치 이름; 사용할 수 있도록 Windows NT 장치 이름 참조하는 데 목적이 자신의 COM1 예를 들어,:, Windows NT 장치에 액세스하기 위해. 따라서 MS-DOS 장치 이름이 Windows NT 장치 이름 "심볼 링크는" 라고 합니다. 즉, 개체 관리자의 MS-DOS 장치 이름이 이미 \? 디렉터리 및 개체 관리자 \device 디렉터리의 Windows NT 장치 이름 가리킵니다.

각 MS-DOS 장치 이름이 최대 한 내부 Windows NT 장치를 가리킬 수 있습니다. 그러나 한 대의 장치에 여러 MS-DOS 장치 이름을 가리킬 수 있습니다. 예를 들어, C: 단일 파티션에 대해서만 가리킬 수 있지만, 두 개 이상의 드라이브 문자가 동일한 파티션에 Z:, D:, E: 지점에 다음과 같이 할 수 있습니다.

심볼 링크

레지스트리에서 저장되기 때문에 시스템에서 만든 심볼 링크를 통해 컴퓨터가 다시 시작된 지속됩니다. 프로그램 심볼 링크를 DefineDosDevice() API에서는 만들 수도 있습니다. 이러한 링크는 경우에만 컴퓨터를 다시 시작해야 또는 해당 링크에 대한 정보가 포함된 레지스트리 키를 업데이트하지 않으면 해제할 때까지 유효합니다.

Windows NT 장치 이름 심볼 링크를 여러 개 있을 수 있습니다. 그러나 처음에 내부 Windows NT 장치에 할당된 시스템 간에 유지되는 경우에만 MS-DOS 장치 이름을 다시 부팅합니다. 따라서 단일 CD-ROM 드라이브에 여러 개의 드라이브 문자를 할당할 추가 심볼 링크를 만들 수는 있지만 컴퓨터가 해제된 또는 다시 시작할 때까지 추가 드라이브 문자에 대해서만 남아.

Win32 프로그램을 MS-DOS 장치 이름 사용하여 호출 QueryDosDevice()에 의해 특정 MS-DOS 장치 이름에 관련된 Windows NT 장치 이름을 검색할 수 있습니다. 다음은 이 작업을 수행하는 방법을 보여 주는 예제 코드입니다:
char szNtDeviceName[MAX_PATH];

if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH))
{
   printf ("C: is linked to %s\n", szNtDeviceName);
}
				
Win32 프로그램을 만들고 DefineDosDevice() 호출하여 심볼 링크를 삭제할 수 있습니다. 심볼 링크를 만들려는 DefineDosDevice DDD_RAW_TARGET_PATH 플래그를 사용하여 호출하십시오. 심볼 링크를 제거하려면 DDD_REMOVE_DEFINITION 및 DDD_RAW_TARGET_PATH 플래그로 호출하십시오. 다음 샘플 프로그램을 이러한 작업을 모두 보여줍니다:
/*
   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);
   }

}
				

속성

기술 자료: 235128 - 마지막 검토: 2006년 11월 21일 화요일 - 수정: 4.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Win32 Application Programming Interface?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
키워드:?
kbmt kbinfo kbkernbase KB235128 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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