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

另请参阅

**KeSetSystemGroupAffinityThread **

STOR_GROUP_AFFINITY

StorPortCreateSystemThread

StorPortGetCurrentIrql

StorPortRevertToUserGroupAffinityThread