EVT_SERCX_TRANSMIT回调函数 (sercx.h)
EvtSerCxTransmit 事件回调函数准备串行控制器设备(UART)执行写入(传输)操作。
语法
EVT_SERCX_TRANSMIT EvtSercxTransmit;
NTSTATUS EvtSercxTransmit(
[in] WDFDEVICE Device,
[in] size_t Length
)
{...}
参数
[in] Device
表示串行控制器的框架设备对象的 WDFDEVICE 句柄。
[in] Length
要传输的字节数。 控制器驱动程序可以使用此值作为提示来决定是否使用 PIO 或 DMA 来执行数据传输。
返回值
如果调用成功,EvtSerCxTransmit 函数将返回STATUS_SUCCESS。 否则,它将返回适当的错误状态代码。
言论
串行框架扩展 (SerCx) 调用此函数来配置串行控制器硬件以传输数据。 如有必要,EvtSerCxTransmit 函数可以启用中断。
EvtSerCxTransmit 函数不一定将输出数据写入传输 FIFO 缓冲区。 根据串行控制器硬件或传输类型,此函数可能会设置 DMA 操作来写入数据,或者可能会计划传输/接收 DPC 函数来写入数据。 串行控制器驱动程序实现此 DPC 函数,将数据传输到串行控制器,并从控制器接收数据。 在 DPC 期间,DPC 函数确定数据是否可供传输,如果是,则使用 PIO 将数据传输到串行控制器中的传输 FIFO。
如果串行控制器中的传输 FIFO 已满或几乎已满,但启用了 FIFO 的低水标记中断,则 EvtSerCxTransmit 函数即可返回。 稍后,控制器驱动程序的 ISR 可以计划传输/接收 DPC 函数运行,并且此函数可以将更多输出数据传输到传输 FIFO。
若要注册 EvtSerCxTransmit 回调函数,控制器驱动程序在 EvtDriverDeviceAdd 回调期间调用 SerCxInitialize 方法。
例子
此回调的函数类型在 Sercx.h 中声明,如下所示。
typedef NTSTATUS
EVT_SERCX_TRANSMIT(
__in WDFDEVICE Device
);
若要定义名为 MyEvtSerCxTransmit
的 EvtSerCxTransmit 回调函数,必须先提供 静态驱动程序验证程序(SDV)和其他验证工具所需的函数声明,如下所示。
EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;
然后,按如下所示实现回调函数。
NTSTATUS
MyEvtSerCxTransmit(
__in WDFDEVICE Device
)
{ ... }
有关函数声明的 SDV 要求的详细信息,请参阅 使用 KMDF 驱动程序的函数角色类型声明函数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始可用。 |
目标平台 | 桌面 |
标头 | sercx.h |
IRQL | 在 IRQL <调用 = DISPATCH_LEVEL |