IOCTL_SERIAL_PURGE IOCTL (ntddser.h)
IOCTL_SERIAL_PURGE要求會取消指定的要求,並從指定的緩衝區刪除數據。 清除要求可用來取消所有讀取要求和寫入要求,以及從接收緩衝區和傳輸緩衝區刪除所有數據。
清除要求的完成不會指出清除要求取消的要求已完成。 客戶端必須在用戶端釋出或重複使用對應的 IRP 之前,先確認清除的要求已完成。
主要程序代碼
輸入緩衝區
AssociatedIrp.SystemBuffer 成員會指向用戶端配置的 ULONG,用來輸入清除遮罩。 用戶端會將清除遮罩設定為下列一或多個清除旗標的位 OR:
SERIAL_PURGE_RXABORT
-
清除所有讀取 (IRP_MJ_READ) 要求。
SERIAL_PURGE_RXCLEAR
-
如果接收緩衝區存在,則會清除接收緩衝區。
SERIAL_PURGE_TXABORT
-
清除所有寫入 (IRP_MJ_WRITE) 要求。
SERIAL_PURGE_TXCLEAR
-
如果傳輸緩衝區存在,則會清除傳輸緩衝區。
輸入緩衝區長度
Parameters.DeviceIoControl.InputBufferLength 成員會設定為 ULONG 的大小,以位元組為單位。
輸出緩衝區
無。
輸出緩衝區長度
無。
狀態區塊
如果要求成功, Information 成員會設定為 ULONG 的大小,以位元組為單位。 否則, 信息 成員會設定為零。
Status 成員會設定為序列設備控制要求的其中一個一般狀態值。 STATUS_INVALID_PARAMETER的狀態表示清除遮罩無效。
備註
Serial.sys 和 SerCx 允許 IOCTL_SERIAL_PURGE 要求指定一或多個SERIAL_PURGE_XXX 旗標的任何組合。 不過,SerCx2 更嚴格。
如果清除接收緩衝區,SerCx2 會要求清除所有讀取要求。 因此,如果SERIAL_PURGE_RXCLEAR旗標是在 IOCTL_SERIAL_PURGE 要求中設定,則 SerCx2 I/O 要求佇列不得包含任何讀取要求,或必須設定SERIAL_PURGE_RXABORT旗標。 否則,IOCTL_SERIAL_PURGE要求會因為 STATUS_INVALID_DEVICE_STATE 狀態代碼而失敗。
同樣地,如果清除傳輸緩衝區,SerCx2 會要求清除所有寫入要求。 因此,如果SERIAL_PURGE_TXCLEAR旗標是在 IOCTL_SERIAL_PURGE 要求中設定,則 SerCx2 I/O 要求佇列不得包含任何寫入要求,或必須設定SERIAL_PURGE_TXABORT旗標。 否則,IOCTL_SERIAL_PURGE要求會因為 STATUS_INVALID_DEVICE_STATE 狀態代碼而失敗。
如需 SerCx2、SerCx 和 Serial.sys 的詳細資訊,請參閱 序列控制器驅動程式概觀。
規格需求
需求 | 值 |
---|---|
標頭 | ntddser.h (包含 Ntddser.h) |