Windows NT 기반 운영 체제는 장치를 어떻게 처리합니까?


9

나는 같은 표기법과 혼동

다중 (0) 디스크 (0) rdisk (0) 파티션 (1) \ ...

\ 장치 \ 하드 디스크 1 \ DR1
\ 장치 \ 비디오 0

이 주소는 Windows XP 및 Windows 7과 같은 Windows NT 기반 운영 체제의 컨텍스트에서만 볼 수 있습니다.이 주소의 의미와 하드 디스크, 그래픽 어댑터, 휴먼 인터페이스 장치 (키보드)와 같은 장치를 나타내는 데 어떻게 사용됩니까? , 마우스 등), 네트워크 어댑터 및 기타 하드웨어?


그들을 어디에서 어떻게 참조 할 계획입니까?
KCotreau

때로는 이러한 이름을 사용하는 장치를 나타내는 메시지가 나타납니다. 내가 이해하고자하는 것은이 주소의 의미, 이러한 표기법을 사용하여 다른 장치를 처리하는 방법 및 응용 프로그램에서 하드웨어에 직접 액세스하기 위해이 장치를 어떻게 사용할 수 있는지입니다 (가능한 경우).
bwDraco

Linux는 /dev노드를 사용하여 하드웨어에 직접 액세스 할 수 있습니다. 내가 이해하고 싶은 것은 Windows에서 하드웨어를 처리하고 액세스하는 비슷한 메커니즘처럼 보이는 것입니다.
bwDraco

Windows NT 이후로, 내가 아는 한, Windows는 하드웨어에 직접 액세스 할 수 없습니다. 그것이 스스로를 보호하는 방법입니다. Windows 95 / 98 / ME를 사용하면 모든 프로그래머가 OS를 불안정하게 만들 수 있습니다. 해결책은 모든 것이 커널을 통과하게하고 실행하기에 안전한지를 결정하는 것이 었습니다. 그렇지 않은 경우 오류가 발생할 수 있지만 적어도 프로그래밍 수준이 나쁜 프로그래밍으로부터 스스로를 보호 할 수 있습니다.
KCotreau

@KCotreau : 사실이지만 관련이 없습니다. 이제 커널에게 물어봐야합니다. 그러나 하드 디스크에 이와 같은 이름이 없으면 커널에 전혀 물어볼 수 없습니다. 어떤 하드 디스크에 대해 이야기하고 있는지 알 수 없습니다.
MSalters

답변:


9

일반적인 생각과 달리 Windows 커널 에는 루팅 된 파일 ( "파일") 시스템이 있습니다. * nix에서 루트는 /이고 Windows 에서는 루트입니다 \. 그러나 Win32 하위 시스템은이를 공개하지 않습니다. WinObj로 탐색 할 수 있습니다 .

일부 (아마도 익숙한) NT 장치 이름 ( MN단지 정수) :

  • \Device\HarddiskM\DRN: 디스크
  • \Device\HarddiskVolumeN: 파티션
  • \Device\CdRomN: 광 디스크 드라이브
  • \Device\KeyboardClassN: 키보드
  • \Device\MountPointManager: 장치는 아니지만 저장 장치를 추적합니다.
  • \Device\Null: 데이터를 소비하고 널 (0)을 출력합니다.

\Device\HardDisk1\DR1는 IS 실제 디스크의 이름을 윈도우에 , 그리고 multi(0)disk(0)rdisk(0)partition(1)레거시 - 그것은 방법과는 아무 상관이없는 Windows가 장치에 의미를하지만, 어떻게 부트 로더는 디스크를 말합니다. 작동 방식, 나는 모른다 ( 이 페이지는 그것의 일부를 설명한다 ), 그러나 부팅을 시작한 후 Windows가 실제로 우려하는 것은 아닙니다.

최신 버전의 Windows에서는 BCD (부팅 구성 데이터)를 사용합니다.이 구성 파일 BCD은 형식이 레지스트리 대신 레지스트리 형식과 같은 이름을 가진 파일 입니다 Boot.ini. 일반적으로 드라이브 문자 나 파일 시스템 경로 대신 고유 식별자 (GUID)를 사용하여 볼륨을 참조하며, 최신 버전의 Windows가 사용합니다.


저장 장치 이외의 하드웨어 (예 :)는 \Device\Video0어떻습니까?
bwDraco

@DragonLord : ... 어떻습니까? 당신이 무슨 뜻인지 확실하지.
user541686

키보드, 마우스, 네트워크 어댑터 및 기타 장치를 나타내는 데 사용되는 이름은 무엇입니까?
bwDraco

@DragonLord : 좋은 지적입니다. 추가하겠습니다. 방금 부트로드에 집중했지만 질문이 더 일반적이라는 것을 알지 못했습니다.
user541686

언급 한 "루트 파일 시스템"을 오브젝트 관리자 네임 스페이스 라고합니다 . WinObj 링크를 클릭하고 조사를 한 후에 이것을 발견했습니다. Windows NT가 내부에서 어떻게 작동하는지는 매우 흥미
롭습니다

1

Windows Vista, Windows 7 및 Server 2008의 BCD (부팅 구성 데이터 저장소)에서 사용되지 않는 첫 번째 줄은 Windows XP 또는 Server 2003의 boot.ini 파일에서 가져온 것으로 루트 디렉토리에 있습니다. 시스템 드라이브. 그러면 부팅해야 할 시스템 파일을 찾기 위해 어디로 갈 것인지 (어떤 디스크 및 파티션) Windows에 알려줍니다.

여기 "멀티"와 "RDISK"에 대한 자세한 설명. 나머지는 디스크 0 (0부터 시작하여 거기에서 위로 이동하면 디스크 관리자에서 번호를 볼 수 있음), 파티션 1 (디스크와 달리 1부터 번호가 매겨지고 시작됨)을 의미합니다.

http://support.microsoft.com/kb/102873

장치의 열거에 관한 한, 그것은 매우 복잡한 프로그래밍 주제이며, 머리를 폭발시키고 싶다면 여기에서 설명 합니다 . 제공 한 형식은 장치가 레지스트리에서 하드웨어 ID로 처리되는 방식입니다.

실질적으로이 레지스트리 키를 볼 수 있습니다

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

오류를 일치시키기 위해 하위 키 중 하나의 "하드웨어 ID"값에 도달하여 오류가 참조 할 장치를 정확하게 결정할 수 있습니다.


1
의 제 4.2.7 고급 RISC 컴퓨팅 사양 , 는 NetBSD 재단이 여기 게시는 , ARC 경로에 대한 하나의 모든 것을 알려줍니다.
JdeBP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.