Я пытаюсь получить размер гранулярности выделения с помощью GetSystemInfo () из приложения-службы Windows C # 3.5 в Windows 7. Однако структура SYSTEM_INFO всегда имеет 0 в dwAllocationGranularity, когда она возвращается из вызова (другие поля заполнены даннымикак и ожидалось)
Структура SYSTEM_INFO выглядит следующим образом, перечисления PROCESSOR_ARCHITECTURE и PROCESSOR_TYPE опущены для краткости:
public struct SYSTEM_INFO
{
public PROCESSOR_ARCHITECTURE wProcessorArchitecture;
public ushort wReserved;
public uint dwPageSize;
public int lpMinimumApplicationAddress;
public int lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public PROCESSOR_TYPE dwProcessorType;
public uint dwAllocationGranularity;
public ushort wProcessorLevel;
public ushort wProcessorRevision;
}
Внешний вызов GetSystemInfo таков:
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref SYSTEM_INFO SystemInfo);
Код вызова выглядит следующим образом:
SYSTEM_INFO sysInfo = new SYSTEM_INFO();
GetSystemInfo(ref sysInfo);
Структура вывода SYS_INFO после выполнения кода:
dwActiveProcessorMask 4294901759
dwAllocationGranularity 0
dwNumberOfProcessors 2047
dwPageSize 4096
dwProcessorType 15
lpMaximumApplicationAddress 0
lpMinimumApplicationAddress 65536
wProcessorArchitecture 9
wProcessorLevel 4
wProcessorRevision 0
wReserved 0
Любые идеи, которые мне не хватает, или предложения о других способах получения этогоИнформация (я не хочу, чтобы жесткий код для JIC 64 КБ, он изменен в какой-то момент)?Спасибо.