StorPortSetSystemGroupAffinityThread 函数 (storport.h)
StorPortSetSystemGroupAffinityThread 更改调用线程的组号和地缘掩码。
语法
ULONG StorPortSetSystemGroupAffinityThread(
[in] PVOID HwDeviceExtension,
[in/optional] PVOID ThreadContext,
[in] PSTOR_GROUP_AFFINITY Affinity,
[out/optional] PSTOR_GROUP_AFFINITY PreviousAffinity
);
参数
[in] HwDeviceExtension
指向微型端口的硬件设备扩展的指针。
[in/optional] ThreadContext
指向之前调用 StorPortCreateSystemThread 时收到的线程上下文的指针。
[in] Affinity
指向调用方分配 的STOR_GROUP_AFFINITY 结构的指针,该结构指定调用线程的新组号和组相对相关性掩码。
[out/optional] PreviousAffinity
指向 STOR_GROUP_AFFINITY 结构的指针,在该结构中,此例程在调用之前写入调用线程的组号和关联掩码。 此参数是可选的,可以为 NULL。
返回值
StorPortSetSystemGroupAffinityThread 返回以下值之一:
返回代码 | 说明 |
---|---|
STOR_STATUS_SUCCESS | 已成功设置指定的组相关性。 |
STOR_STATUS_INVALID_PARAMETER | 提供的一个或多个参数无效。 |
STOR_STATUS_UNSUCCESSFUL | 由于其他内部系统原因而返回。 |
注解
微型端口可以调用 StorPortSetSystemGroupAffinityThread 来更改调用线程的组号和组级相关性掩码。
Affinity 指向 的STOR_GROUP_AFFINITY 结构中的组号和 关联 掩码标识线程可以在其上运行的一组处理器。 如果成功, StorPortSetSystemGroupAffinityThread 将线程计划在此集中的处理器上运行。
如果 PreviousAffinity 参数为非 NULL,StorPortSetSystemGroupAffinityThread 会将有关上一个组相关性的信息(在调用开始时生效)保存在 PreviousAffinity 指向的STOR_GROUP_AFFINITY结构中。 若要还原以前的线程相关性,调用方可以将指向此结构的指针作为 StorPortRevertToUserGroupAffinityThread 例程的输入参数提供。
如果微型端口调用此函数来临时更改线程的组相关性,则应调用 StorPortRevertToUserGroupAffinityThread,以在线程退出之前将线程相关性还原到其原始值。
一个线程在任何时候只能分配给一个组相关性。 该组始终与线程的进程关联。 线程可以通过调用此例程来更改分配给它的组。
StorPortSetSystemGroupAffinityThread 仅当以下条件成立时,才会将组号和相关性掩码更改为 Affinity 中指定的值:
- 组号有效。
- 关联掩码是有效的 (也就是说,仅设置与组中逻辑处理器对应的掩码位) 。
- 关联掩码中指定的至少一个处理器处于活动状态。
如果不满足上述任何条件,则线程的组号和相关性掩码保持不变。 如果 PreviousAffinity 为非 NULL,则例程会将零写入 PreviousAffinity 中的组号和关联掩码。
在 Affinity 中的新关联掩码生效之前, StorPortSetSystemGroupAffinityThread 会将 (集删除为零,) 与当前未处于活动状态的处理器相对应的任何关联掩码位。 在后续 StorPortSetSystemGroupAffinityThread 调用中,例程写入 PreviousAffinity 的值可能包含以这种方式修改的关联掩码。
如果在 IRQL <= APC_LEVEL调用 StorPortSetSystemGroupAffinityThread 并且调用成功,则新的组相关性将立即生效。 当调用返回时,调用线程已在新组关联中指定的处理器上运行。 如果在 IRQL = DISPATCH_LEVEL调用 StorPortSetSystemGroupAffinityThread 并且调用成功,则挂起的处理器更改将推迟到调用方将 IRQL 降低到以下DISPATCH_LEVEL。
要求
要求 | 值 |
---|---|
最低受支持的服务器 | Windows Server 2022 |
标头 | storport.h |
IRQL | <= DISPATCH_LEVEL |