PEP_QUERY_SOC_SUBSYSTEM 구조체(pep_x.h)

PEP_QUERY_SOC_SUBSYSTEM 구조는 PEP_DPM_QUERY_SOC_SUBSYSTEM 알림에서 칩(SoC) 하위 시스템의 특정 시스템에 대한 기본 정보를 수집하는 데 사용됩니다.

구문

typedef struct _PEP_QUERY_SOC_SUBSYSTEM {
  [in]     ULONG          PlatformIdleStateIndex;
  [in]     ULONG          SubsystemIndex;
  [out]    PVOID          SubsystemHandle;
  [in/out] UNICODE_STRING ParentName;
  [in/out] UNICODE_STRING SubsystemName;
  [out]    ULONG          MetadataCount;
           ULONG          Flags;
} PEP_QUERY_SOC_SUBSYSTEM, *PPEP_QUERY_SOC_SUBSYSTEM;

멤버

[in] PlatformIdleStateIndex

커널에서 쿼리하는 플랫폼 유휴 상태 인덱스입니다.

[in] SubsystemIndex

지정된 PlatformIdleStateIndex의 컨텍스트 내에서 OS가 각 하위 시스템에 할당한 고유 인덱스인 하위 시스템 인덱스입니다.

커널은 이 값을 0으로 초기화하고 이후의 각 하위 시스템 정적 정보 알림에 대해 증분합니다. 값이 0이면 지정된 PlatformIdleStateIndex에 대한 첫 번째 알림입니다. 이 필드는 이 알림의 인스턴스 간에 PEP 컨텍스트를 제공하기 위한 것입니다. 입력 값이 지정된 PlatformIdleStateIndex 에 대해 이 알림의 인스턴스에 따라 달라지는 유일한 필드이며 PEP는 이 값을 사용하여 하위 시스템을 조회할 수 있습니다.

PEP는 이 값을 무시할 수 있습니다.

[out] SubsystemHandle

PEP가 필요에 따라 값을 할당할 수 있는 컨텍스트 포인터입니다. 이 특정 하위 시스템에 대한 후속 알림에 대한 포인터를 받게 됩니다. 이후 알림에서 PEP는 SubsystemName 및/또는 SubsystemHandle과 함께 PlatformIdleStateIndex를 사용하여 특정 하위 시스템의 회계 데이터를 조회합니다.

이 멤버가 0인 경우 기본적으로 값입니다. 이 값은 OS에서 무시되며 알림에만 사용됩니다.

PEP는 이 멤버를 채울 필요가 없습니다.

[in/out] ParentName

해당 하위 시스템의 부모 이름을 보유하기 위한 버퍼입니다. 각 하위 시스템에는 부모 및 하위 시스템이 있으며 ParentName 값이 동일한 하위 시스템은 형제로 간주됩니다. 하위 시스템 형제 계층 구조는 선택 사항입니다. 계층 구조가 없는 경우 모든 하위 시스템은 최상위 하위 시스템이며 ParentName에 대한 공통 값을 지정합니다. 계층 구조를 나타내기 위해 최상위 하위 시스템은 공통 ParentName을 지정하고 각 비 최상위 하위 시스템은 ParentName에 대한 부모 하위 시스템의 SubsystemName을 지정합니다.

입력하기 전에 커널은 다음을 수행합니다.

  • ParentName.Buffer에 64개 WCHAR 미리 할당[]
  • 버퍼 0
  • ParentName.MaximumLength를 버퍼 크기(바이트)로 설정하고
  • ParentName.Length = 0 설정
종료하기 전에 PEP는 null로 종료된 문자열을 ParentName.Buffer에 복사하고 종료 UNICODE_NULL 포함하지 않고 복사한 유니코드 문자 수의 sizeof(WCHAR)인 바이트 수로 ParentName.Length를 업데이트해야 합니다.

PEP는 부모 이름을 제공하려면 ParentName.Buffer 의 주소에서 가리키는 할당된 메모리를 사용해야 합니다. 이 메모리는 미리 할당되므로 크기를 변경할 수 없습니다. PEP는 필요한 경우 부모 이름을 잘려 서 ParentName.MaximumLength 에 지정된 길이(종료 UNICODE_NULL 문자 포함)를 초과하지 않도록 합니다.

[in/out] SubsystemName

이 하위 시스템의 이름을 보유하기 위한 버퍼입니다. 모든 하위 시스템에는 하위 시스템 이름이 있고 SubsystemName 은 지정된 플랫폼 유휴 상태의 컨텍스트 내의 모든 하위 시스템 간에 고유해야 합니다. 하위 시스템의 SubsystemNameParentName과 같을 수 없습니다.

입력하기 전에 커널은 다음을 수행합니다.

  • SubsystemName.Buffer에 64개의 WCHAR 미리 할당[]
  • 버퍼 0
  • SubsystemName.MaximumLength를 버퍼 크기(바이트)로 설정하고
  • SubsystemName.Length = 0 설정
종료하기 전에 PEP는 null로 종료된 문자열을 SubsystemName.Buffer로 복사하고 SubsystemName.Length를 종료 UNICODE_NULL 포함하지 않고 복사한 유니코드 문자 수의 sizeof(WCHAR)의 횟수로 업데이트해야 합니다.

PEP는 하위 시스템 이름을 제공하려면 SubsystemName.Buffer 의 주소에서 가리키는 할당된 메모리를 사용해야 합니다. 이 메모리는 미리 할당되므로 크기를 변경할 수 없습니다. PEP는 필요한 경우 하위 시스템 이름을 잘려 서 SubsystemName.MaximumLength 에 지정된 길이(종료 UNICODE_NULL 문자 포함)를 초과하지 않도록 합니다.

[out] MetadataCount

이 SoC 하위 시스템에 의해 집계된 메타데이터 키/값 문자열 쌍의 수입니다.

메타데이터는 선택 사항입니다. PEP는 이 SoC 하위 시스템에 대한 메타데이터를 보고하지 않으면 0을 반환합니다.

Flags

이 멤버는 예약되어 있으며 0으로 설정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 부터 지원합니다.
머리글 pep_x.h(Pep_x.h 포함)

추가 정보

PEP_DPM_QUERY_SOC_SUBSYSTEM 알림