Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function print(...)
- Debug.ShowWindow();
- for i, v in pairs{...}do
- Debug.Print(tostring(v).."\t");
- end
- Debug.Print("\r\n");
- return true;
- end
- -- wProcessorArchitecture
- PROCESSOR_ARCHITECTURE_AMD64 = 9 -- x64 (AMD or Intel)
- PROCESSOR_ARCHITECTURE_IA64 = 6 -- Intel Itanium-based
- PROCESSOR_ARCHITECTURE_INTEL = 0 -- x86
- PROCESSOR_ARCHITECTURE_UNKNOWN = 0xffff
- PROCS = {
- [PROCESSOR_ARCHITECTURE_AMD64] = "x64 (AMD / Intel)";
- [PROCESSOR_ARCHITECTURE_IA64] = "Intel Itanium-based";
- [PROCESSOR_ARCHITECTURE_INTEL] = "x86";
- [PROCESSOR_ARCHITECTURE_UNKNOWN] = "Unknown";
- };
- SYSTEM_INFO = MemoryEx.DefineStruct{
- UNION{
- UDWORD ("dwOemId");
- UWORD ("wProcessorArchitecture", 2); -- [0] is the field you want. [1] is reserved.
- };
- UDWORD ("dwPageSize");
- UINT ("lpMinimumApplicationAddress");
- UINT ("lpMaximumApplicationAddress");
- UDWORD ("dwActiveProcessorMask");
- UDWORD ("dwNumberOfProcessors");
- UDWORD ("dwProcessorType");
- UDWORD ("dwAllocationGranularity");
- UWORD ("wProcessorLevel");
- UWORD ("wProcessorRevision");
- };
- function GetSystemInfo(lpStructure)
- local proc = "GetSystemInfo";
- if(System.Is64BitOS())then
- proc = "GetNativeSystemInfo";
- end
- DLL.CallFunction("kernel32.dll", proc, tostring(lpStructure), DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
- end
- hBuffer = MemoryEx.AllocateEx(MemoryEx.StructSize(SYSTEM_INFO));
- if(hBuffer)then
- local hSystemInfo = hBuffer:AssignStruct(SYSTEM_INFO);
- if(hSystemInfo)then
- GetSystemInfo(hBuffer:GetPointer());
- print("Proc Architecture", PROCS[hSystemInfo.wProcessorArchitecture[0]]);
- print("Proc Level", hSystemInfo.wProcessorLevel);
- print("Proc Revision", hSystemInfo.wProcessorRevision);
- print("CPU's / Cores", hSystemInfo.dwNumberOfProcessors);
- print("Page-size\t", tostring(hSystemInfo.dwPageSize).." bytes");
- hSystemInfo:Close();
- end
- hBuffer:Free();
- end
Advertisement
Add Comment
Please, Sign In to add comment