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 를 호출하여 호출 스레드의 그룹 번호 및 그룹 수준 선호도 마스크를 변경할 수 있습니다.

선호도가 가리키는 STOR_GROUP_AFFINITY 구조의 그룹 번호 및 선호 마스크는 스레드가 실행할 수 있는 프로세서 집합을 식별합니다. 성공하면 StorPortSetSystemGroupAffinityThread 는 이 집합의 프로세서에서 스레드가 실행되도록 예약합니다.

PreviousAffinity 매개 변수가 NULL이 아닌 경우 StorPortSetSystemGroupAffinityThreadPreviousAffinity가 가리키는 STOR_GROUP_AFFINITY 구조에서 호출 시작 시 적용된 이전 그룹 선호도에 대한 정보를 저장합니다. 이전 스레드 선호도를 복원하기 위해 호출자는 이 구조체에 대한 포인터를 StorPortRevertToUserGroupAffinityThread 루틴에 대한 입력 매개 변수로 제공할 수 있습니다.

미니포트가 이 함수를 호출하여 스레드의 그룹 선호도를 일시적으로 변경하는 경우 스레드가 종료되기 전에 StorPortRevertToUserGroupAffinityThread를 호출하여 스레드 선호도를 원래 값으로 되돌리기 합니다.

스레드는 언제든지 하나의 그룹 선호도에만 할당할 수 있습니다. 해당 그룹은 항상 스레드 프로세스의 선호도에 있습니다. 스레드는 이 루틴을 호출하여 할당된 그룹을 변경할 수 있습니다.

StorPortSetSystemGroupAffinityThread 는 다음이 true인 경우에만 그룹 번호 및 선호도 마스크를 선호도 에 지정된 값으로 변경합니다.

  • 그룹 번호가 유효합니다.
  • 선호도 마스크는 유효합니다(즉, 그룹의 논리 프로세서에 해당하는 마스크 비트만 설정됨).
  • 선호도 마스크에 지정된 프로세서 중 하나 이상이 활성화되어 있습니다.

이러한 조건이 충족되지 않으면 스레드의 그룹 번호 및 선호도 마스크는 변경되지 않은 상태로 유지됩니다. PreviousAffinity가 NULL이 아닌 경우 루틴은 PreviousAffinity의 그룹 번호와 선호도 마스크 모두에 0을 씁니다.

선호도의 새 선호도 마스크가 적용되기 전에 StorPortSetSystemGroupAffinityThread는 현재 활성화되지 않은 프로세서에 해당하는 선호도 마스크 비트를 제거(0으로 설정)합니다. 후속 StorPortSetSystemGroupAffinityThread 호출에서 루틴이 PreviousAffinity 에 쓰는 값에는 이러한 방식으로 수정된 선호도 마스크가 포함될 수 있습니다.

StorPortSetSystemGroupAffinityThread가 IRQL <= APC_LEVEL 호출에 성공하면 새 그룹 선호도가 즉시 적용됩니다. 호출이 반환되면 호출 스레드가 새 그룹 선호도에 지정된 프로세서에서 이미 실행되고 있습니다. StorPortSetSystemGroupAffinityThread가 IRQL = DISPATCH_LEVEL 호출되고 호출이 성공하면 호출자가 DISPATCH_LEVEL 아래 IRQL을 낮출 때까지 보류 중인 프로세서 변경이 지연됩니다.

요구 사항

요구 사항
지원되는 최소 서버 Windows Server 2022
머리글 storport.h
IRQL <= DISPATCH_LEVEL

추가 정보

**KeSetSystemGroupAffinityThread **

STOR_GROUP_AFFINITY

StorPortCreateSystemThread

StorPortGetCurrentIrql

StorPortRevertToUserGroupAffinityThread