estrutura PEP_QUERY_SOC_SUBSYSTEM (pep_x.h)

A estrutura PEP_QUERY_SOC_SUBSYSTEM é usada pela notificação PEP_DPM_QUERY_SOC_SUBSYSTEM para coletar informações básicas sobre um sistema específico em um subsistema soc (chip).

Sintaxe

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;

Membros

[in] PlatformIdleStateIndex

O índice de estado ocioso da plataforma que está sendo consultado pelo kernel.

[in] SubsystemIndex

O índice do subsistema, que é um índice exclusivo atribuído pelo sistema operacional a cada subsistema dentro do contexto de um determinado PlatformIdleStateIndex.

O kernel inicializa esse valor como zero e o incrementa para cada notificação de informações estáticas do subsistema subsequente. Um valor de 0 significa que é a primeira notificação desse tipo para o PlatformIdleStateIndex fornecido. Esse campo destina-se a fornecer o contexto PEP entre instâncias dessa notificação. É o único campo cujo valor de entrada varia entre instâncias dessa notificação para um determinado PlatformIdleStateIndex e um PEP pode usar esse valor para pesquisar um subsistema.

O PEP pode ignorar esse valor.

[out] SubsystemHandle

Um ponteiro de contexto ao qual o PEP pode, opcionalmente, atribuir um valor. Ele receberá o ponteiro sobre as notificações subsequentes para esse subsistema específico. Em notificações subsequentes, um PEP usa PlatformIdleStateIndex junto com SubsystemName e/ou SubsystemHandle para pesquisar dados contábeis de um subsistema específico.

Por padrão, o valor se esse membro for zero. Esse valor é ignorado pelo sistema operacional e usado apenas em notificações.

O PEP não é necessário para preencher esse membro.

[in/out] ParentName

Um buffer para manter o nome pai do subsistema correspondente. Cada subsistema tem um pai e subsistemas com o mesmo valor para ParentName são considerados irmãos. As hierarquias de irmãos do subsistema são opcionais. Na ausência de qualquer hierarquia, todos os subsistemas são subsistemas de nível superior e especificam um valor comum para ParentName. Para indicar uma hierarquia, os subsistemas de nível superior especificam um ParentName comum, enquanto cada subsistema de nível não superior especifica o SubsystemName do subsistema pai para ParentName.

Antes da entrada, o kernel:

  • Pré-alocar 64 WCHARs para ParentName.Buffer[]
  • Zero o buffer
  • Defina ParentName.MaximumLength como o tamanho do buffer em bytes e
  • Definir ParentName.Length = 0
Antes de sair, o PEP deve copiar uma cadeia de caracteres terminada em nulo em ParentName.Buffer e atualizar ParentName.Length com uma contagem de bytes que seja sizeof(WCHAR) vezes o número de caracteres UNICODE copiados, sem incluir o UNICODE_NULL de terminação.

O PEP deve usar a memória alocada apontada pelo endereço em ParentName.Buffer para fornecer o nome pai. Como essa memória é pré-alocada, seu tamanho não pode ser alterado. O PEP é responsável por truncar o nome pai, se necessário, para que ele não exceda o comprimento especificado em ParentName.MaximumLength (incluindo o caractere de UNICODE_NULL de terminação).

[in/out] SubsystemName

Um buffer para manter o nome desse subsistema. Cada subsistema tem um nome de subsistema e SubsystemName deve ser exclusivo entre todos os subsistemas dentro do contexto de um determinado estado ocioso da plataforma. O SubsystemName de um subsistema não pode ser o mesmo que ParentName.

Antes da entrada, o kernel:

  • Pré-alocar 64 WCHARs para SubsystemName.Buffer[]
  • Zero o buffer
  • Defina SubsystemName.MaximumLength como o tamanho do buffer em bytes e
  • Definir SubsystemName.Length = 0
Antes de sair, o PEP deve copiar uma cadeia de caracteres terminada em nulo em SubsystemName.Buffer e atualizar SubsystemName.Length com uma contagem de bytes que seja sizeof(WCHAR) vezes o número de caracteres UNICODE copiados, sem incluir o UNICODE_NULL de terminação.

O PEP deve usar a memória alocada apontada pelo endereço em SubsystemName.Buffer para fornecer o nome do subsistema. Como essa memória é pré-alocada, seu tamanho não pode ser alterado. O PEP é responsável por truncar o nome do subsistema, se necessário, para que ele não exceda o comprimento especificado em SubsystemName.MaximumLength (incluindo o caractere de UNICODE_NULL de terminação).

[out] MetadataCount

O número de pares de cadeia de caracteres de chave/valor de metadados contados por esse subsistema SoC.

Os metadados são opcionais. O PEP retornará zero se não relatar nenhum metadado para esse subsistema SoC.

Flags

Esse membro é reservado e deve ser definido como zero.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte a partir do Windows 10.
Cabeçalho pep_x.h (inclua Pep_x.h)

Confira também

PEP_DPM_QUERY_SOC_SUBSYSTEM notificação