From: Dāvis Mosāns <davispuh(a)gmail.com> Co-authored-by: Daniel Clark <megadjc(a)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 */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4921