SerCxGetRingBufferUtilization 函式 (sercx.h)
SerCxGetRingBufferUtilization 方法可讓序列控制器驅動程序判斷目前從序列埠接收的數據會填入多少預先輸入通道緩衝區。
語法
void SerCxGetRingBufferUtilization(
[in] WDFDEVICE Device,
[out, optional] PULONG BytesUsed,
[out, optional] PULONG BufferSize
);
參數
[in] Device
代表序列控制器之架構裝置物件的WDFDEVICE句柄。
[out, optional] BytesUsed
目前包含在預先輸入通道緩衝區中,用來儲存已接收數據的未讀取數據位元組數目。
[out, optional] BufferSize
用來儲存已接收數據之預先輸入通道緩衝區的大小,以位元組為單位。
傳回值
沒有
言論
序列控制器驅動程式會呼叫此函式,以判斷在預先輸入通道緩衝區中有多少儲存空間。 序列控制器擴充功能 (SerCx) 會維護此緩衝區,以包含串行控制器驅動程式在目前未處理用戶端讀取要求時從序列埠接收的數據。 此函式提供驅動程式正確執行軟體流程控制所需的資訊(XON/XOFF)。
為了實作軟體流程控制,序列控制器驅動程式會監視類型前方通道緩衝區中可用的空間量。 可用空間,以位元組為單位,等於 BufferSize - BytesUsed。 當可用空間低於用戶端指定的閾值時,XoffLimit,序列控制器驅動程式會傳輸 XOFF 字元,以告訴傳輸埠暫停傳輸。 稍後,當可用空間高於用戶端指定的閾值時,XonLimit,驅動程式會傳輸 XON 字元,告訴傳輸埠繼續傳輸。 用戶端通常會在先前 IOCTL_SERIAL_SET_HANDFLOW I/O 控制要求中指定這兩個臨界值。
SerCx 會評估目前流程控制和交握設定內容中類型前置通道緩衝區中的可用空間。 在預先輸入通道緩衝區完全清空之後,SerCx 會呼叫驅動程式的 EvtSerCxReceive 回呼函式,讓驅動程式可以傳送 XON 並繼續接收數據。 EvtSerCxReceive 函式可以呼叫 SerCxGetRingBufferUtilization,以判斷是否要傳送 XON。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 普遍 |
標頭 | sercx.h |
IRQL | <= DISPATCH_LEVEL |