ReactOS 0.4.15-dev-7788-g1ad9096
sysinfo.c File Reference
#include <k32.h>
#include <debug.h>
Include dependency graph for sysinfo.c:

Go to the source code of this file.

Macros

#define NDEBUG
 
#define PV_NT351   0x00030033
 

Functions

VOID WINAPI GetSystemInfoInternal (IN PSYSTEM_BASIC_INFORMATION BasicInfo, IN PSYSTEM_PROCESSOR_INFORMATION ProcInfo, OUT LPSYSTEM_INFO SystemInfo)
 
static UINT BaseQuerySystemFirmware (_In_ DWORD FirmwareTableProviderSignature, _In_ DWORD FirmwareTableID, _Out_writes_bytes_to_opt_(BufferSize, return) PVOID pFirmwareTableBuffer, _In_ DWORD BufferSize, _In_ SYSTEM_FIRMWARE_TABLE_ACTION Action)
 
SIZE_T WINAPI GetLargePageMinimum (VOID)
 
VOID WINAPI GetSystemInfo (IN LPSYSTEM_INFO lpSystemInfo)
 
BOOL WINAPI IsProcessorFeaturePresent (IN DWORD ProcessorFeature)
 
BOOL WINAPI GetSystemRegistryQuota (OUT PDWORD pdwQuotaAllowed, OUT PDWORD pdwQuotaUsed)
 
VOID WINAPI GetNativeSystemInfo (IN LPSYSTEM_INFO lpSystemInfo)
 
BOOL WINAPI GetLogicalProcessorInformation (OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, IN OUT PDWORD ReturnLength)
 
BOOL WINAPI GetNumaHighestNodeNumber (OUT PULONG HighestNodeNumber)
 
BOOL WINAPI GetNumaNodeProcessorMask (IN UCHAR Node, OUT PULONGLONG ProcessorMask)
 
BOOL WINAPI GetNumaProcessorNode (IN UCHAR Processor, OUT PUCHAR NodeNumber)
 
BOOL WINAPI GetNumaAvailableMemoryNode (IN UCHAR Node, OUT PULONGLONG AvailableBytes)
 
 _Success_ (return, 0)
 
BOOL WINAPI SetFirmwareEnvironmentVariableExW (_In_ LPCWSTR lpName, _In_ LPCWSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize, _In_ DWORD dwAttributes)
 
BOOL WINAPI SetFirmwareEnvironmentVariableExA (_In_ LPCSTR lpName, _In_ LPCSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize, _In_ DWORD dwAttributes)
 
BOOL WINAPI SetFirmwareEnvironmentVariableW (_In_ LPCWSTR lpName, _In_ LPCWSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize)
 
BOOL WINAPI SetFirmwareEnvironmentVariableA (_In_ LPCSTR lpName, _In_ LPCSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize)
 
EnumSystemFirmwareTables

@implemented

Obtains firmware table identifiers. https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-enumsystemfirmwaretables

Parameters
FirmwareTableProviderSignatureCan be either ACPI, FIRM, or RSMB.
pFirmwareTableBufferPointer to the output buffer, can be NULL.
BufferSizeSize of the output buffer.
Returns
Actual size of the data in case of success, 0 otherwise.
Remarks
Data would be written to buffer only if the specified size is larger or equal to the actual size, in the other case Last Error value would be set to ERROR_INSUFFICIENT_BUFFER. In case of incorrect provider signature, Last Error value would be set to ERROR_INVALID_FUNCTION.
UINT WINAPI EnumSystemFirmwareTables (_In_ DWORD FirmwareTableProviderSignature, _Out_writes_bytes_to_opt_(BufferSize, return) PVOID pFirmwareTableEnumBuffer, _In_ DWORD BufferSize)
 
GetSystemFirmwareTable

@implemented

Obtains the firmware table data. https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemfirmwaretable

Parameters
FirmwareTableProviderSignatureCan be either ACPI, FIRM, or RSMB.
FirmwareTableIDCorrect table identifier.
pFirmwareTableBufferPointer to the output buffer, can be NULL.
BufferSizeSize of the output buffer.
Returns
Actual size of the data in case of success, 0 otherwise.
Remarks
Data would be written to buffer only if the specified size is larger or equal to the actual size, in the other case Last Error value would be set to ERROR_INSUFFICIENT_BUFFER. In case of incorrect provider signature, Last Error value would be set to ERROR_INVALID_FUNCTION. Also Last Error value becomes ERROR_NOT_FOUND if incorrect table identifier was specified along with ACPI provider, and ERROR_INVALID_PARAMETER along with FIRM provider. The RSMB provider accepts any table identifier.
UINT WINAPI GetSystemFirmwareTable (_In_ DWORD FirmwareTableProviderSignature, _In_ DWORD FirmwareTableID, _Out_writes_bytes_to_opt_(BufferSize, return) PVOID pFirmwareTableBuffer, _In_ DWORD BufferSize)
 
BOOL WINAPI GetSystemFileCacheSize (OUT PSIZE_T lpMinimumFileCacheSize, OUT PSIZE_T lpMaximumFileCacheSize, OUT PDWORD lpFlags)
 
BOOL WINAPI SetSystemFileCacheSize (IN SIZE_T MinimumFileCacheSize, IN SIZE_T MaximumFileCacheSize, IN DWORD Flags)
 
LONG WINAPI GetCurrentPackageId (UINT32 *BufferLength, BYTE *Buffer)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 18 of file sysinfo.c.

◆ PV_NT351

#define PV_NT351   0x00030033

Definition at line 21 of file sysinfo.c.

Function Documentation

◆ _Success_()

_Success_ ( return  ,
 
)

Definition at line 417 of file sysinfo.c.

426{
428 UNICODE_STRING VariableName, Namespace;
429 GUID VendorGuid;
431
432 /* Check input parameters and build NT strings */
433 if (!lpName || !lpGuid)
434 {
436 return 0;
437 }
438 RtlInitUnicodeString(&VariableName, lpName);
439 RtlInitUnicodeString(&Namespace, lpGuid);
440 Status = RtlGUIDFromString(&Namespace, &VendorGuid);
441 if (!NT_SUCCESS(Status))
442 {
444 return 0;
445 }
446
447 /* Query firmware system environment variable value */
448 Length = nSize;
450 &VendorGuid,
451 pBuffer,
452 &Length,
453 pdwAttribubutes);
454 if (!NT_SUCCESS(Status))
455 {
457 return 0;
458 }
459
460 return Length;
461}
LONG NTSTATUS
Definition: precomp.h:26
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
Status
Definition: gdiplustypes.h:25
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
NTSTATUS NTAPI NtQuerySystemEnvironmentValueEx(_In_ PUNICODE_STRING VariableName, _In_ LPGUID VendorGuid, _Out_opt_ PVOID Value, _Inout_ PULONG ReturnLength, _Out_opt_ PULONG Attributes)
Definition: sysinfo.c:567
PVOID pBuffer
DWORD BaseSetLastNTError(IN NTSTATUS Status)
Definition: reactos.cpp:166
uint32_t ULONG
Definition: typedefs.h:59
_In_ LPCSTR lpName
Definition: winbase.h:2789
*nSize LPSTR _Inout_ LPDWORD nSize
Definition: winbase.h:2084

◆ BaseQuerySystemFirmware()

static UINT BaseQuerySystemFirmware ( _In_ DWORD  FirmwareTableProviderSignature,
_In_ DWORD  FirmwareTableID,
_Out_writes_bytes_to_opt_(BufferSize, return) PVOID  pFirmwareTableBuffer,
_In_ DWORD  BufferSize,
_In_ SYSTEM_FIRMWARE_TABLE_ACTION  Action 
)
static

Definition at line 81 of file sysinfo.c.

87{
88 SYSTEM_FIRMWARE_TABLE_INFORMATION* SysFirmwareInfo;
92
93 SysFirmwareInfo = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, TotalSize);
94 if (!SysFirmwareInfo)
95 {
97 return 0;
98 }
100 {
101 SysFirmwareInfo->ProviderSignature = FirmwareTableProviderSignature;
102 SysFirmwareInfo->TableID = FirmwareTableID;
103 SysFirmwareInfo->Action = Action;
104 SysFirmwareInfo->TableBufferLength = BufferSize;
105
107
109 Result = SysFirmwareInfo->TableBufferLength;
110
111 if (NT_SUCCESS(Status) && pFirmwareTableBuffer)
112 {
113 RtlCopyMemory(pFirmwareTableBuffer, SysFirmwareInfo->TableBuffer, SysFirmwareInfo->TableBufferLength);
114 }
115 }
117 {
118 RtlFreeHeap(RtlGetProcessHeap(), 0, SysFirmwareInfo);
119 }
120 _SEH2_END;
121
123 return Result;
124}
ULONG ReturnedSize
_In_ ULONG FirmwareTableID
Definition: aux_klib.h:91
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:590
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:608
#define BufferSize
Definition: mmc.h:75
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define _SEH2_FINALLY
Definition: filesup.c:21
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
@ SystemFirmwareTableInformation
Definition: extypes.h:293
struct _SYSTEM_FIRMWARE_TABLE_INFORMATION SYSTEM_FIRMWARE_TABLE_INFORMATION
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
SYSTEM_FIRMWARE_TABLE_ACTION Action
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by EnumSystemFirmwareTables(), and GetSystemFirmwareTable().

◆ EnumSystemFirmwareTables()

UINT WINAPI EnumSystemFirmwareTables ( _In_ DWORD  FirmwareTableProviderSignature,
_Out_writes_bytes_to_opt_(BufferSize, return) PVOID  pFirmwareTableEnumBuffer,
_In_ DWORD  BufferSize 
)

Definition at line 688 of file sysinfo.c.

692{
693 return BaseQuerySystemFirmware(FirmwareTableProviderSignature,
694 0,
695 pFirmwareTableEnumBuffer,
698}
static UINT BaseQuerySystemFirmware(_In_ DWORD FirmwareTableProviderSignature, _In_ DWORD FirmwareTableID, _Out_writes_bytes_to_opt_(BufferSize, return) PVOID pFirmwareTableBuffer, _In_ DWORD BufferSize, _In_ SYSTEM_FIRMWARE_TABLE_ACTION Action)
Definition: sysinfo.c:81
@ SystemFirmwareTable_Enumerate

◆ GetCurrentPackageId()

LONG WINAPI GetCurrentPackageId ( UINT32 BufferLength,
BYTE Buffer 
)

Definition at line 780 of file sysinfo.c.

782{
783 STUB;
785}
#define STUB
Definition: kernel32.h:27
#define APPMODEL_ERROR_NO_PACKAGE
Definition: winerror.h:2337

◆ GetLargePageMinimum()

SIZE_T WINAPI GetLargePageMinimum ( VOID  )

Definition at line 133 of file sysinfo.c.

134{
135 return SharedUserData->LargePageMinimum;
136}
#define SharedUserData

◆ GetLogicalProcessorInformation()

BOOL WINAPI GetLogicalProcessorInformation ( OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION  Buffer,
IN OUT PDWORD  ReturnLength 
)

Definition at line 233 of file sysinfo.c.

235{
237
238 if (!ReturnLength)
239 {
241 return FALSE;
242 }
243
245 Buffer,
248
249 /* Normalize the error to what Win32 expects */
251 if (!NT_SUCCESS(Status))
252 {
254 return FALSE;
255 }
256
257 return TRUE;
258}
Definition: bufpool.h:45
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:43
@ SystemLogicalProcessorInformation
Definition: extypes.h:290
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133

◆ GetNativeSystemInfo()

VOID WINAPI GetNativeSystemInfo ( IN LPSYSTEM_INFO  lpSystemInfo)

Definition at line 207 of file sysinfo.c.

208{
209 SYSTEM_BASIC_INFORMATION BasicInfo;
212
213 Status = RtlGetNativeSystemInformation(SystemBasicInformation,
214 &BasicInfo,
215 sizeof(BasicInfo),
216 0);
217 if (!NT_SUCCESS(Status)) return;
218
219 Status = RtlGetNativeSystemInformation(SystemProcessorInformation,
220 &ProcInfo,
221 sizeof(ProcInfo),
222 0);
223 if (!NT_SUCCESS(Status)) return;
224
225 GetSystemInfoInternal(&BasicInfo, &ProcInfo, lpSystemInfo);
226}
VOID WINAPI GetSystemInfoInternal(IN PSYSTEM_BASIC_INFORMATION BasicInfo, IN PSYSTEM_PROCESSOR_INFORMATION ProcInfo, OUT LPSYSTEM_INFO SystemInfo)
Definition: sysinfo.c:27
@ SystemProcessorInformation
Definition: ntddk_ex.h:12
@ SystemBasicInformation
Definition: ntddk_ex.h:11

Referenced by enumerate_gac(), get_osarchitecture(), GetSystemCPU(), set_installer_properties(), test_appsearch_reglocator(), and test_installprops().

◆ GetNumaAvailableMemoryNode()

BOOL WINAPI GetNumaAvailableMemoryNode ( IN UCHAR  Node,
OUT PULONGLONG  AvailableBytes 
)

Definition at line 387 of file sysinfo.c.

389{
391 SYSTEM_NUMA_INFORMATION NumaInformation;
393
394 /* Query NUMA information */
396 &NumaInformation,
397 sizeof(NumaInformation),
398 &Length);
399 if (!NT_SUCCESS(Status))
400 {
402 return FALSE;
403 }
404
405 /* Validate input node number */
406 if (Node > NumaInformation.HighestNodeNumber)
407 {
409 return FALSE;
410 }
411
412 /* Return available memory for that node */
413 *AvailableBytes = NumaInformation.AvailableMemory[Node];
414 return TRUE;
415}
union node Node
Definition: types.h:1255
@ SystemNumaAvailableMemory
Definition: extypes.h:277
ULONGLONG AvailableMemory[MAXIMUM_NUMA_NODES]
Definition: extypes.h:1409
Definition: dlist.c:348

◆ GetNumaHighestNodeNumber()

BOOL WINAPI GetNumaHighestNodeNumber ( OUT PULONG  HighestNodeNumber)

Definition at line 265 of file sysinfo.c.

266{
269 ULONG PartialInfo[2]; // First two members of SYSTEM_NUMA_INFORMATION
270
271 /* Query partial NUMA info */
273 PartialInfo,
274 sizeof(PartialInfo),
275 &Length);
276 if (!NT_SUCCESS(Status))
277 {
279 return FALSE;
280 }
281
282 if (Length < sizeof(ULONG))
283 {
285 return FALSE;
286 }
287
288 /* First member of the struct is the highest node number */
289 *HighestNodeNumber = PartialInfo[0];
290 return TRUE;
291}
@ SystemNumaProcessorMap
Definition: extypes.h:272

Referenced by GetEnvVarOrSpecial().

◆ GetNumaNodeProcessorMask()

BOOL WINAPI GetNumaNodeProcessorMask ( IN UCHAR  Node,
OUT PULONGLONG  ProcessorMask 
)

Definition at line 298 of file sysinfo.c.

300{
302 SYSTEM_NUMA_INFORMATION NumaInformation;
304
305 /* Query NUMA information */
307 &NumaInformation,
308 sizeof(NumaInformation),
309 &Length);
310 if (!NT_SUCCESS(Status))
311 {
313 return FALSE;
314 }
315
316 /* Validate input node number */
317 if (Node > NumaInformation.HighestNodeNumber)
318 {
320 return FALSE;
321 }
322
323 /* Return mask for that node */
324 *ProcessorMask = NumaInformation.ActiveProcessorsAffinityMask[Node];
325 return TRUE;
326}
ULONGLONG ActiveProcessorsAffinityMask[MAXIMUM_NUMA_NODES]
Definition: extypes.h:1408

◆ GetNumaProcessorNode()

BOOL WINAPI GetNumaProcessorNode ( IN UCHAR  Processor,
OUT PUCHAR  NodeNumber 
)

Definition at line 333 of file sysinfo.c.

335{
337 SYSTEM_NUMA_INFORMATION NumaInformation;
339 ULONG Node;
340 ULONGLONG Proc;
341
342 /* Can't handle processor number >= 32 */
344 {
345 *NodeNumber = -1;
347 return FALSE;
348 }
349
350 /* Query NUMA information */
352 &NumaInformation,
353 sizeof(NumaInformation),
354 &Length);
355 if (!NT_SUCCESS(Status))
356 {
357 *NodeNumber = -1;
359 return FALSE;
360 }
361
362 /* Find ourselves */
363 Node = 0;
364 Proc = 1ULL << Processor;
365 while ((Proc & NumaInformation.ActiveProcessorsAffinityMask[Node]) == 0ULL)
366 {
367 ++Node;
368 /* Out of options */
369 if (Node > NumaInformation.HighestNodeNumber)
370 {
371 *NodeNumber = -1;
373 return FALSE;
374 }
375 }
376
377 /* Return found node */
378 *NodeNumber = Node;
379 return TRUE;
380}
#define MAXIMUM_PROCESSORS
Definition: rwlock.h:5
#define ULL(a, b)
Definition: format_msg.c:27
uint64_t ULONGLONG
Definition: typedefs.h:67
_Out_ PUSHORT NodeNumber
Definition: iofuncs.h:2574
_In_ UCHAR Processor
Definition: kefuncs.h:670

◆ GetSystemFileCacheSize()

BOOL WINAPI GetSystemFileCacheSize ( OUT PSIZE_T  lpMinimumFileCacheSize,
OUT PSIZE_T  lpMaximumFileCacheSize,
OUT PDWORD  lpFlags 
)

Definition at line 754 of file sysinfo.c.

757{
758 STUB;
759 return FALSE;
760}

◆ GetSystemFirmwareTable()

UINT WINAPI GetSystemFirmwareTable ( _In_ DWORD  FirmwareTableProviderSignature,
_In_ DWORD  FirmwareTableID,
_Out_writes_bytes_to_opt_(BufferSize, return) PVOID  pFirmwareTableBuffer,
_In_ DWORD  BufferSize 
)

Definition at line 736 of file sysinfo.c.

741{
742 return BaseQuerySystemFirmware(FirmwareTableProviderSignature,
744 pFirmwareTableBuffer,
747}
@ SystemFirmwareTable_Get

Referenced by fill_baseboard(), fill_bios(), fill_compsysproduct(), and fill_systemenclosure().

◆ GetSystemInfo()

VOID WINAPI GetSystemInfo ( IN LPSYSTEM_INFO  lpSystemInfo)

Definition at line 143 of file sysinfo.c.

144{
145 SYSTEM_BASIC_INFORMATION BasicInfo;
148
150 &BasicInfo,
151 sizeof(BasicInfo),
152 0);
153 if (!NT_SUCCESS(Status)) return;
154
156 &ProcInfo,
157 sizeof(ProcInfo),
158 0);
159 if (!NT_SUCCESS(Status)) return;
160
161 GetSystemInfoInternal(&BasicInfo, &ProcInfo, lpSystemInfo);
162}

Referenced by _LocalGetPrinterLevel0(), AllSysInfo(), CheckX64System(), DllMain(), dump_system_info(), EmptyWorkingSet(), ExpandInstallerPath(), get_estimated_size(), GetSystemCPU(), InitializeSystemPage(), NewCtxInit(), CListNode::operator new(), PrintSystemInfo(), ProcessorDlgProc(), ProcessPageShowContextMenu(), CKsAllocator::SetProperties(), SetupDiGetActualSectionToInstallExW(), START_TEST(), StartInstaller(), StatisticsMain(), StdMemAllocator_Alloc(), TaskManager_OnTabWndSelChange(), test_affinity(), test_CompareStringW(), test_CreateFileMapping_protection(), test_CreateThread_stack(), test_dpa(), test_GetNumaProcessorNode(), test_HeapCreate(), test_mapping(), test_NtGetCurrentProcessorNumber(), test_NtQuerySection(), test_query_logicalproc(), test_query_processor_power_info(), test_SystemInfo(), test_thread_processor(), test_VirtualAlloc_protection(), test_VirtualProtect(), test_WICCreateBitmapFromSectionEx(), test_WriteFileGather(), FxInterruptThreadpool::UpdateThreadPoolThreadLimits(), VirtualTest(), wave_in_test_device(), wave_out_test_device(), and WICCreateBitmapFromSectionEx().

◆ GetSystemInfoInternal()

VOID WINAPI GetSystemInfoInternal ( IN PSYSTEM_BASIC_INFORMATION  BasicInfo,
IN PSYSTEM_PROCESSOR_INFORMATION  ProcInfo,
OUT LPSYSTEM_INFO  SystemInfo 
)

Definition at line 27 of file sysinfo.c.

30{
31 RtlZeroMemory(SystemInfo, sizeof (SYSTEM_INFO));
32 SystemInfo->wProcessorArchitecture = ProcInfo->ProcessorArchitecture;
33 SystemInfo->wReserved = 0;
34 SystemInfo->dwPageSize = BasicInfo->PageSize;
35 SystemInfo->lpMinimumApplicationAddress = (PVOID)BasicInfo->MinimumUserModeAddress;
36 SystemInfo->lpMaximumApplicationAddress = (PVOID)BasicInfo->MaximumUserModeAddress;
37 SystemInfo->dwActiveProcessorMask = BasicInfo->ActiveProcessorsAffinityMask;
38 SystemInfo->dwNumberOfProcessors = BasicInfo->NumberOfProcessors;
39 SystemInfo->wProcessorLevel = ProcInfo->ProcessorLevel;
40 SystemInfo->wProcessorRevision = ProcInfo->ProcessorRevision;
41 SystemInfo->dwAllocationGranularity = BasicInfo->AllocationGranularity;
42
43 switch (ProcInfo->ProcessorArchitecture)
44 {
46 switch (ProcInfo->ProcessorLevel)
47 {
48 case 3:
49 SystemInfo->dwProcessorType = PROCESSOR_INTEL_386;
50 break;
51 case 4:
52 SystemInfo->dwProcessorType = PROCESSOR_INTEL_486;
53 break;
54 default:
55 SystemInfo->dwProcessorType = PROCESSOR_INTEL_PENTIUM;
56 }
57 break;
58
60 SystemInfo->dwProcessorType = PROCESSOR_AMD_X8664;
61 break;
62
64 SystemInfo->dwProcessorType = PROCESSOR_INTEL_IA64;
65 break;
66
67 default:
68 SystemInfo->dwProcessorType = 0;
69 break;
70 }
71
73 {
74 SystemInfo->wProcessorLevel = 0;
75 SystemInfo->wProcessorRevision = 0;
76 }
77}
DWORD WINAPI GetProcessVersion(IN DWORD ProcessId)
Definition: proc.c:1760
#define PV_NT351
Definition: sysinfo.c:21
#define PROCESSOR_ARCHITECTURE_IA64
Definition: ketypes.h:111
#define PROCESSOR_ARCHITECTURE_AMD64
Definition: ketypes.h:114
#define PROCESSOR_ARCHITECTURE_INTEL
Definition: ketypes.h:105
void * PVOID
Definition: typedefs.h:50
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define PROCESSOR_INTEL_PENTIUM
Definition: winnt_old.h:425
#define PROCESSOR_INTEL_386
Definition: winnt_old.h:423
#define PROCESSOR_AMD_X8664
Definition: winnt_old.h:434
#define PROCESSOR_INTEL_IA64
Definition: winnt_old.h:428
#define PROCESSOR_INTEL_486
Definition: winnt_old.h:424

Referenced by GetNativeSystemInfo(), and GetSystemInfo().

◆ GetSystemRegistryQuota()

BOOL WINAPI GetSystemRegistryQuota ( OUT PDWORD  pdwQuotaAllowed,
OUT PDWORD  pdwQuotaUsed 
)

Definition at line 180 of file sysinfo.c.

182{
186
188 &QuotaInfo,
189 sizeof(QuotaInfo),
190 &BytesWritten);
191 if (NT_SUCCESS(Status))
192 {
193 if (pdwQuotaAllowed) *pdwQuotaAllowed = QuotaInfo.RegistryQuotaAllowed;
194 if (pdwQuotaUsed) *pdwQuotaUsed = QuotaInfo.RegistryQuotaUsed;
195 return TRUE;
196 }
197
199 return FALSE;
200}
@ SystemRegistryQuotaInformation
Definition: ntddk_ex.h:48
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
Definition: wdfiotarget.h:960

◆ IsProcessorFeaturePresent()

BOOL WINAPI IsProcessorFeaturePresent ( IN DWORD  ProcessorFeature)

Definition at line 169 of file sysinfo.c.

170{
171 if (ProcessorFeature >= PROCESSOR_FEATURE_MAX) return FALSE;
172 return ((BOOL)SharedUserData->ProcessorFeatures[ProcessorFeature]);
173}
unsigned int BOOL
Definition: ntddk_ex.h:94
#define PROCESSOR_FEATURE_MAX

Referenced by _fpreset(), dump_system_info(), and ProcessorDlgProc().

◆ SetFirmwareEnvironmentVariableA()

BOOL WINAPI SetFirmwareEnvironmentVariableA ( _In_ LPCSTR  lpName,
_In_ LPCSTR  lpGuid,
_In_reads_bytes_opt_(nSize) PVOID  pValue,
_In_ DWORD  nSize 
)

Definition at line 646 of file sysinfo.c.

651{
653 lpGuid,
654 pValue,
655 nSize,
657}
BOOL WINAPI SetFirmwareEnvironmentVariableExA(_In_ LPCSTR lpName, _In_ LPCSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize, _In_ DWORD dwAttributes)
Definition: sysinfo.c:582
PWCHAR pValue
#define VARIABLE_ATTRIBUTE_NON_VOLATILE
Definition: extypes.h:1568

Referenced by START_TEST().

◆ SetFirmwareEnvironmentVariableExA()

BOOL WINAPI SetFirmwareEnvironmentVariableExA ( _In_ LPCSTR  lpName,
_In_ LPCSTR  lpGuid,
_In_reads_bytes_opt_(nSize) PVOID  pValue,
_In_ DWORD  nSize,
_In_ DWORD  dwAttributes 
)

Definition at line 582 of file sysinfo.c.

588{
590 BOOL Result;
591 UNICODE_STRING VariableName, Namespace;
592 ANSI_STRING AnsiVariableName, AnsiNamespace;
593
594 /* Check input parameters and build NT strings */
595 if (!lpName || !lpGuid)
596 {
598 return FALSE;
599 }
600 RtlInitString(&AnsiVariableName, lpName);
601 Status = RtlAnsiStringToUnicodeString(&VariableName, &AnsiVariableName, TRUE);
602 if (!NT_SUCCESS(Status))
603 {
605 return FALSE;
606 }
607 RtlInitString(&AnsiNamespace, lpGuid);
608 Status = RtlAnsiStringToUnicodeString(&Namespace, &AnsiNamespace, TRUE);
609 if (!NT_SUCCESS(Status))
610 {
611 RtlFreeUnicodeString(&VariableName);
613 return FALSE;
614 }
615
616 /* Call unicode version interface */
618 Namespace.Buffer,
619 pValue,
620 nSize,
622
623 /* Cleanup and return */
624 RtlFreeUnicodeString(&Namespace);
625 RtlFreeUnicodeString(&VariableName);
626 return Result;
627}
BOOL WINAPI SetFirmwareEnvironmentVariableExW(_In_ LPCWSTR lpName, _In_ LPCWSTR lpGuid, _In_reads_bytes_opt_(nSize) PVOID pValue, _In_ DWORD nSize, _In_ DWORD dwAttributes)
Definition: sysinfo.c:539
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
DWORD dwAttributes
Definition: vdmdbg.h:34

Referenced by SetFirmwareEnvironmentVariableA().

◆ SetFirmwareEnvironmentVariableExW()

BOOL WINAPI SetFirmwareEnvironmentVariableExW ( _In_ LPCWSTR  lpName,
_In_ LPCWSTR  lpGuid,
_In_reads_bytes_opt_(nSize) PVOID  pValue,
_In_ DWORD  nSize,
_In_ DWORD  dwAttributes 
)

Definition at line 539 of file sysinfo.c.

545{
547 UNICODE_STRING VariableName, Namespace;
548 GUID VendorGuid;
549
550 /* Check input parameters and build NT strings */
551 if (!lpName || !lpGuid)
552 {
554 return FALSE;
555 }
556 RtlInitUnicodeString(&VariableName, lpName);
557 RtlInitUnicodeString(&Namespace, lpGuid);
558 Status = RtlGUIDFromString(&Namespace, &VendorGuid);
559 if (!NT_SUCCESS(Status))
560 {
562 return FALSE;
563 }
564
565 /* Set firmware system environment variable value */
567 &VendorGuid,
568 pValue,
569 nSize,
571 if (!NT_SUCCESS(Status))
572 {
574 return FALSE;
575 }
576
577 return TRUE;
578}
NTSTATUS NTAPI NtSetSystemEnvironmentValueEx(_In_ PUNICODE_STRING VariableName, _In_ LPGUID VendorGuid, _In_reads_bytes_opt_(ValueLength) PVOID Value, _In_ ULONG ValueLength, _In_ ULONG Attributes)
Definition: sysinfo.c:580

Referenced by SetFirmwareEnvironmentVariableExA(), and SetFirmwareEnvironmentVariableW().

◆ SetFirmwareEnvironmentVariableW()

BOOL WINAPI SetFirmwareEnvironmentVariableW ( _In_ LPCWSTR  lpName,
_In_ LPCWSTR  lpGuid,
_In_reads_bytes_opt_(nSize) PVOID  pValue,
_In_ DWORD  nSize 
)

Definition at line 631 of file sysinfo.c.

636{
638 lpGuid,
639 pValue,
640 nSize,
642}

Referenced by START_TEST().

◆ SetSystemFileCacheSize()

BOOL WINAPI SetSystemFileCacheSize ( IN SIZE_T  MinimumFileCacheSize,
IN SIZE_T  MaximumFileCacheSize,
IN DWORD  Flags 
)

Definition at line 767 of file sysinfo.c.

770{
771 STUB;
772 return FALSE;
773}