Làm thế nào để các hệ điều hành dựa trên Windows NT giải quyết các thiết bị?


9

Tôi bối rối với ký hiệu như

phân vùng nhiều (0) đĩa (0) rdisk (0) (1) \ ...

\ Thiết bị \ HardDisk1 \ DR1
\ Thiết bị \ Video0

Tôi chỉ thấy các địa chỉ này trong ngữ cảnh của các hệ điều hành dựa trên Windows NT như Windows XP và Windows 7. Các địa chỉ này có ý nghĩa gì và chúng được sử dụng như thế nào để chỉ các thiết bị như đĩa cứng, bộ điều hợp đồ họa, thiết bị giao diện người (bàn phím , chuột, v.v.), bộ điều hợp mạng và phần cứng khác?


Ở đâu và làm thế nào để bạn có kế hoạch giới thiệu với họ?
KCotreau

Đôi khi, tôi nhận được tin nhắn đề cập đến các thiết bị sử dụng các tên này. Điều tôi muốn hiểu là ý nghĩa của những địa chỉ này, cách các thiết bị khác được xử lý bằng cách sử dụng các ký hiệu này và cách ứng dụng này có thể được sử dụng để truy cập trực tiếp vào phần cứng (nếu có thể).
bwDraco

Linux sử dụng /devcác nút để cho phép truy cập trực tiếp vào phần cứng. Những gì tôi muốn hiểu là những gì trông giống như một cơ chế tương tự để giải quyết và truy cập phần cứng trong Windows.
bwDraco

Vì Windows NT, theo hiểu biết tốt nhất của tôi, Windows không cho phép bạn truy cập trực tiếp vào phần cứng. Đó là cách nó bảo vệ chính nó. Với Windows 95/98 / ME, bất kỳ lập trình viên nào cũng có thể và nó cho phép họ làm cho HĐH không ổn định. Giải pháp là làm cho mọi thứ đi qua kernel và để nó quyết định xem nó có an toàn để thực thi hay không. Nếu không, nó có thể gây ra lỗi, nhưng bảo vệ bản thân khỏi chương trình xấu ... ít nhất là ở mức độ lớn hơn.
KCotreau

@KCotreau: Điều đó đúng, nhưng không liên quan. Bây giờ bạn phải hỏi kernel. Nhưng nếu đĩa cứng không có tên như vậy, bạn hoàn toàn không thể hỏi kernel. Nó sẽ không biết bạn đang nói về ổ cứng nào.
MSalters

Câu trả lời:


9

Trái ngược với niềm tin phổ biến, nhân của Windows không có một tập tin bắt nguồn từ ( "file") hệ thống. Trong * nix, gốc là /và trong Windows \. Mặc dù vậy, hệ thống con Win32 không phơi bày nó. Bạn có thể khám phá nó với WinObj .

Một số (có thể quen thuộc) tên thiết bị NT ( MNchỉ là số nguyên):

  • \Device\HarddiskM\DRN: Đĩa
  • \Device\HarddiskVolumeN: Phân vùng
  • \Device\CdRomN: Ổ đĩa quang
  • \Device\KeyboardClassN: Những bàn phím
  • \Device\MountPointManager: Không phải là thiết bị, nhưng theo dõi các thiết bị lưu trữ
  • \Device\Null: Ăn dữ liệu và xuất null (số không)

\Device\HardDisk1\DR1là tên thật của đĩa cho Windowsmulti(0)disk(0)rdisk(0)partition(1)là di sản - nó không liên quan gì đến cách Windows đề cập đến các thiết bị, nhưng cách trình tải khởi động đề cập đến đĩa. Cách thức hoạt động, tôi không biết ( trang này giải thích các phần của nó ), nhưng nó không thực sự là thứ mà Windows quan tâm sau khi nó bắt đầu khởi động.

Các phiên bản mới hơn của Windows sử dụng Dữ liệu cấu hình khởi động (BCD), đây là một tệp có tên BCDđịnh dạng giống như của sổ đăng ký, thay vì Boot.ini. Nó thường sử dụng các mã định danh duy nhất (GUID) để chỉ khối lượng thay vì ký tự ổ đĩa hoặc đường dẫn hệ thống tệp và đó là phiên bản mới hơn của Windows sử dụng.


Còn phần cứng khác ngoài thiết bị lưu trữ (như \Device\Video0) thì sao?
bwDraco

@DragonLord: ... còn nó thì sao? Không chắc chắn những gì bạn có ý nghĩa.
dùng541686

Những tên nào được sử dụng để chỉ bàn phím, chuột, bộ điều hợp mạng và các thiết bị khác?
bwDraco

@DragonLord: Điểm tốt, tôi sẽ thêm điều đó. Tôi chỉ tập trung vào tải boot, không nhận thấy câu hỏi chung chung hơn.
dùng541686

"Hệ thống tệp gốc" mà bạn đã đề cập được gọi là không gian tên Trình quản lý đối tượng . Tôi đã tìm thấy điều này sau khi nhấp qua liên kết WinObj và thực hiện một số nghiên cứu. Thật thú vị khi Windows NT hoạt động ở bên trong ...
bwDraco

1

Dòng đầu tiên, đã bị BCD (kho dữ liệu cấu hình khởi động) lỗi thời trong Windows Vista, Windows 7 và Server 2008, là từ tệp boot.ini cho Windows XP hoặc Server 2003, và nằm trong thư mục gốc của ổ đĩa hệ thống. Điều đó cho Windows biết nơi cần đi (đĩa và phân vùng) để tìm các tệp hệ thống mà nó cần để khởi động.

Nhìn vào đây để được giải thích chi tiết về "đa" và "ndisk". Phần còn lại có nghĩa là nhìn vào đĩa 0 (chúng bắt đầu từ 0 và di chuyển lên từ đó và bạn có thể thấy số của chúng trong trình quản lý đĩa), phân vùng 1 (không giống như các đĩa, chúng bắt đầu được đánh số 1 và tăng lên).

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

Theo như liệt kê của các thiết bị, nó là một chủ đề lập trình rất phức tạp, được giải thích ở đây nếu bạn muốn đầu của bạn nổ tung. Định dạng bạn đưa ra là cách thiết bị được xử lý dưới dạng ID phần cứng trong sổ đăng ký.

Là một vấn đề thực tế, bạn có thể nhìn vào khóa đăng ký này

HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Enum

để khớp với bất kỳ lỗi nào bạn có thể nhận được với giá trị "ID phần cứng" trong một trong các khóa phụ để xác định chính xác lỗi mà thiết bị có thể đề cập đến.


1
Mục 4.2.7 của Đặc tả kỹ thuật điện toán RISC nâng cao , được NetBSD Foundation tái bản tại đây , cho mọi người biết về các đường dẫn ARC.
JdeBP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.