共用方式為


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

IOCTL_SERIAL_PURGE要求會取消指定的要求,並從指定的緩衝區刪除數據。 清除要求可用來取消所有讀取要求和寫入要求,以及從接收緩衝區和傳輸緩衝區刪除所有數據。

清除要求的完成不會指出清除要求取消的要求已完成。 客戶端必須在用戶端釋出或重複使用對應的 IRP 之前,先確認清除的要求已完成。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

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)