Windows 7의 C# 3.5 Windows 서비스 응용 프로그램에서 GetSystemInfo()를 사용하여 할당 세분화 크기를 얻으려고합니다. 그러나 SYSTEM_INFO 구조체는 항상 dwAllocationGranularity에 0을가집니다GetSystemInfo는 Win 서비스에서 Win7의 dwAllocationGranularity에 대해 항상 0을 반환합니다.
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에 통근 콜이있다 : (다른 필드는 데이터가 예상대로 채운)
SYSTEM_INFO 구조체는 간결함을 위해 생략 PROCESSOR_ARCHITECTURE 및 PROCESSOR_TYPE 열거으로 다음과 같다통화에서 반환
(210)[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
어떤 아이디어 이 정보 (64Kb JIC로 하드 코드하지 않으려 고합니다.) 감사.
upvoted "당신은 2047 프로세서가 없습니다." : D – hawk
그것은 엄청나게 효과적이고 효율적이었습니다. 하지만 여전히 올바른 대답 이었으므로 어떻게 할 수 있습니까? :) – dannygb
당신은 그것에 대해 웃어 보려고 할 수 있었고, 내려 놓는 대신 웃기는 것이 었습니다. 비추십시오. –