Функция GetLogicalProcessorInformationEx (sysinfoapi.h)
Извлекает сведения о связях логических процессоров и связанного оборудования.
Синтаксис
BOOL GetLogicalProcessorInformationEx(
[in] LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
[out, optional] PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer,
[in, out] PDWORD ReturnedLength
);
Параметры
[in] RelationshipType
Тип извлекаемой связи. Этот параметр может быть одним из следующих LOGICAL_PROCESSOR_RELATIONSHIP значений .
[out, optional] Buffer
Указатель на буфер, который получает последовательность структур SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX переменной величины. Если функция завершается сбоем, содержимое этого буфера не определено.
[in, out] ReturnedLength
На входных данных указывает длину буфера, на который указывает buffer, в байтах. Если буфер достаточно велик, чтобы содержать все данные, эта функция выполняется успешно, и для параметра ReturnedLength задается количество возвращаемых байтов. Если буфер недостаточно велик, чтобы вместить все данные, функция завершается сбоем, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а returnedLength имеет длину буфера, необходимую для хранения всех данных. Если функция завершается ошибкой, отличной от ERROR_INSUFFICIENT_BUFFER, значение ReturnedLength не определено.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение равно TRUE, и по крайней мере одна SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX структура записывается в выходной буфер.
Если функция завершается сбоем, возвращается значение FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если 32-разрядный процесс, выполняющийся в WOW64, вызывает эту функцию в системе с более чем 64 процессорами, некоторые маски сходства процессоров, возвращаемые функцией, могут быть неверными. Это связано с тем, что DWORD высокого порядка 64-разрядной структуры KAFFINITY , представляющей все 64 процессора, "сложено" в 32-разрядную структуру KAFFINITY в буфере вызывающего объекта. В результате маски сходства для процессоров от 32 до 63 неправильно представлены как дубликаты масок для процессоров от 0 до 31. Кроме того, маски сходства для процессоров с 32 по 63 неправильно представлены как дубликаты масок для процессоров от 0 до 31. Кроме того, сумма всех значений ActiveProcessorCount и MaximumProcessorCount для каждой группы, указанных в PROCESSOR_GROUP_INFO структурах, может исключить некоторые активные логические процессоры.
При вызове этой функции с типом связи RelationProcessorCore она возвращает PROCESSOR_RELATIONSHIP структуру для каждого активного ядра процессора в каждой группе процессоров в системе. Это связано с тем, что неаффинизованный 32-разрядный поток может выполняться на любом логическом процессоре в заданной группе, включая процессоры от 32 до 63. 32-разрядный вызывающий объект может использовать общее количество PROCESSOR_RELATIONSHIP структур для определения фактического числа активных ядер процессора в системе. Однако сходство 32-разрядного потока нельзя явно задать для логического процессора от 32 до 63 любой группы процессоров.
Чтобы скомпилировать приложение, использующее эту функцию, задайте _WIN32_WINNT >= 0x0601. Дополнительные сведения см. в разделе Использование заголовков Windows.
Поведение, начиная с Windows Server 2022 (21H2, сборка 20348)
Поведение этой и других функций NUMA было изменено для улучшения поддержки систем с узлами, содержащими более 64 процессоров. Дополнительные сведения об этом изменении, включая сведения о включении старого поведения этого API, см. в разделе Поддержка NUMA.
Запросы для RelationNumaNode будут возвращать NUMA_NODE_RELATIONSHIP структуры, содержащие только сходство узла в его основной группе. Значение GroupCount будет равно 1, а размер структуры является фиксированным.
Запросы RelationNumaNodeEx или RelationAll будут возвращать NUMA_NODE_RELATIONSHIP структуры, содержащие массив сходств для узла во всех группах. GroupCount сообщает о количестве сходств, а размер структуры является переменным.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | sysinfoapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |