SpbControllerSetRequestAttributes 函数 (spbcx.h)

SpbControllerSetRequestAttributes 方法设置对象属性,这些对象属性将用于 SPB 框架扩展 (SpbCx) 传递给 SPB 控制器驱动程序的所有 SPBREQUEST 对象。

语法

void SpbControllerSetRequestAttributes(
  [in] WDFDEVICE              FxDevice,
  [in] PWDF_OBJECT_ATTRIBUTES RequestAttributes
);

参数

[in] FxDevice

表示 SPB 控制器的设备对象的 WDFDEVICE 句柄。

[in] RequestAttributes

指向调用方分配 的WDF_OBJECT_ATTRIBUTES 结构的指针,该结构包含 SPB 控制器的 SPBREQUEST 对象的属性。

返回值

备注

在设备初始化期间,SPB 控制器驱动程序可以调用此方法来设置 SPBREQUEST 对象的默认属性。 此后,SpbCx 将这些属性分配给它传递的任何 I/O 请求, (或将) 转发到总线上的目标设备。

RequestAttributes 指向 WDF_OBJECT_ATTRIBUTES 结构。 调用方之前必须调用 WDF_OBJECT_ATTRIBUTES_INIT 函数来初始化此结构。 在此调用之后,但在调用 SpbControllerSetRequestAttributes 之前,调用方可以更改此结构的以下成员的值:

  • EvtCleanupCallback
  • EvtDestroyCallback
  • ContextSizeOverride
  • ContextTypeInfo
SpbControllerSetRequestAttributes 将使用这些值作为 SPBREQUEST 对象的默认属性。 但是,驱动程序无法更改 ExecutionLevelSynchronizationScopeParentObject 成员中包含的默认属性值。 这些成员必须与 WDF_OBJECT_ATTRIBUTES_INIT 函数将它们初始化到的值保持不变。

WDF_OBJECT_ATTRIBUTES_INITEvtCleanupCallbackEvtDestroyCallback 成员初始化为 NULL。 如果将这些默认值更改为注册 EvtCleanupCallbackEvtDestroyCallback 回调函数,则每次 I/O 请求到达 SPB 控制器队列时都会调用此函数,该队列由 SpbCx 管理。 此类 I/O 请求会导致调用 EvtCleanupCallbackEvtDestroyCallback 函数,即使 SpbCx 从未 (向 SPB 控制器驱动程序提出请求,因为请求在到达队列后、在将请求传递到驱动程序) 之前被取消。

SPB 控制器驱动程序必须先调用 SpbControllerSetRequestAttributes ,然后才能 提交 设备对象,也就是说,在从 EvtDriverDeviceAdd 回调返回或将 PDO 添加到控制器的子列表之前。 子列表表示附加到总线的设备。 有关详细信息,请参阅 枚举总线上的设备

要求

要求
最低受支持的客户端 从Windows 8开始可用。
目标平台 通用
标头 spbcx.h
Library Spbcxstubs.lib
IRQL PASSIVE_LEVEL

另请参阅

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT