Những mô tả báo cáo và những báo cáo (Reports and Report Descriptors )
Một thiết bị HID chuyển thông tin trong một khối được biết đến như là một báo cáo. Các báo cáo có chứa bit và các trường định dạng kiểu số nguyên theo một ký hiệu. Nhiều đặc tả HID và đặc điểm kỹ thuật liên quan đến tài liệu mô tả nội dung của các báo cáo và ...
Một thiết bị HID chuyển thông tin trong một khối được biết đến như là một báo cáo. Các báo cáo có chứa bit và các trường định dạng kiểu số nguyên theo một ký hiệu. Nhiều đặc tả HID và đặc điểm kỹ thuật liên quan đến tài liệu mô tả nội dung của các báo cáo và báo cáo nhận diện chi tiết. Tôi sẽ phân tích hai mẫu báo cáo nhận diện đây để giúp bạn hiểu các kỹ thuật.
Mẫu nhận diện bàn phím
Để bắt đầu với, tôi đề nghị bạn nên tải được gọi là HID Descriptor Tool (DT.EXE) từ http://www.usb.org. Các công cụ cho phép bạn tạo và chỉnh sửa báo cáo nhận diện bằng cách sử dụng tên. Hình 13-1 minh hoạ các giao diện người sử dụng và một trong những ví dụ nhận diện có sẵn với các công cụ.
Hình 13-1. Bằng cách sử dụng HID Tool để xác định một báo cáo nhận diện bàn phímMục đầu tiên trong các mẫu báo cáo nhận diện được đưa vào chủ yếu chỉ định một tên cho một số thông số hằng số trong các yếu tố của nhận diện. Bạn cần phải có HID Usage Tables sử dụng tài liệu để giải thích các số. Ví dụ, sử dụng mã số 6 có nghĩa là bàn phím trong máy tính mô phỏng thiết bị kiểm soát trang.
Thứ hai, xác định mục sử dụng cho các trang kế tiếp gồm có các trang trong bộ sưu tập nhận diện cấp cao . Trong đặc điểm kỹ thuật HID, một nhóm tập hợp dịch vụ dữ liệu liên quan đến mục trên. Ví dụ, một nhóm tập hợp vật lý thu thập tại một điểm hình học, trong khi một nhóm tập hợp ứng dụng cũng có thể liên hệ với các ứng dụng. Một khái niệm thêm nữa, những tập hợp logic, cho phép liên quan đến mục được nhóm vào bên trong một cấu trúc dữ liệu hợp lại, chẳng hạn như một byte dữ liệu truy cập kế tiếp. Những khái niệm trừu tượng như vậy là để được gần vô nghĩa, và Microsoft vô nghĩa gán thêm, như sau:
• Một tập hợp đầu mục, chẳng hạn như bắt đầu bằng một trong những mục thứ ba trong bàn phím mẫu, tương ứng với một tổ chức địa chỉ riêng rẽ. Hành động như là một kênh của thiết bị, HIDCLASS tạo ra một đối tượng vật lý (PDO) cho mỗi tập các đầu .Các thiết bị định danh cho tập hợp bao gồm ID tương thích, dựa trên các mã sử dụng. Xem Bảng 13-1. Nếu tập hợp nào khác đã sử dụng, HIDCLASS sẽ không tạo ra một ID tương thích. Tham khảo Chương 15 để biết thêm thông tin về tầm quan trọng ID tương thích trong việc nạp trình điều khiển. PDO sau đó trở thành cơ sở của một ngăn xếp thiết bị PnP cho một số loại thiết bị. Chú ý rằng nhiều tập đầu mục ảnh hưởng đến nhiều ngăn xếp thiết bị. Trong làm việc thực tế, các thiết bị phải sử dụng báo cáo nhận diện để phân biệt giữa các tập khác nhau.
• Một tập liên kết là một trong những tập mục đầu cấp. Liên kết cung cấp một bộ sưu tập của tổ chức Hierarchy rằng các ứng dụng có thể sử dụng để kiểm soát nhóm liên quan trong một thiết bị phức tạp. Trên một game pad, ví dụ, một bộ sưu tập có thể sử dụng liên kết để phân biệt giữa các nút actuated do bên trái và tay phải. Có vẻ ít điểm để tổng quát này, tuy nhiên, khi kết thúc ứng dụng thường yêu cầu người dùng để ấn định ý nghĩa để kiểm soát dựa trên con số hơn là vị trí trong một Hierarchy. Nhưng có lẽ tôi chỉ nhìn thấy không có đủ các ứng dụng và thiết bị HID để tạo ra một bản án, toàn diện.
Bảng 13-1. HIDCLASS-tương ID cho mỗi hỗ trợ sử dụng
Sử dụng trang sử dụng tương id
Chung loại máy tính để bàn Pointer hay chuột HID_DEVICE_SYSTEM_MOUSE
Bàn phím hay bàn phím HID_DEVICE_SYSTEM_KEYBOARD
Phím điều khiển hay game pad HID_DEVICE_SYSTEM_GAME
Hệ thống kiểm soát HID_DEVICE_SYSTEM_CONTROL
Tiêu dùng (Bất kỳ) HID_DEVICE_SYSTEM_CONSUMER
Trong đơn cấp đầu cho bộ sưu tập các mẫu bàn phím, quan trọng nhất là những bài chính, tên là bài đóng góp và các OUTPUT. Một yếu tố đầu vào mục tương ứng với một trường đầu vào trong một báo cáo, trong khi một mục OUTPUT tương ứng với một lĩnh vực sản xuất trong một báo cáo. Hiện cũng có thể được dùng để xác định đặc điểm bài trong lĩnh vực báo cáo một tính năng, nhưng bàn phím mẫu không bao gồm bất kỳ người trong số họ. Một số bài toàn cầu việc chính trong bài để mô tả các bản trình bày và ý nghĩa của các dữ liệu riêng của mình.
Điều quan trọng là phải nhận thấy là input, OUTPUT, và đặc điểm bài báo cáo có thể được Interleaved trong báo cáo descriptor. Các bộ sưu tập cấu trúc logic trong một cấp cao bộ sưu tập không phải là quan trọng trong đó xác định bản ghi dữ liệu xuất hiện cùng nhau trong một bản báo cáo. Thay vào đó, các loại hình các mục quản lý quyền. Do đó, ví dụ bàn phím descriptor mixes OUTPUT đóng góp và các bài trong một cách mà có thể đề nghị rằng có các báo cáo năm, hoặc một người nào khác bidirectional báo cáo. Trong thực tế, có một đầu vào báo cáo xác định bởi các INPUT bài và sản lượng một báo cáo được xác định bởi các bài OUTPUT.
Các bài chính, cùng với tất cả các bài đủ điều kiện toàn cầu, xác định các bit, bố trí của một cấu trúc báo cáo. Để hình dung báo cáo, chuyển nhượng quyền từ bit bên trái và không để lại bất kỳ bit không sử dụng cho mục đích alignment. Multibit chữa trị cho các giá trị, bao gồm cả những người span byte ranh giới, như ít về cuối (ít nhất đáng kể bit trên bên phải của kết quả hình ảnh). Chia kết quả vào byte, mà các thiết bị truyền từ quyền bên trái.
Trong báo cáo bàn phím, chúng tôi đã năm bản ghi dữ liệu trong bộ sưu tập, và họ xác định một yếu tố đầu vào báo cáo và một báo cáo sản lượng (xem Hình 13-2):
• An đầu vào mục gồm tám (REPORT_COUNT) single-bit, giá trị (REPORT_SIZE 1), ở mỗi phòng trong số đó có thể thay đổi từ 0 (LOGICAL_MINI ¬ Mum) tới 1 (LOGICAL_MAXIMUM). Ý nghĩa của các bit tương ứng với bàn phím Usages (USAGE_PAGE) E0 thông qua E7 (USAGE_MINI ¬ Mum và USAGE_MAXIMUM). Nói cách khác, byte 0 đầu vào của các báo cáo có chứa bit cờ để chỉ đó của chuyển đổi cơ cấu kinh-loại phím trên bàn phím hiện đang chán nản.
• A cố định đầu vào mục gồm một (REPORT_COUNT) 8-bit, giá trị (REPORT_SIZE). Đây là 1 trong byte đầu vào báo cáo, và điều đó chỉ đơn giản là một chỗ có chứa dữ liệu không hợp lệ.
• An sản lượng sản phẩm bao gồm năm (REPORT_COUNT) single-bit (REPORT_SIZE) giá trị. Các LOGICAL_MINIMUM và Đăng ¬ CAL_MAXIMUM giá trị trước đó xác định áp dụng cho những giá trị, vì họ đã không được ghi đe. Ý nghĩa của các bit là khác nhau, tuy nhiên: họ tương ứng với LEDs (USAGE_PAGE) với các nhãn như lần Lock (USAGE_MINIMUM và LOGICAL_MAXI ¬ Mum). Nói cách khác, các lệnh thấp 5-bit của byte 0 sản lượng của các báo cáo chứa cờ để kiểm soát LEDs cho toggling phím. • A cố định sản lượng sản phẩm bao gồm một (REPORT_COUNT) 3-bit (REPORT_SIZE) có giá trị. Những 3 bit pad ra, sản lượng đạt đến một báo cáo đầy đủ byte. • An đầu vào mục gồm sáu (REPORT_COUNT) 8-bit, giá trị (REPORT_SIZE), khác nhau, từ 0 thông qua 101 (LOGICAL_MINIMUM và LOGICAL_MAXIMUM) và tương ứng với phím trên một tiêu chuẩn 101-Khóa bàn phím (USAGE_PAGE, USAGE_MINIMUM, và USAGE_MAXIMUM). Nói cách khác, 2 byte thông qua 7 của các đầu vào chứa các mã số báo cáo cho đến sáu phím mà không được sự đồng thời tổ chức xuống.
Hình 13-2. Giao diện của bàn phím đầu vào và sản lượng các báo cáo.
HIDFAKE Descriptor
Hình 13-3 minh hoạ báo cáo descriptor được sử dụng trong các mẫu HIDFAKE driver trong phần nội dung. Descriptor báo cáo này có một số tính năng có khác nhau từ bàn phím mẫu:
• Các đơn xin cấp đầu của cách sử dụng là "Gun thiết bị" từ Gaming Kiểm soát trang. Điều này đã được nhân tạo một sự lựa chọn mà tôi làm để tránh gặp khó khăn cài đặt trình điều khiển mẫu. Đối với bất kỳ cách sử dụng được liệt kê trong bảng 13-1, HIDCLASS sẽ cung cấp một thiết bị tương thích định danh cùng với các thiết bị cụ thể của ID. Windows XP sẽ thích, sau đó là một ký kết phù hợp với trình điều khiển tương thích với một ID unsigned driver (như HIDFAKE.SYS) phù hợp với các thiết bị cụ thể của ID. (Xem Chương 15 cho biết thêm thông tin về cách chọn trình điều khiển Windows XP.) It's impossible gần chuyển đổi sang trình điều khiển cụ thể.
• Tôi đã sử dụng trong vòng ba lý bộ sưu tập của chính bộ sưu tập. Các bộ sưu tập logic chỉ phục vụ để đánh dấu ba-báo cáo của các cơ cấu descriptor. Các mẫu sẽ làm việc hoàn hảo cũng không có họ.
• Các descriptor bao gồm một yếu tố đầu vào hai tính năng báo cáo và các báo cáo. Các đầu vào báo cáo (1) có chứa một nút sử dụng. Là người đầu tiên tính năng báo cáo (2) là trả lại cho một số phiên bản trình điều khiển, và thứ hai, tính năng báo cáo (3) là, cho phép các thử nghiệm dụng để kiểm soát tình trạng của hàng giả nút.
Hình 13-3. Bằng cách sử dụng HID Công cụ để xác định HIDFAKE báo cáo descriptor. HIDFAKE minh hoạ một điểm tốt về báo cáo descriptors. Báo cáo khá nhiều tính năng cần phải có xác định số điện thoại, vì các đặc điểm kỹ thuật HID cuộc gọi cho chúng trong Get_Report_Request và kiểm soát Set_Report_Request ống lệnh. Nếu có báo cáo trong một cấp cao bộ sưu tập có một định danh, tất cả các báo cáo rằng trong bộ sưu tập phải. Trong thực tế, mặc dù, HIDFAKE một mô hình notional điện thoại đã thực sự là một nút báo cáo và không có tính năng báo cáo. Tôi xác định các tính năng báo cáo như một cách để kiểm tra dụng để giao tiếp "out of band" với driver. Nếu chúng tôi đã được giao dịch với một thiết bị thực tế, do đó, driver sẽ có một báo cáo để chèn định danh ở mỗi đầu vào báo cáo mà nó đọc từ điện thoại.