mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:22:58 +00:00
[KERNEL32]: Cleanup GetSystemInfo and friends, fix some bugs, mainly removing support for unsupported CPUs/architectures, and adding support for PROCESSOR_ARCHITECTURE_AMD64. Did some refactoring to support WoW64 in the future as well.
svn path=/trunk/; revision=53057
This commit is contained in:
parent
17d451a6ae
commit
6da0958817
1 changed files with 164 additions and 224 deletions
|
@ -1,25 +1,81 @@
|
||||||
/* $Id$
|
/*
|
||||||
*
|
* PROJECT: ReactOS Win32 Base API
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* LICENSE: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* FILE: dll/win32/kernel32/client/sysinfo.c
|
||||||
* FILE: dll/win32/kernel32/misc/sysinfo.c
|
* PURPOSE: System Information Functions
|
||||||
* PURPOSE: SystemInfo functions
|
* PROGRAMMERS: Emanuele Aliberti
|
||||||
* PROGRAMMER: Emanuele Aliberti
|
|
||||||
* Christoph von Wittich
|
* Christoph von Wittich
|
||||||
* Thomas Weidenmueller
|
* Thomas Weidenmueller
|
||||||
* Gunnar Andre Dalsnes
|
* Gunnar Andre Dalsnes
|
||||||
* UPDATE HISTORY:
|
|
||||||
* 2000-04-26 created
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *******************************************************************/
|
||||||
|
|
||||||
#include <k32.h>
|
#include <k32.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
|
||||||
#define PV_NT351 0x00030033
|
#define PV_NT351 0x00030033
|
||||||
|
|
||||||
|
/* PRIVATE FUNCTIONS **********************************************************/
|
||||||
|
|
||||||
|
VOID
|
||||||
|
WINAPI
|
||||||
|
GetSystemInfoInternal(IN PSYSTEM_BASIC_INFORMATION BasicInfo,
|
||||||
|
IN PSYSTEM_PROCESSOR_INFORMATION ProcInfo,
|
||||||
|
OUT LPSYSTEM_INFO SystemInfo)
|
||||||
|
{
|
||||||
|
RtlZeroMemory(SystemInfo, sizeof (SYSTEM_INFO));
|
||||||
|
SystemInfo->wProcessorArchitecture = ProcInfo->ProcessorArchitecture;
|
||||||
|
SystemInfo->wReserved = 0;
|
||||||
|
SystemInfo->dwPageSize = BasicInfo->PageSize;
|
||||||
|
SystemInfo->lpMinimumApplicationAddress = (PVOID)BasicInfo->MinimumUserModeAddress;
|
||||||
|
SystemInfo->lpMaximumApplicationAddress = (PVOID)BasicInfo->MaximumUserModeAddress;
|
||||||
|
SystemInfo->dwActiveProcessorMask = BasicInfo->ActiveProcessorsAffinityMask;
|
||||||
|
SystemInfo->dwNumberOfProcessors = BasicInfo->NumberOfProcessors;
|
||||||
|
SystemInfo->wProcessorLevel = ProcInfo->ProcessorLevel;
|
||||||
|
SystemInfo->wProcessorRevision = ProcInfo->ProcessorRevision;
|
||||||
|
SystemInfo->dwAllocationGranularity = BasicInfo->AllocationGranularity;
|
||||||
|
|
||||||
|
switch (ProcInfo->ProcessorArchitecture)
|
||||||
|
{
|
||||||
|
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||||
|
switch (ProcInfo->ProcessorLevel)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
SystemInfo->dwProcessorType = PROCESSOR_INTEL_386;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
SystemInfo->dwProcessorType = PROCESSOR_INTEL_486;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SystemInfo->dwProcessorType = PROCESSOR_INTEL_PENTIUM;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROCESSOR_ARCHITECTURE_AMD64:
|
||||||
|
SystemInfo->dwProcessorType = PROCESSOR_AMD_X8664;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROCESSOR_ARCHITECTURE_IA64:
|
||||||
|
SystemInfo->dwProcessorType = PROCESSOR_INTEL_IA64;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
SystemInfo->dwProcessorType = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PV_NT351 > GetProcessVersion(0))
|
||||||
|
{
|
||||||
|
SystemInfo->wProcessorLevel = 0;
|
||||||
|
SystemInfo->wProcessorRevision = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS ***********************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -27,189 +83,66 @@ SIZE_T
|
||||||
WINAPI
|
WINAPI
|
||||||
GetLargePageMinimum(VOID)
|
GetLargePageMinimum(VOID)
|
||||||
{
|
{
|
||||||
return SharedUserData->LargePageMinimum;
|
return SharedUserData->LargePageMinimum;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
WINAPI
|
|
||||||
GetSystemInfo (
|
|
||||||
LPSYSTEM_INFO Si
|
|
||||||
)
|
|
||||||
{
|
|
||||||
SYSTEM_BASIC_INFORMATION Sbi;
|
|
||||||
SYSTEM_PROCESSOR_INFORMATION Spi;
|
|
||||||
DWORD ProcessVersion;
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
RtlZeroMemory (Si, sizeof (SYSTEM_INFO));
|
|
||||||
Status = NtQuerySystemInformation (
|
|
||||||
SystemBasicInformation, /* 0 */
|
|
||||||
& Sbi,
|
|
||||||
sizeof Sbi, /* 44 */
|
|
||||||
0
|
|
||||||
);
|
|
||||||
if (STATUS_SUCCESS != Status)
|
|
||||||
{
|
|
||||||
BaseSetLastNTError (Status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Status = NtQuerySystemInformation (
|
|
||||||
SystemProcessorInformation, /* 1 */
|
|
||||||
& Spi,
|
|
||||||
sizeof Spi, /* 12 */
|
|
||||||
0
|
|
||||||
);
|
|
||||||
if (STATUS_SUCCESS != Status)
|
|
||||||
{
|
|
||||||
BaseSetLastNTError (Status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* PROCESSOR_ARCHITECTURE_INTEL 0
|
|
||||||
* PROCESSOR_ARCHITECTURE_MIPS 1
|
|
||||||
* PROCESSOR_ARCHITECTURE_ALPHA 2
|
|
||||||
* PROCESSOR_ARCHITECTURE_PPC 3
|
|
||||||
* PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
|
|
||||||
*/
|
|
||||||
Si->wProcessorArchitecture = Spi.ProcessorArchitecture;
|
|
||||||
/* For future use: always zero */
|
|
||||||
Si->wReserved = 0;
|
|
||||||
Si->dwPageSize = Sbi.PageSize;
|
|
||||||
Si->lpMinimumApplicationAddress = (PVOID)Sbi.MinimumUserModeAddress;
|
|
||||||
Si->lpMaximumApplicationAddress = (PVOID)Sbi.MaximumUserModeAddress;
|
|
||||||
Si->dwActiveProcessorMask = Sbi.ActiveProcessorsAffinityMask;
|
|
||||||
Si->dwNumberOfProcessors = Sbi.NumberOfProcessors;
|
|
||||||
/*
|
|
||||||
* Compatibility (no longer relevant):
|
|
||||||
* PROCESSOR_INTEL_386 386
|
|
||||||
* PROCESSOR_INTEL_486 486
|
|
||||||
* PROCESSOR_INTEL_PENTIUM 586
|
|
||||||
* PROCESSOR_MIPS_R4000 4000
|
|
||||||
* PROCESSOR_ALPHA_21064 21064
|
|
||||||
*/
|
|
||||||
switch (Spi.ProcessorArchitecture)
|
|
||||||
{
|
|
||||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
|
||||||
switch (Spi.ProcessorLevel)
|
|
||||||
{
|
|
||||||
case 3:
|
|
||||||
Si->dwProcessorType = PROCESSOR_INTEL_386;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
Si->dwProcessorType = PROCESSOR_INTEL_486;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
Si->dwProcessorType = PROCESSOR_INTEL_PENTIUM;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* FIXME: P2, P3, P4...? */
|
|
||||||
Si->dwProcessorType = PROCESSOR_INTEL_PENTIUM;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROCESSOR_ARCHITECTURE_MIPS:
|
|
||||||
Si->dwProcessorType = PROCESSOR_MIPS_R4000;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROCESSOR_ARCHITECTURE_ALPHA:
|
|
||||||
Si->dwProcessorType = PROCESSOR_ALPHA_21064;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROCESSOR_ARCHITECTURE_IA64:
|
|
||||||
Si->dwProcessorType = PROCESSOR_INTEL_IA64;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROCESSOR_ARCHITECTURE_PPC:
|
|
||||||
switch (Spi.ProcessorLevel)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_601;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_603;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_604;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
/* PPC 603+ */
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_603;
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
/* PPC 604+ */
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_604;
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
Si->dwProcessorType = PROCESSOR_PPC_620;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Si->dwProcessorType = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
/* Once hardcoded to 64kb */
|
|
||||||
Si->dwAllocationGranularity = Sbi.AllocationGranularity;
|
|
||||||
/* */
|
|
||||||
Si->wProcessorLevel = Spi.ProcessorLevel;
|
|
||||||
Si->wProcessorRevision = Spi.ProcessorRevision;
|
|
||||||
/*
|
|
||||||
* Get the version of Windows on which
|
|
||||||
* the process expects to run.
|
|
||||||
*/
|
|
||||||
ProcessVersion = GetProcessVersion (0); /* current process */
|
|
||||||
/* In NT 3.1 and 3.5 these fields were always zero. */
|
|
||||||
if (PV_NT351 > ProcessVersion)
|
|
||||||
{
|
|
||||||
Si->wProcessorLevel = 0;
|
|
||||||
Si->wProcessorRevision = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
VOID
|
||||||
IsProcessorFeaturePresent(DWORD ProcessorFeature)
|
WINAPI
|
||||||
|
GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
|
||||||
{
|
{
|
||||||
if (ProcessorFeature >= PROCESSOR_FEATURE_MAX)
|
SYSTEM_BASIC_INFORMATION BasicInfo;
|
||||||
return(FALSE);
|
SYSTEM_PROCESSOR_INFORMATION ProcInfo;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
return((BOOL)SharedUserData->ProcessorFeatures[ProcessorFeature]);
|
Status = NtQuerySystemInformation(SystemBasicInformation,
|
||||||
|
&BasicInfo,
|
||||||
|
sizeof(BasicInfo),
|
||||||
|
0);
|
||||||
|
if (!NT_SUCCESS(Status)) return;
|
||||||
|
|
||||||
|
Status = NtQuerySystemInformation(SystemProcessorInformation,
|
||||||
|
&ProcInfo,
|
||||||
|
sizeof(ProcInfo),
|
||||||
|
0);
|
||||||
|
if (!NT_SUCCESS(Status)) return;
|
||||||
|
|
||||||
|
GetSystemInfoInternal(&BasicInfo, &ProcInfo, lpSystemInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetSystemRegistryQuota(PDWORD pdwQuotaAllowed,
|
IsProcessorFeaturePresent(IN DWORD ProcessorFeature)
|
||||||
PDWORD pdwQuotaUsed)
|
|
||||||
{
|
{
|
||||||
SYSTEM_REGISTRY_QUOTA_INFORMATION srqi;
|
if (ProcessorFeature >= PROCESSOR_FEATURE_MAX) return FALSE;
|
||||||
|
return ((BOOL)SharedUserData->ProcessorFeatures[ProcessorFeature]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
GetSystemRegistryQuota(OUT PDWORD pdwQuotaAllowed,
|
||||||
|
OUT PDWORD pdwQuotaUsed)
|
||||||
|
{
|
||||||
|
SYSTEM_REGISTRY_QUOTA_INFORMATION QuotaInfo;
|
||||||
ULONG BytesWritten;
|
ULONG BytesWritten;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
Status = NtQuerySystemInformation(SystemRegistryQuotaInformation,
|
Status = NtQuerySystemInformation(SystemRegistryQuotaInformation,
|
||||||
&srqi,
|
&QuotaInfo,
|
||||||
sizeof(srqi),
|
sizeof(QuotaInfo),
|
||||||
&BytesWritten);
|
&BytesWritten);
|
||||||
if(NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
if(pdwQuotaAllowed != NULL)
|
if (pdwQuotaAllowed) *pdwQuotaAllowed = QuotaInfo.RegistryQuotaAllowed;
|
||||||
{
|
if (pdwQuotaUsed) *pdwQuotaUsed = QuotaInfo.RegistryQuotaUsed;
|
||||||
*pdwQuotaAllowed = srqi.RegistryQuotaAllowed;
|
|
||||||
}
|
|
||||||
if(pdwQuotaUsed != NULL)
|
|
||||||
{
|
|
||||||
*pdwQuotaUsed = srqi.RegistryQuotaUsed;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,15 +155,27 @@ GetSystemRegistryQuota(PDWORD pdwQuotaAllowed,
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
WINAPI
|
WINAPI
|
||||||
GetNativeSystemInfo(
|
GetNativeSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
|
||||||
LPSYSTEM_INFO lpSystemInfo
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
//FIXME: GetNativeSystemInfo should return always the real Hardware Processorarchitecture
|
SYSTEM_BASIC_INFORMATION BasicInfo;
|
||||||
// in case a Program is running in 32bit Mode on AMD64
|
SYSTEM_PROCESSOR_INFORMATION ProcInfo;
|
||||||
// GetSystemInfo should return PROCESSOR_ARCHITECTURE_INTEL and
|
NTSTATUS Status;
|
||||||
// GetNativeSystemInfo should return PROCESSOR_ARCHITECTURE_AMD64
|
|
||||||
GetSystemInfo(lpSystemInfo);
|
/* FIXME: Should be SystemNativeBasicInformation */
|
||||||
|
Status = NtQuerySystemInformation(SystemBasicInformation,
|
||||||
|
&BasicInfo,
|
||||||
|
sizeof(BasicInfo),
|
||||||
|
0);
|
||||||
|
if (!NT_SUCCESS(Status)) return;
|
||||||
|
|
||||||
|
/* FIXME: Should be SystemNativeProcessorInformation */
|
||||||
|
Status = NtQuerySystemInformation(SystemProcessorInformation,
|
||||||
|
&ProcInfo,
|
||||||
|
sizeof(ProcInfo),
|
||||||
|
0);
|
||||||
|
if (!NT_SUCCESS(Status)) return;
|
||||||
|
|
||||||
|
GetSystemInfoInternal(&BasicInfo, &ProcInfo, lpSystemInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -254,15 +199,11 @@ GetLogicalProcessorInformation(OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer,
|
||||||
*ReturnLength,
|
*ReturnLength,
|
||||||
ReturnLength);
|
ReturnLength);
|
||||||
|
|
||||||
|
/* Normalize the error to what Win32 expects */
|
||||||
|
if (Status == STATUS_INFO_LENGTH_MISMATCH) Status = STATUS_BUFFER_TOO_SMALL;
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/*
|
BaseSetLastNTError(Status);
|
||||||
* When NtQuerySystemInformation says STATUS_INFO_LENGTH_MISMATCH,
|
|
||||||
* return ERROR_INSUFFICIENT_BUFFER instead of ERROR_BAD_LENGTH.
|
|
||||||
*/
|
|
||||||
BaseSetLastNTError(Status == STATUS_INFO_LENGTH_MISMATCH
|
|
||||||
? STATUS_BUFFER_TOO_SMALL
|
|
||||||
: Status);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,9 +215,7 @@ GetLogicalProcessorInformation(OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetNumaHighestNodeNumber(
|
GetNumaHighestNodeNumber(OUT PULONG HighestNodeNumber)
|
||||||
PULONG HighestNodeNumber
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -287,10 +226,8 @@ GetNumaHighestNodeNumber(
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetNumaNodeProcessorMask(
|
GetNumaNodeProcessorMask(IN UCHAR Node,
|
||||||
UCHAR Node,
|
OUT PULONGLONG ProcessorMask)
|
||||||
PULONGLONG ProcessorMask
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -301,15 +238,16 @@ GetNumaNodeProcessorMask(
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetNumaProcessorNode(
|
GetNumaProcessorNode(IN UCHAR Processor,
|
||||||
UCHAR Processor,
|
OUT PUCHAR NodeNumber)
|
||||||
PUCHAR NodeNumber
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetNumaAvailableMemoryNode(IN UCHAR Node,
|
GetNumaAvailableMemoryNode(IN UCHAR Node,
|
||||||
|
@ -324,12 +262,10 @@ GetNumaAvailableMemoryNode(IN UCHAR Node,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
GetFirmwareEnvironmentVariableW(
|
GetFirmwareEnvironmentVariableW(IN LPCWSTR lpName,
|
||||||
LPCWSTR lpName,
|
IN LPCWSTR lpGuid,
|
||||||
LPCWSTR lpGuid,
|
IN PVOID pValue,
|
||||||
PVOID pBuffer,
|
IN DWORD nSize)
|
||||||
DWORD nSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -340,12 +276,10 @@ GetFirmwareEnvironmentVariableW(
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
SetFirmwareEnvironmentVariableW(
|
SetFirmwareEnvironmentVariableW(IN LPCWSTR lpName,
|
||||||
LPCWSTR lpName,
|
IN LPCWSTR lpGuid,
|
||||||
LPCWSTR lpGuid,
|
IN PVOID pValue,
|
||||||
PVOID pValue,
|
IN DWORD nSize)
|
||||||
DWORD nSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -356,12 +290,10 @@ SetFirmwareEnvironmentVariableW(
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
GetFirmwareEnvironmentVariableA(
|
GetFirmwareEnvironmentVariableA(IN LPCSTR lpName,
|
||||||
LPCSTR lpName,
|
IN LPCSTR lpGuid,
|
||||||
LPCSTR lpGuid,
|
IN PVOID pValue,
|
||||||
PVOID pBuffer,
|
IN DWORD nSize)
|
||||||
DWORD nSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -372,17 +304,18 @@ GetFirmwareEnvironmentVariableA(
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
SetFirmwareEnvironmentVariableA(
|
SetFirmwareEnvironmentVariableA(IN LPCSTR lpName,
|
||||||
LPCSTR lpName,
|
IN LPCSTR lpGuid,
|
||||||
LPCSTR lpGuid,
|
IN PVOID pValue,
|
||||||
PVOID pValue,
|
IN DWORD nSize)
|
||||||
DWORD nSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
UINT
|
UINT
|
||||||
WINAPI
|
WINAPI
|
||||||
EnumSystemFirmwareTables(IN DWORD FirmwareTableProviderSignature,
|
EnumSystemFirmwareTables(IN DWORD FirmwareTableProviderSignature,
|
||||||
|
@ -393,6 +326,9 @@ EnumSystemFirmwareTables(IN DWORD FirmwareTableProviderSignature,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
UINT
|
UINT
|
||||||
WINAPI
|
WINAPI
|
||||||
GetSystemFirmwareTable(IN DWORD FirmwareTableProviderSignature,
|
GetSystemFirmwareTable(IN DWORD FirmwareTableProviderSignature,
|
||||||
|
@ -404,6 +340,9 @@ GetSystemFirmwareTable(IN DWORD FirmwareTableProviderSignature,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetSystemFileCacheSize(OUT PSIZE_T lpMinimumFileCacheSize,
|
GetSystemFileCacheSize(OUT PSIZE_T lpMinimumFileCacheSize,
|
||||||
|
@ -414,7 +353,9 @@ GetSystemFileCacheSize(OUT PSIZE_T lpMinimumFileCacheSize,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
SetSystemFileCacheSize(IN SIZE_T MinimumFileCacheSize,
|
SetSystemFileCacheSize(IN SIZE_T MinimumFileCacheSize,
|
||||||
|
@ -424,4 +365,3 @@ SetSystemFileCacheSize(IN SIZE_T MinimumFileCacheSize,
|
||||||
STUB;
|
STUB;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue