序列 I/O 要求介面
若要控制連接到序列控制器上端口的周邊裝置,用戶端應用程式或周邊設備磁碟機會將 I/O 要求傳送至埠。 用戶端會使用 IRP_MJ_WRITE 和 IRP_MJ_READ 要求,將資料傳送至序列埠,以及從序列埠接收資料。 此外,Windows 會定義一組序列 I/O 控制要求, (IOCTLs) 用戶端可用來設定序列埠。
序列IRP_MJ_XXX要求和序列 IOCTL 一起形成序列 I/O 要求介面,可跨序列控制器裝置支援。 此介面支援Serial.sys驅動程式,以及 SerCx2 或 SerCx 和擴充功能型序列控制器驅動程式的組合。
SerCx2、SerCx 和 Serial.sys支援許多相同的序列 IOCTLs。 不過,SerCx2、SerCx 和 Serial.sys支援 序列設備控制要求中指定的不同 IOCTL 子集。 下表摘要說明 SerCx2、SerCx 和 Serial.sys所支援的 IOCTL 子集。 資料表中的 [是 ] 專案表示序列架構延伸模組或驅動程式支援對應的 IOCTL,而 [否 ] 專案表示它沒有。
序列 IOCTL | SerCx2 | SerCx | Serial.sys |
---|---|---|---|
Yes |
是 |
否 |
|
No |
Yes |
Yes |
|
請參閱注意 1。 |
是 |
Yes |
|
是 |
是 |
是 |
|
No |
No |
Yes |
|
是 |
Yes |
是 |
|
請參閱附注 2。 |
Yes |
是 |
|
Yes |
Yes |
是 |
|
是 |
是 |
Yes |
|
請參閱注意 1。 |
是 |
是 |
|
Yes |
是 |
是 |
|
IOCTL_SERIAL_GET_MODEM_CONTROL (請參閱附注 4.) |
是 |
Yes |
是 |
No |
是 |
是 |
|
是 |
是 |
是 |
|
否 |
是 |
是 |
|
是 |
是 |
是 |
|
是 |
是 |
是 |
|
否 |
是 |
Yes |
|
No |
Yes |
是 |
|
是 |
Yes |
Yes |
|
IOCTL_SERIAL_RESET_DEVICE (請參閱附注 5.) |
No |
否 |
是 |
Yes |
Yes |
Yes |
|
Yes |
是 |
Yes |
|
Yes |
Yes |
Yes |
|
請參閱附注 2。 |
Yes |
是 |
|
請參閱注意 1。 |
Yes |
Yes |
|
請參閱注意 1。 |
是 |
是 |
|
IOCTL_SERIAL_SET_HANDFLOW (請參閱附注 3.) |
是 |
是 |
Yes |
是 |
是 |
是 |
|
IOCTL_SERIAL_SET_MODEM_CONTROL (請參閱附注 4.) |
Yes |
是 |
是 |
Yes |
是 |
Yes |
|
是 |
Yes |
是 |
|
是 |
Yes |
Yes |
|
是 |
Yes |
是 |
|
否 |
是 |
Yes |
|
否 |
是 |
Yes |
|
是 |
是 |
是 |
|
No |
是 |
是 |
SerCx2 可能或可能不支援此 IOCTL,視串列控制器驅動程式的實作和序列控制器硬體的功能而定。
SerCx2 不支援特殊字元。 SerCx2 一律會以 STATUS_SUCCESS 狀態碼完成IOCTL_SERIAL_SET_CHARS要求,但不會設定任何特殊字元或執行任何其他作業來回應此要求。 針對 IOCTL_SERIAL_GET_CHARS 要求,SerCx2 會將 SERIAL_CHARS 結構中的所有字元值設定為 null,並以STATUS_SUCCESS狀態碼完成要求。
SerCx2 和 SerCx 僅支援針對 SERIAL_HANDFLOW結構之 FlowReplace和ControlHandShake成員所定義的旗標子集。 Serial.sys支援所有這些旗標。 如需詳細資訊,請參閱 SERIAL_HANDFLOW。
IOCTL_SERIAL_GET_MODEM_CONTROL和IOCTL_SERIAL_SET_MODEM_CONTROL要求主要用於硬體測試。 數據機控制作業未定義標準暫存器配置。 使用數據機控制 IOCTLs 的周邊驅動程式會自行依賴特定序列控制器的硬體功能。
Serial.sys驅動程式一律會以 STATUS_SUCCESS 完成IOCTL_SERIAL_RESET_DEVICE 要求,但不會執行任何作業來回應此要求。 SerCx2 和 SerCx 不支援IOCTL_SERIAL_RESET_DEVICE要求,而且一律使用 STATUS_NOT_IMPLEMENTED 完成這些要求。
如需有關串列控制器IOCTL_SERIAL_XXX要求和讀取和寫入要求的詳細資訊,請參閱ntddser.h標頭。