共用方式為


SerCx2 讀取和寫入要求的處理

周邊驅動程式會將寫入 (IRP_MJ_WRITE) 和 讀取 (IRP_MJ_READ) 要求傳送到串列控制器上的埠,以將資料傳送至埠的周邊裝置。 SerCx2 處理這些要求的方式已妥善定義,即使要求逾時或取消也一樣。

取消讀取或寫入要求

讀取或寫入要求完成之前,作業系統或傳送要求的周邊驅動程式可能會取消此要求。 如果在 SerCx2 傳輸要求的任何資料之前發生取消,SerCx2 會以STATUS_CANCELLED狀態碼完成要求。

不過,如果在要求傳輸一或多個位元組的資料之後取消讀取或寫入要求,但在傳輸要求的所有資料之前,SerCx2 會以STATUS_SUCCESS狀態碼完成要求。 完成的要求會報告在處理要求期間由 SerCx2 讀取或寫入的位元組數目。 如有必要,傳送要求的周邊驅動程式可以使用這項資訊來傳送第二個要求,以完成部分完成的讀取或寫入作業。

逾時的要求

如果讀取或寫入要求可能需要太長的時間來處理,則可能會逾時。 此外,如果序列控制器收到的兩個連續位元組之間的時間超過一些允許的時間上限,讀取要求可能會逾時。 在任一情況下,偵測到逾時條件時,SerCx2 會立即完成具有STATUS_TIMEOUT狀態碼的要求。 完成的要求會報告在處理要求期間由 SerCx2 讀取或寫入的位元組數目。 如有必要,傳送要求的周邊驅動程式可以使用這項資訊來傳送第二個要求,以完成部分完成的讀取或寫入作業。 如需逾時的詳細資訊,請參閱 SERIAL_TIMEOUTS

硬體限制的影響

一般而言,SerCx2 會精確地報告讀取或寫入要求所傳輸的位元組數目,該要求逾時或取消。 不過,某些用來執行系統 DMA 交易的硬體可能無法精確地計算部分完成讀取或寫入交易所傳輸的位元組數目。 如果是,相關聯的讀取或寫入要求可能會只報告傳輸的位元組近似計數。

傳送零個位元組的要求

為了回應讀取或寫入要求來傳輸零個位元組,SerCx2 會以STATUS_SUCCESS狀態碼完成要求,但不會執行任何作業。