From: Dāvis Mosāns davispuh@gmail.com
Co-authored-by: Daniel Clark megadjc@gmail.com Co-authored-by: Haltinulo --- dlls/ntdll/unix/system.c | 29 +++++++++++++++++++++++++++++ include/winternl.h | 11 +++++++++++ 2 files changed, 40 insertions(+)
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index 879a5893758..52d27c7c472 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -3261,6 +3261,35 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class, case SystemCpuSetInformation: /* 175 */ return NtQuerySystemInformationEx(class, NULL, 0, info, size, ret_size);
+ case SystemBootEnvironmentInformation: + { + PSYSTEM_BOOT_ENVIRONMENT_INFORMATION result; + + len = sizeof(SYSTEM_BOOT_ENVIRONMENT_INFORMATION); + if (size >= sizeof(SYSTEM_BOOT_ENVIRONMENT_V1)) + { + if (!info) ret = STATUS_ACCESS_VIOLATION; + else + { + result = (PSYSTEM_BOOT_ENVIRONMENT_INFORMATION)info; + get_system_uuid(&result->BootIdentifier); + + if (access("/sys/firmware/efi", F_OK) == 0) + { + result->FirmwareType = FirmwareTypeUefi; + } else + { + result->FirmwareType = FirmwareTypeBios; + } + + if (size >= len) result->BootFlags = 0; + else len = sizeof(SYSTEM_BOOT_ENVIRONMENT_V1); + } + } + else ret = STATUS_INFO_LENGTH_MISMATCH; + break; + } + /* Wine extensions */
case SystemWineVersionInformation: /* 1000 */ diff --git a/include/winternl.h b/include/winternl.h index b551e404fc9..917988a69dd 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2644,6 +2644,17 @@ typedef struct _SYSTEM_CPU_INFORMATION { ULONG ProcessorFeatureBits; } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
+typedef struct _SYSTEM_BOOT_ENVIRONMENT_V1 { + GUID BootIdentifier; + FIRMWARE_TYPE FirmwareType; +} SYSTEM_BOOT_ENVIRONMENT_V1, *PSYSTEM_BOOT_ENVIRONMENT_V1; + +typedef struct _SYSTEM_BOOT_ENVIRONMENT_INFORMATION { + GUID BootIdentifier; + FIRMWARE_TYPE FirmwareType; + ULONGLONG BootFlags; +} SYSTEM_BOOT_ENVIRONMENT_INFORMATION, *PSYSTEM_BOOT_ENVIRONMENT_INFORMATION; + /* definitions of bits in the Feature set for the x86 processors */ #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */ #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */