mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-21 12:43:57 +00:00
Get rid of explicit NtQuerySystemInformationEx syscall
This commit is contained in:
@@ -25,15 +25,6 @@
|
||||
#include "threading.hpp"
|
||||
|
||||
#ifdef OS_WINDOWS
|
||||
#pragma comment(lib, "ntdll")
|
||||
|
||||
extern "C"
|
||||
{
|
||||
NTSYSCALLAPI NTSTATUS NTAPI NtQuerySystemInformationEx(
|
||||
_In_ SYSTEM_INFORMATION_CLASS SystemInformationClass, _In_reads_bytes_(InputBufferLength) PVOID InputBuffer,
|
||||
_In_ ULONG InputBufferLength, _Out_writes_bytes_opt_(SystemInformationLength) PVOID SystemInformation,
|
||||
_In_ ULONG SystemInformationLength, _Out_opt_ PULONG ReturnLength);
|
||||
}
|
||||
#pragma warning(pop)
|
||||
#else
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
@@ -11,7 +11,12 @@
|
||||
|
||||
#else
|
||||
|
||||
#define DWORD std::uint32_t
|
||||
#define _Field_size_(...)
|
||||
#define _Struct_size_bytes_(...)
|
||||
|
||||
#define ANYSIZE_ARRAY 1
|
||||
|
||||
#define DWORD std::uint32_t
|
||||
using LONG = std::int32_t;
|
||||
using ULONG = DWORD;
|
||||
using DWORD64 = std::uint64_t;
|
||||
@@ -41,14 +46,14 @@ typedef union _LARGE_INTEGER
|
||||
} LARGE_INTEGER;
|
||||
|
||||
using BYTE = std::uint8_t;
|
||||
#define CHAR BYTE
|
||||
#define CHAR BYTE
|
||||
#endif
|
||||
|
||||
using WORD = std::uint16_t;
|
||||
|
||||
#define UCHAR unsigned char
|
||||
|
||||
#define BOOLEAN bool
|
||||
|
||||
using CSHORT = short;
|
||||
using USHORT = WORD;
|
||||
|
||||
|
||||
@@ -905,3 +905,92 @@ struct EMU_RTL_SRWLOCK
|
||||
{
|
||||
typename Traits::PVOID Ptr;
|
||||
};
|
||||
|
||||
#ifndef OS_WINDOWS
|
||||
typedef enum _PROCESSOR_CACHE_TYPE
|
||||
{
|
||||
CacheUnified,
|
||||
CacheInstruction,
|
||||
CacheData,
|
||||
CacheTrace
|
||||
} PROCESSOR_CACHE_TYPE;
|
||||
|
||||
typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP
|
||||
{
|
||||
RelationProcessorCore,
|
||||
RelationNumaNode,
|
||||
RelationCache,
|
||||
RelationProcessorPackage,
|
||||
RelationGroup,
|
||||
RelationProcessorDie,
|
||||
RelationNumaNodeEx,
|
||||
RelationProcessorModule,
|
||||
RelationAll = 0xffff
|
||||
} LOGICAL_PROCESSOR_RELATIONSHIP;
|
||||
#endif
|
||||
|
||||
struct EMU_NUMA_NODE_RELATIONSHIP64
|
||||
{
|
||||
DWORD NodeNumber;
|
||||
BYTE Reserved[18];
|
||||
WORD GroupCount;
|
||||
union
|
||||
{
|
||||
EMU_GROUP_AFFINITY64 GroupMask;
|
||||
_Field_size_(GroupCount) EMU_GROUP_AFFINITY64 GroupMasks[ANYSIZE_ARRAY];
|
||||
};
|
||||
};
|
||||
|
||||
struct EMU_CACHE_RELATIONSHIP64
|
||||
{
|
||||
BYTE Level;
|
||||
BYTE Associativity;
|
||||
WORD LineSize;
|
||||
DWORD CacheSize;
|
||||
PROCESSOR_CACHE_TYPE Type;
|
||||
BYTE Reserved[18];
|
||||
WORD GroupCount;
|
||||
union
|
||||
{
|
||||
EMU_GROUP_AFFINITY64 GroupMask;
|
||||
_Field_size_(GroupCount) EMU_GROUP_AFFINITY64 GroupMasks[ANYSIZE_ARRAY];
|
||||
};
|
||||
};
|
||||
|
||||
struct EMU_PROCESSOR_GROUP_INFO64
|
||||
{
|
||||
BYTE MaximumProcessorCount;
|
||||
BYTE ActiveProcessorCount;
|
||||
BYTE Reserved[38];
|
||||
EMULATOR_CAST(std::uint64_t, KAFFINITY) ActiveProcessorMask;
|
||||
};
|
||||
|
||||
struct EMU_GROUP_RELATIONSHIP64
|
||||
{
|
||||
WORD MaximumGroupCount;
|
||||
WORD ActiveGroupCount;
|
||||
BYTE Reserved[20];
|
||||
_Field_size_(ActiveGroupCount) EMU_PROCESSOR_GROUP_INFO64 GroupInfo[ANYSIZE_ARRAY];
|
||||
};
|
||||
|
||||
struct EMU_PROCESSOR_RELATIONSHIP64
|
||||
{
|
||||
BYTE Flags;
|
||||
BYTE EfficiencyClass;
|
||||
BYTE Reserved[20];
|
||||
WORD GroupCount;
|
||||
_Field_size_(GroupCount) EMU_GROUP_AFFINITY64 GroupMask[ANYSIZE_ARRAY];
|
||||
};
|
||||
|
||||
_Struct_size_bytes_(Size) struct EMU_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX64
|
||||
{
|
||||
LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
|
||||
DWORD Size;
|
||||
union
|
||||
{
|
||||
EMU_PROCESSOR_RELATIONSHIP64 Processor;
|
||||
EMU_NUMA_NODE_RELATIONSHIP64 NumaNode;
|
||||
EMU_CACHE_RELATIONSHIP64 Cache;
|
||||
EMU_GROUP_RELATIONSHIP64 Group;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -26,6 +26,7 @@ using NTSTATUS = std::uint32_t;
|
||||
|
||||
#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L)
|
||||
|
||||
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)
|
||||
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
|
||||
#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L)
|
||||
#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L)
|
||||
|
||||
Reference in New Issue
Block a user