共用方式為


HID 架構

Windows 中 HID 驅動程式堆疊的架構建置在名為 hidclass.sys 的類別驅動程式上。 用戶端和傳輸迷你驅動程式會從使用者模式或內核模式存取類別驅動程式。

HID 類別驅動程式

系統提供的 HID 類別驅動程式是 HID 裝置安裝類別 (HIDClass) 的 WDM 函式驅動程式和匯流驅動程式。 HID 類別驅動程式的可執行元件hidclass.sys。 HID 類別驅動程式是 HID 用戶端與各種傳輸之間的黏附,可讓 HID 用戶端以與傳輸的獨立方式撰寫。 當引進新的標準或第三方傳輸時,此抽象層級可讓用戶端繼續運作(幾乎沒有修改)。

下圖是 HID 架構的表示法。

簡化的 HID 驅動程式堆疊圖表,其中顯示 HID 用戶端、HID 類別驅動程式和 HID 傳輸元件。

上圖包含:

  • HID 用戶端 – 識別 Windows 和第三方用戶端及其介面。
  • HID 類別驅動程式 - hidclass.sys 可執行檔。
  • HID 傳輸迷你驅動程式 - 識別 Windows 和第三方傳輸及其介面。

以下是一般 HID 用戶端和傳輸的裝置堆疊圖表。

一般 HID 用戶端和傳輸的 HID 裝置堆疊圖表。

以下是另一個裝置堆疊圖表,其中顯示透過USB的 HID 鍵盤和滑鼠集合。

鍵盤和滑鼠停留在 USB 上之 HID 裝置堆疊的圖表。

HID 用戶端

HID 用戶端是與 HIDClass.sys 通訊的驅動程式、服務或應用程式,通常代表特定類型的裝置(例如感測器、鍵盤、滑鼠等等)。 他們會透過硬體標識碼或特定 HID 集合來識別裝置,並透過下列指引與 HID 集合通訊。

使用者模式驅動程式和應用程式,以及內核模式驅動程式,執行下列動作以操作 HID 集合:

  • 使用者模式驅動程式和應用程式會使用 HIDClass 支援例程 (HidD_Xxx) 來取得 HID 集合的相關信息。
  • 內核模式驅動程式、使用者模式驅動程式和應用程式會使用 HID 剖析支援例程(HidP_Xxx),而內核模式驅動程式則使用 HID 類別驅動程式 IOCTL 來處理 HID 報告。

下表簡化資訊。

模式 驅動程式 應用程式
使用者模式 HidD_Xxx HidP_Xxx
核心模式 HidD_Xxx OR IOCTL_HID_xxx N/A

如需詳細資訊,請參閱 開啟 HID 集合

Windows 中支援的 HID 用戶端

Windows 支援下列最上層集合:

使用方式頁面 使用方式 備註 存取模式
0x0001 0x0001 - 0x0002 滑鼠類別驅動程式和對應程式驅動程式 排除
0x0001 0x0004 - 0x0005 遊戲控制器 共用
0x0001 0x0006 - 0x0007 鍵盤/鍵盤類別驅動程式和對應程式驅動程式 排除
0x0001 0x000C 飛行模式切換 共用
0x0001 0x0080 系統控制項(電源) 共用
0x000C 0x0001 取用者控件 共用
0x000D 0x0001 外部畫筆裝置 排除
0x000D 0x0002 整合式畫筆裝置 排除
0x000D 0x0004 Touchscreen 排除
0x000D 0x0005 精密觸控板 (PTP) 排除
0x0020 *倍數 感應器 共用
0x0084 0x0004 HID UPS 電池 共用
0x008C 0x0002 條碼掃描器(hidscanner.dll) 共用

在上表中,輸入 HID 用戶端的存取模式是 獨佔 的,以防止其他 HID 用戶端在不是該輸入的目標收件者時攔截或接收全域輸入狀態。 基於安全性考慮,原始輸入管理員 (RIM) 會以獨佔方式開啟所有這類裝置。

如果 RIM 以 獨佔 模式開啟裝置,使用者仍然可以開啟 HID 裝置介面,而不要求讀取和寫入許可權,並透過 HIDClass 支援例程取得 HID 裝置資訊(HidD_GetXxx)。

共用模式可讓多個應用程式存取裝置。 例如,多個應用程式可以存取條碼掃描器來查詢裝置功能並擷取統計數據。 不過,從條碼掃描儀擷取已譯碼的數據是以獨佔模式完成。 使用量定義於 USB-IF 使用量資料表中。

*多個:來自0x00的感測器使用量 – 0xFF會針對不同用途進行區隔。 例如,0x10表示生物特徵辨識感測器;0x40表示光感測器。 這些配置不是連續的。 如需感測器使用方式的清單,請參閱 HID 的 USB-IF 裝置類別定義。 如需 Windows 中支援的感測器使用量相關信息,請參閱 HID 感測器使用量

HID 傳輸驅動程式

HID 類別驅動程式的設計目的是使用 HID 迷你驅動程式來存取硬體輸入設備。 HID 迷你驅動程式會擷取其支援的輸入裝置特定作業。 HID 迷你驅動程式會藉由向 HID 類別驅動程式註冊,將其作業系結至 HID 類別驅動程式。 HID 類別驅動程式會呼叫minidriver的支援例程,與 HID 迷你驅動程式通訊。 HID 迷你驅動程式接著會將驅動程式堆疊的通訊傳送至基礎總線或埠驅動程式。

Windows 中支援的 HID 傳輸

如需支援的 HID 傳輸清單,請參閱 HID 傳輸概觀

Windows 硬體實驗室套件 (HLK) 中的 USB 一般 HID 測試 涵蓋 HidUsb 和 HidClass 驅動程式。 第三方 HID 迷你驅動程序沒有 HLK 測試。