Làm thế nào để nhận dạng thiết bị USB hoạt động?


16

Tôi tò mò cách nhận dạng thiết bị USB hoạt động trong Windows. Tôi tưởng tượng nó giống như thế này:

  • Khi bạn cắm thiết bị, nó báo cho Windows "đây là ID thiết bị của tôi để cho bạn biết tôi là ai"
  • Windows sẽ xem có trình điều khiển nào đã được cài đặt phù hợp với ID thiết bị đó không. Trình điều khiển có thể cho Windows biết thiết bị nên được gọi là gì - như "BlackBerry Curve" hoặc "Máy in Canon"
  • Nếu vậy, bằng cách nào đó nó liên kết thiết bị đó với trình điều khiển đó
  • Mặt khác, nó tìm kiếm một trình điều khiển phù hợp trực tuyến (nếu bạn cho phép)

Tôi có đúng không Nếu vậy, điều đó vẫn để lại một số câu hỏi.

  • Khi bạn cài đặt trình điều khiển, họ đi đâu? Chúng có phải là tệp trong một thư mục, hoặc chúng có được thêm vào sổ đăng ký không?
  • Windows đang làm gì khi lần đầu tiên nhận ra thiết bị, suy nghĩ và cuối cùng nói rằng "thiết bị mới của bạn đã được cài đặt và sẵn sàng để sử dụng?"
  • Windows tìm kiếm trình điều khiển bị thiếu ở đâu? Có phải trong cơ sở dữ liệu của họ? Các nhà sản xuất thiết bị có gửi trình điều khiển cho Microsoft để đưa vào đó không?

Bất cứ ai có thể giải thích làm thế nào quá trình này thực sự hoạt động? Ngoài ra, các hệ điều hành khác làm điều này khác nhau?

Câu trả lời:


24

Bus USB được thiết kế vật lý để có thể nhận ra hành động cắm (và tháo) phích cắm của bộ điều khiển máy chủ. Khi sự kiện "cắm" này xảy ra, bộ điều khiển máy chủ thông báo cho trình điều khiển thiết bị của nó quét xe buýt và yêu cầu mỗi thiết bị tự nhận dạng.

Tất cả các thiết bị USB chứa một tập hợp thông tin về thiết bị, được gọi là bộ mô tả. Bộ mô tả thiết bị được lấy từ tất cả các thiết bị có cùng lệnh. Điều này cho phép trình điều khiển thiết bị cho bus USB tự hỏi một cách hiệu quả một thiết bị mới được kết nối là gì và mong muốn nhận được phản hồi hợp lý.

Trong tất cả các mô tả, chỉ một số ít được sử dụng trực tiếp để khớp trình điều khiển với hầu hết các thiết bị. Điều này là do USB định nghĩa các lớp thiết bị và thông thường trình điều khiển hệ thống cho mỗi lớp thiết bị là đủ để xử lý bất kỳ thiết bị nào tuyên bố là thuộc lớp đó.

Tất cả các bàn phím sẽ tuyên bố là thuộc lớp HID (Giao diện con người), ví dụ như chuột, máy tính bảng và bộ điều khiển trò chơi. Lớp HID có một số lớp con (bàn phím, chuột, v.v.), vì vậy mỗi lớp được xử lý theo cách mong đợi.

Hầu hết các thiết bị giống như đĩa sẽ tuyên bố là thuộc lớp Mass Storage và trình điều khiển hệ thống cũng chỉ hoạt động cho những thiết bị đó.

Ngoài lớp và lớp con, các mô tả cũng bao gồm ID nhà cung cấp (VID), ID sản phẩm (PID) và sửa đổi. ID nhà cung cấp được chỉ định bởi ủy ban tiêu chuẩn (hầu hết theo thứ tự phát hành nhưng một số công ty nhận được yêu cầu đặc biệt: ví dụ: intel là 0x8086). ID sản phẩm được chỉ định bởi mỗi nhà cung cấp và sự kết hợp giữa VID và PID phải là duy nhất cho mỗi sản phẩm được phát hành.

Khi một thiết bị được cài đặt lần đầu tiên, VID, PID, sửa đổi, lớp và lớp con được sử dụng theo cách có thể dự đoán để chọn trình điều khiển thiết bị được tải. Có tên cụ thể của nhà cung cấp và sản phẩm giúp nhà cung cấp có thể tùy chỉnh một thiết bị có thể được xử lý (gần như) chính xác bởi trình điều khiển hệ thống chứng khoán.

Một mô tả quan trọng khác là số sê-ri thiết bị. Nếu một thiết bị có số sê-ri, thì nó có thể được nhận dạng và xử lý như vậy khi cắm lại ngay cả khi sử dụng cổng USB vật lý khác. Điều này rất quan trọng đối với các thiết bị lưu trữ để chúng có cùng ký tự ổ đĩa và cho các thiết bị như bộ điều hợp cổng nối tiếp và modem để chúng được chỉ định cùng một cổng COM.

Toàn bộ quá trình này được ghi lại tại MSDN , nhưng các chi tiết được trải rộng ở nhiều nơi.


Cảm ơn đã giải thích phương pháp. Rất thú vị!
Nathan Long

3
Những giờ tôi dành để lượm lặt những chi tiết này từ tài liệu và mẫu là một nhiệm vụ bất ngờ khi tôi viết trình điều khiển thiết bị đầu tiên cho Windows. Tôi rất vui được chia sẻ kết quả của điều đó ...
RBerteig

7

Câu hỏi:

  • Thư mục: Trình điều khiển được cài đặt vào 2 thư mục. Phần chạy được (trong hầu hết các trường hợp) được cài đặt vào% RootDir% \ system32, phần thông tin thiết bị được cài đặt vào% RootDir% \ inf. Trong thư mục inf, đối với trình điều khiển đã cài đặt / đã đăng ký, tệp OEM * .inf được tạo. (* là một số). Trong Vista, trình điều khiển được sao chép vào thư mục% RootDir% \ system32 \ driverstore làm tài liệu tham khảo khi cài đặt các thiết bị chưa gặp phải.
  • Đăng ký: Trình điều khiển được cài đặt như một dịch vụ chế độ kernel. Đối với khóa đăng ký này được tạo cho dịch vụ trình điều khiển. Có một nơi khác dưới trình điều khiển xe buýt, nơi các thiết bị tương ứng có một khóa cá thể thiết bị riêng lẻ. Trong khóa này, thiết bị có tham chiếu đến trình điều khiển hiện đang được sử dụng cho thiết bị này.
  • Thiết bị 'đến': Khi tài xế xe buýt tìm thấy một thiết bị mới trên xe buýt của mình, nó sẽ tạo một sổ đăng ký khóa dưới khóa riêng tương ứng với id cá thể của thiết bị duy nhất, có thể được sử dụng để nhận dạng duy nhất một thiết bị trên hệ thống. Nếu khóa này đã tồn tại, trình điều khiển xe buýt cố tải thiết bị được tham chiếu bởi nút này. Khi nút này không tồn tại hoặc trình điều khiển không tải, hệ thống sẽ cố gắng tìm trình điều khiển tương thích cho thiết bị, bằng cách quét trình điều khiển thiết bị đã đăng ký theo% RootDir% \ inf. Các trình điều khiển đủ điều kiện cho thiết bị này, được liệt kê và sắp xếp. Trình điều khiển tốt nhất sau đó được chọn và tải cho thiết bị.
  • Tìm kiếm trình điều khiển: Trình điều khiển được tìm kiếm đầu tiên trong thư mục inf. Khi không tìm thấy trình điều khiển, các cửa sổ sẽ hỏi người dùng, liệu anh ta có thể cung cấp trình điều khiển hoặc nếu nó nên tìm trên máy chủ của Microsoft. Các nhà sản xuất trình điều khiển có thể gửi trình điều khiển của họ để đưa vào máy chủ trình điều khiển thiết bị của Microsoft.

Lunatik có phần đầu tiên của câu trả lời, làm thế nào mà người được gọi là tài xế xe buýt tìm thấy thiết bị.


3

Tôi muốn giới thiệu một cuốn sách hay về usb:

  • USB Hoàn thành bởi Jan Axelson

Tôi biết rằng bạn đã không yêu cầu điều này, nhưng thật tốt khi biết một chút về các thiết bị usb được cho là kết nối.

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.