SerCx2PioTransmitCreate 函数 (sercx.h)

SerCx2PioTransmitCreate 方法创建 PIO 传输对象,该对象的串行框架扩展版本 2 (SerCx2) 用于执行 PIO 传输事务。

语法

NTSTATUS SerCx2PioTransmitCreate(
  [in]           WDFDEVICE                   Device,
  [in]           PSERCX2_PIO_TRANSMIT_CONFIG PioTransmitConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES      Attributes,
  [out]          SERCX2PIOTRANSMIT           *PioTransmit
);

参数

[in] Device

表示串行控制器的框架设备对象的 WDFDEVICE 句柄。 串行控制器驱动程序在其 EvtDriverDeviceAdd 回调函数中创建此对象。 有关详细信息,请参阅 SerCx2InitializeDevice

[in] PioTransmitConfig

指向 SERCX2_PIO_TRANSMIT_CONFIG 结构的指针。 在调用此方法之前,调用方必须调用 SERCX2_PIO_TRANSMIT_CONFIG_INIT 函数来初始化 结构。 此结构包含指向由串行控制器驱动程序实现的一组事件回调例程的指针。 SerCx2 调用这些函数来执行 PIO 传输事务。

[in, optional] Attributes

指向 WDF_OBJECT_ATTRIBUTES 结构的指针,该结构描述要分配给新 PIO 传输对象的属性。 在调用此方法之前,调用方必须调用 WDF_OBJECT_ATTRIBUTES_INIT 函数来初始化结构。 此参数是可选的,如果串行控制器驱动程序不需要向 对象分配属性,则可以指定为WDF_NO_OBJECT_ATTRIBUTES。 有关详细信息,请参阅“备注”。

[out] PioTransmit

指向此方法将 SERCX2PIOTRANSMIT 句柄写入新创建的 PIO 传输对象的位置的指针。 SerCx2 和串行控制器驱动程序在后续调用中使用此句柄来引用此对象。

返回值

如果调用成功,此方法将返回STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。

返回代码 说明
STATUS_INVALID_DEVICE_REQUEST
来自以前的 SerCx2PioTransmitCreate 调用的 PIO 传输对象已存在。
STATUS_INFO_LENGTH_MISMATCH
Config->Size 值不等于) (SERCX2_PIO_TRANSMIT_CONFIG大小
STATUS_INVALID_PARAMETER
实现的回调函数的指定组合无效。 驱动程序必须实现 EvtSerCx2PioTransmitWriteBufferEvtSerCx2PioTransmitEnableReadyNotificationEvtSerCx2PioTransmitCancelReadyNotification 函数。 驱动程序必须实现所有三个或全部三个或全部不实现 EvtSerCx2PioTransmitDrainFifoEvtSerCx2PioTransmitCancelDrainFifoEvtSerCx2PioTransmitPurgeFifo 函数。
STATUS_INSUFFICIENT_RESOURCES
资源不足,无法执行请求的操作。

注解

串行控制器驱动程序调用此方法来创建 PIO 传输对象。 SerCx2 使用此对象执行 PIO 传输事务,即使用编程 I/O (PIO) 将数据写入要传输的串行控制器的事务。

通常,串行控制器驱动程序从其 EvtDriverDeviceAdd 函数调用 SerCx2PioTransmitCreate。 驱动程序必须在成功调用 SerCx2InitializeDevice 方法后调用此方法。

作为选项,串行控制器驱动程序可以使用 Attributes 参数为 PIO 传输对象创建上下文,并提供指向 EvtCleanupCallbackEvtDestroyCallback 函数的指针,这些函数被调用以准备要删除的对象。 有关详细信息,请参阅 WDF_OBJECT_ATTRIBUTES

如果 Attributes 参数指向 WDF_OBJECT_ATTRIBUTES 结构,则调用方不得覆盖 WDF_OBJECT_ATTRIBUTES_INIT 初始化函数写入此结构的 ParentObjectExecutionLevelSynchronizationScope 成员的值。

有关创建 PIO 传输对象的详细信息,请参阅 SERCX2PIOTRANSMIT。 有关 PIO 传输操作的详细信息,请参阅 SerCx2 PIO-Transmit 事务

要求

要求
最低受支持的客户端 从Windows 8.1开始可用。
目标平台 通用
标头 sercx.h
IRQL <= DISPATCH_LEVEL

另请参阅

EvtCleanupCallback

EvtDestroyCallback

EvtDriverDeviceAdd

SERCX2PIOTRANSMIT

SERCX2_PIO_TRANSMIT_CONFIG

SERCX2_PIO_TRANSMIT_CONFIG_INIT

SerCx2InitializeDevice

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT