From 790709a74056b1d2f12d3980adb251328273132a Mon Sep 17 00:00:00 2001 From: Mike Nordell Date: Thu, 18 Oct 2007 08:00:59 +0000 Subject: [PATCH] Feeble attempt at getting NT4 vga.sys working by implementing HalFrameBufferCachingInformation case for HaliQuerySystemInformation. svn path=/trunk/; revision=29656 --- reactos/hal/halx86/generic/sysinfo.c | 53 ++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/reactos/hal/halx86/generic/sysinfo.c b/reactos/hal/halx86/generic/sysinfo.c index ffdb34f210e..e81d6747107 100644 --- a/reactos/hal/halx86/generic/sysinfo.c +++ b/reactos/hal/halx86/generic/sysinfo.c @@ -23,13 +23,54 @@ PUCHAR _KdComPortInUse = 0; NTSTATUS NTAPI -HaliQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass, - IN ULONG BufferSize, - IN OUT PVOID Buffer, - OUT PULONG ReturnedLength) +HaliQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass, + IN ULONG BufferSize, + IN OUT PVOID Buffer, + OUT PULONG ReturnedLength) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; +#define REPORT_THIS_CASE(X) case X: DPRINT1("Unhandled case: %s\n", #X); break + switch (InformationClass) + { + REPORT_THIS_CASE(HalInstalledBusInformation); + REPORT_THIS_CASE(HalProfileSourceInformation); + REPORT_THIS_CASE(HalInformationClassUnused1); + REPORT_THIS_CASE(HalPowerInformation); + REPORT_THIS_CASE(HalProcessorSpeedInformation); + REPORT_THIS_CASE(HalCallbackInformation); + REPORT_THIS_CASE(HalMapRegisterInformation); + REPORT_THIS_CASE(HalMcaLogInformation); + case HalFrameBufferCachingInformation: + if (BufferSize >= 1) + { + // The only caller that has been seen calling this function told + // us it expected a single byte back. We therefore guess it expects + // a BOOLEAN, and we dream up the value TRUE to (we think) tell it + // "Sure, the framebuffer is cached". + DPRINT("%s: caller expects %u bytes (should be 1)\n", "HalFrameBufferCachingInformation", BufferSize); + BOOLEAN ToReturn = TRUE; + ASSERT(sizeof(BOOLEAN) == 1); + *ReturnedLength = sizeof(BOOLEAN); + RtlCopyMemory(Buffer, &ToReturn, sizeof(BOOLEAN)); + return STATUS_SUCCESS; + } + break; + REPORT_THIS_CASE(HalDisplayBiosInformation); + REPORT_THIS_CASE(HalProcessorFeatureInformation); + REPORT_THIS_CASE(HalNumaTopologyInterface); + REPORT_THIS_CASE(HalErrorInformation); + REPORT_THIS_CASE(HalCmcLogInformation); + REPORT_THIS_CASE(HalCpeLogInformation); + REPORT_THIS_CASE(HalQueryMcaInterface); + REPORT_THIS_CASE(HalQueryAMLIIllegalIOPortAddresses); + REPORT_THIS_CASE(HalQueryMaxHotPlugMemoryAddress); + REPORT_THIS_CASE(HalPartitionIpiInterface); + REPORT_THIS_CASE(HalPlatformInformation); + REPORT_THIS_CASE(HalQueryProfileSourceList); + } +#undef REPORT_THIS_CASE + + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; } NTSTATUS