共用方式為


USB 驅動程式

USB 總線的核心模式仍然映像驅動程式支援單一控制端點,以及多個中斷、大量 IN 和大量 OUT 端點。 您可以使用 I/O 控制代碼和 DeviceIoControl 來存取控制和中斷端點。 大量端點可以使用 ReadFileWriteFile 來存取。

在呼叫 DeviceIoControlReadFileWriteFile 之前,您必須呼叫 CreateFile (Microsoft Windows SDK 檔) 取得裝置句柄中所述。 對於支援每個端點類型的裝置, (控制、中斷、大量 IN、大量 OUT ) ,CreateFile 的單一呼叫會開啟傳送管道至每個端點。

對於支援多個中斷或大量端點的裝置, CreateFile 的單一呼叫會開啟傳送管道至每個類型的最高編號端點。 如果您想要使用不同的端點,您必須執行下列動作:

  1. 呼叫 DeviceIoControl,指定 IOCTL_GET_PIPE_CONFIGURATION的 I/O 控制程式代碼,以判斷埠的端點索引編號 (,也就是傳回USBSCAN_PIPE_INFORMATION結構陣列 ) 的索引。 請注意,這些索引編號不是通用序列總線規格中所述的端點編號。

  2. 呼叫 CreateFile 時,將反斜杠和端點的索引編號附加至 IStiDeviceControl::GetMyDevicePortName 所傳回的埠名稱。

例如,假設裝置 (的埠名稱為 「usbscan0」) 有兩個端點,每個類型 (插斷、大量 IN、大量 OUT) ,索引編號如下所示:

索引 類型 端點#
0 中斷 0x01
1 大量 IN 0x82
2 大量 IN 0x83
3 大量 OUT 0x04
4 大量 OUT 0x05
5 中斷 0x06

如果您使用埠名稱 「usbscan0」 呼叫 CreateFile ,函式會開啟傳送管道至索引值為 2、4 和 5 的端點,以及控制端點。

如果您使用埠名稱 「usbscan0\1」 呼叫 CreateFile ,函式會開啟傳送管道至索引值為 1、4 和 5 的連接點,以及控制端點。

針對此裝置,如果您想要使用中斷端點 0、大量 IN 端點 1 和大量 OUT 端點 3,請呼叫 CreateFile 三次,並指定埠名稱 “usbscan0\0”、“usbscan0\1” 和 “usbscan0\3”。 這會建立三個裝置句柄。 每當後續呼叫 DeviceIoControlReadFile 或 WriteFile,應該指定與所需管道相關聯的裝置句柄。

因為只支援一個控制端點,所以指定任何使用控制管道的 I/O 控制程式代碼會導致驅動程式使用適當的端點,無論哪一個端點 (是否已指定 任何) CreateFile

如需所有 I/O 控制代碼的描述,請參閱 USB 仍然映射 I/O 控制代碼

內核模式 USB 驅動程式不會實作套件或訊息通訊協定。 讀取作業不需要任何特定的封包對齊,但如果讀取要求符合封包大小上限界限,則可以達到更好的效能。 您可以使用 IOCTL_GET_CHANNEL_ALIGN_RQST I/O 控制程式代碼來取得封包大小上限。