Função GetLogicalProcessorInformationEx (sysinfoapi.h)
Recupera informações sobre as relações de processadores lógicos e hardware relacionado.
Sintaxe
BOOL GetLogicalProcessorInformationEx(
[in] LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
[out, optional] PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer,
[in, out] PDWORD ReturnedLength
);
Parâmetros
[in] RelationshipType
O tipo de relação a ser recuperada. Esse parâmetro pode ser um dos seguintes valores de LOGICAL_PROCESSOR_RELATIONSHIP .
[out, optional] Buffer
Um ponteiro para um buffer que recebe uma sequência de estruturas de SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX de tamanho variável. Se a função falhar, o conteúdo desse buffer será indefinido.
[in, out] ReturnedLength
Na entrada, especifica o comprimento do buffer apontado por Buffer, em bytes. Se o buffer for grande o suficiente para conter todos os dados, essa função terá êxito e ReturnedLength será definido como o número de bytes retornados. Se o buffer não for grande o suficiente para conter todos os dados, a função falhará, GetLastError retornará ERROR_INSUFFICIENT_BUFFER e ReturnedLength será definido como o comprimento do buffer necessário para conter todos os dados. Se a função falhar com um erro diferente de ERROR_INSUFFICIENT_BUFFER, o valor de ReturnedLength será indefinido.
Retornar valor
Se a função for bem-sucedida, o valor retornado será TRUE e pelo menos uma estrutura SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX será gravada no buffer de saída.
Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Se um processo de 32 bits em execução em WOW64 chamar essa função em um sistema com mais de 64 processadores, algumas das máscaras de afinidade do processador retornadas pela função poderão estar incorretas. Isso ocorre porque o DWORD de alta ordem da estrutura KAFFINITY de 64 bits que representa todos os 64 processadores é "dobrado" em uma estrutura KAFFINITY de 32 bits no buffer do chamador. Como resultado, as máscaras de afinidade para processadores de 32 a 63 são representadas incorretamente como duplicatas das máscaras para processadores de 0 a 31. Além disso, as máscaras de afinidade para processadores de 32 a 63 são representadas incorretamente como duplicatas das máscaras para processadores de 0 a 31. Além disso, a soma de todos os valores ActiveProcessorCount e MaximumProcessorCount por grupo relatados em estruturas PROCESSOR_GROUP_INFO pode excluir alguns processadores lógicos ativos.
Quando essa função é chamada com um tipo de relação RelationProcessorCore, ela retorna uma estrutura PROCESSOR_RELATIONSHIP para cada núcleo de processador ativo em cada grupo de processadores no sistema. Isso ocorre por design, porque um thread de 32 bits não habilitado pode ser executado em qualquer processador lógico em um determinado grupo, incluindo processadores de 32 a 63. Um chamador de 32 bits pode usar a contagem total de estruturas de PROCESSOR_RELATIONSHIP para determinar o número real de núcleos de processador ativos no sistema. No entanto, a afinidade de um thread de 32 bits não pode ser definida explicitamente como processador lógico de 32 a 63 de qualquer grupo de processadores.
Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT >= 0x0601. Para obter mais informações, consulte Usando os cabeçalhos do Windows.
Comportamento começando com o Windows Server 2022 (21H2, build 20348)
O comportamento dessa e de outras funções NUMA foi modificado para dar melhor suporte a sistemas com nós contendo mais de 64 processadores. Para obter mais informações sobre essa alteração, incluindo informações sobre como habilitar o comportamento antigo dessa API, consulte Suporte a NUMA.
As solicitações para RelationNumaNode retornarão NUMA_NODE_RELATIONSHIP estruturas que contêm apenas a afinidade do nó dentro do grupo primário. O valor GroupCount será 1 e o tamanho da estrutura será fixo.
As solicitações para RelationNumaNodeEx ou RelationAll retornarão NUMA_NODE_RELATIONSHIP estruturas que contêm uma matriz de afinidades para o nó em todos os grupos. O GroupCount relata o número de afinidades e o tamanho da estrutura é variável.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | sysinfoapi.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |