Поделиться через


структура PEP_QUERY_SOC_SUBSYSTEM (pepfx.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.

Ядро инициализирует это значение до нуля и увеличивает его для каждого последующего уведомления о статических сведениях подсистемы. Значение 0 означает, что это первое такое уведомление для заданного Объекта PlatformIdleStateIndex. Это поле предназначено для предоставления контекста PEP между экземплярами этого уведомления. Это единственное поле, входное значение которого зависит от экземпляров этого уведомления для заданного объекта PlatformIdleStateIndex , и PEP может использовать это значение для поиска подсистемы.

PEP может игнорировать это значение.

[out] SubsystemHandle

Указатель контекста, которому PEP может при необходимости назначить значение. Он получит указатель на последующие уведомления для этой конкретной подсистемы. В последующих уведомлениях PEP использует PlatformIdleStateIndex вместе с SubsystemName и (или ) SubsystemHandle для поиска данных учета конкретной подсистемы.

По умолчанию значение, если этот элемент равен нулю. Это значение игнорируется операционной системой и используется только в уведомлениях.

PeP не требуется для заполнения этого элемента.

[in/out] ParentName

Буфер для хранения родительского имени соответствующей подсистемы. Каждая подсистема имеет родительский элемент, а подсистемы с одинаковым значением ParentName считаются одноуровневыми элементами. Иерархии одного уровня подсистемы являются необязательными. При отсутствии какой-либо иерархии все подсистемы являются подсистемами верхнего уровня и указывают общее значение для ParentName. Чтобы указать иерархию, подсистемы верхнего уровня указывают общее значение ParentName , а каждая подсистема не верхнего уровня указывает имя подсистемы своей родительской подсистемы в параметре ParentName.

Перед записью ядро будет:

  • Предварительное выделение 64 WCHAR для ParentName.Buffer[]
  • Ноль буфера
  • Задайте для параметра ParentName.MaximumLength размер буфера в байтах, и
  • Задать parentName.Length = 0
Перед выходом PEP должен скопировать строку, завершающуюся значением NULL, в ParentName.Buffer и обновить ParentName.Length с количеством байтов, которое имеет значение sizeof(WCHAR) в раз большее число скопированных символов ЮНИКОДа, не включая завершающий UNICODE_NULL.

PeP должен использовать выделенную память, на которую указывает адрес в ParentName.Buffer , чтобы указать родительское имя. Так как эта память предварительно выделена, ее размер нельзя изменить. PeP отвечает за усечение родительского имени, если это необходимо, чтобы оно не превышало длину, указанную в ParentName.MaximumLength (включая символ конца UNICODE_NULL ).

[in/out] SubsystemName

Буфер для хранения имени этой подсистемы. Каждая подсистема имеет имя подсистемы, а имя подсистемы должно быть уникальным среди всех подсистем в контексте заданного состояния простоя платформы. Имя подсистемы SubsystemName не может совпадать с parentName.

Перед записью ядро будет:

  • Предварительное выделение 64 WCHAR для имя_подсистемы.Buffer[]
  • Ноль буфера
  • Задайте для subsystemName.MaximumLength размер буфера в байтах, и
  • Задать имя_подсистемы.Длина = 0
Перед выходом PEP должен скопировать строку, завершающуюся значением NULL, в subsystemName.Buffer и обновить Имя_подсистемы.Длину с числом байтов, которое равно размеру (WCHAR) раз больше числа скопированных символов ЮНИКОДа, не включая завершающий UNICODE_NULL.

PeP должен использовать выделенную память, на которую указывает адрес в Имя_подсистемы.Буфер , чтобы указать имя подсистемы. Так как эта память предварительно выделена, ее размер нельзя изменить. PeP отвечает за усечение имени подсистемы, если это необходимо, чтобы оно не превышало длину, указанную в subsystemName.MaximumLength (включая символ конца UNICODE_NULL ).

[out] MetadataCount

Количество пар строк "ключ-значение метаданных", подсчитано данной подсистемой SoC.

Метаданные являются необязательными. PeP возвращает ноль, если он не сообщает метаданные для этой подсистемы SoC.

Flags

Этот элемент зарезервирован и должен иметь нулевое значение.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 10.
Верхняя часть pepfx.h (включая Pep_x.h)

См. также раздел

уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM