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
WDF_OBJECT_ATTRIBUTES_INIT 将 EvtCleanupCallback 和 EvtDestroyCallback 成员初始化为 NULL。 如果将这些默认值更改为注册 EvtCleanupCallback 或 EvtDestroyCallback 回调函数,则每次 I/O 请求到达 SPB 控制器队列时都会调用此函数,该队列由 SpbCx 管理。 此类 I/O 请求会导致调用 EvtCleanupCallback 或 EvtDestroyCallback 函数,即使 SpbCx 从未 (向 SPB 控制器驱动程序提出请求,因为请求在到达队列后、在将请求传递到驱动程序) 之前被取消。
SPB 控制器驱动程序必须先调用 SpbControllerSetRequestAttributes ,然后才能 提交 设备对象,也就是说,在从 EvtDriverDeviceAdd 回调返回或将 PDO 添加到控制器的子列表之前。 子列表表示附加到总线的设备。 有关详细信息,请参阅 枚举总线上的设备。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | spbcx.h |
Library | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |