Author: mnordell
Date: Thu Oct 18 12:00:59 2007
New Revision: 29656
URL:
http://svn.reactos.org/svn/reactos?rev=29656&view=rev
Log:
Feeble attempt at getting NT4 vga.sys working by implementing
HalFrameBufferCachingInformation case for HaliQuerySystemInformation.
Modified:
trunk/reactos/hal/halx86/generic/sysinfo.c
Modified: trunk/reactos/hal/halx86/generic/sysinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/sysinfo…
==============================================================================
--- trunk/reactos/hal/halx86/generic/sysinfo.c (original)
+++ trunk/reactos/hal/halx86/generic/sysinfo.c Thu Oct 18 12:00:59 2007
@@ -23,13 +23,54 @@
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