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_INIT 初始化 EvtCleanupCallbackEvtDestroyCallback 成员 NULL。 如果更改这些默认值以注册 EvtCleanupCallbackEvtDestroyCallback 回调函数,则每次 I/O 请求到达 SPB 控制器队列时都会调用此函数,该队列由 SpbCx 管理。 此类 I/O 请求会导致 EvtCleanupCallbackEvtDestroyCallback 函数调用,即使 SpbCx 从不向 SPB 控制器驱动程序显示请求(因为请求在到达队列后取消,但在传递给驱动程序之前)。

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

要求

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

另请参阅

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT