Author: fireball
Date: Mon Oct 1 12:14:24 2007
New Revision: 29323
URL: http://svn.reactos.org/svn/reactos?rev=29323&view=rev
Log:
- Rewrite IntVideoPortGetProcAddress() implementation to use a lookup table instead of doing a wrong call to ZwQuerySystemInformation() which always returned STATUS_IMAGE_ALREADY_LOADED (it's supposed to return this). MS's VideoPort seems to do it in a similar way, because it doesn't import neither ZwQSI() nor MmLoadSystemImage().
- VMWare's video driver now calls VideoPortCreateSecondaryDisplay(), without much success though (it's unimplemented).
Added:
trunk/reactos/drivers/video/videoprt/funclist.c (with props)
Modified:
trunk/reactos/drivers/video/videoprt/videoprt.c
trunk/reactos/drivers/video/videoprt/videoprt.h
trunk/reactos/drivers/video/videoprt/videoprt.rbuild
Added: trunk/reactos/drivers/video/videoprt/funclist.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/fun…
==============================================================================
--- trunk/reactos/drivers/video/videoprt/funclist.c (added)
+++ trunk/reactos/drivers/video/videoprt/funclist.c Mon Oct 1 12:14:24 2007
@@ -1,0 +1,64 @@
+/*
+ * VideoPort driver
+ *
+ * Copyright (C) 2007 ReactOS Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; see the file COPYING.LIB.
+ * If not, write to the Free Software Foundation,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Id: videoprt.c 28975 2007-09-09 12:39:11Z fireball $
+ */
+
+
+#include "videoprt.h"
+
+typedef struct _VIDEO_PORT_FUNCTION_TABLE {
+ PVOID Address;
+ PUCHAR Name;
+} *PVIDEO_PORT_FUNCTION_TABLE, VIDEO_PORT_FUNCTION_TABLE;
+
+/* GLOBAL VARIABLES ***********************************************************/
+
+#define VP_EXPORTED_FUNCS 1
+
+UCHAR FN_VideoPortCreateSecondaryDisplay[] = "VideoPortCreateSecondaryDisplay";
+
+VIDEO_PORT_FUNCTION_TABLE VideoPortExports[] = {
+ {VideoPortCreateSecondaryDisplay, FN_VideoPortCreateSecondaryDisplay}
+};
+
+PVOID NTAPI
+IntVideoPortGetProcAddress(
+ IN PVOID HwDeviceExtension,
+ IN PUCHAR FunctionName)
+{
+ ULONG i = 0;
+
+ DPRINT("VideoPortGetProcAddress(%s)\n", FunctionName);
+
+ /* Search by name */
+ for (i = 0; i < VP_EXPORTED_FUNCS; i++)
+ {
+ if (!_strnicmp((PCHAR)FunctionName, (PCHAR)VideoPortExports[i].Name,
+ strlen((PCHAR)FunctionName)))
+ {
+ return (PVOID)VideoPortExports[i].Address;
+ }
+ }
+
+ DPRINT("VideoPortGetProcAddress: Can't resolve symbol %s\n", FunctionName);
+
+ return NULL;
+}
Propchange: trunk/reactos/drivers/video/videoprt/funclist.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/drivers/video/videoprt/videoprt.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/vid…
==============================================================================
--- trunk/reactos/drivers/video/videoprt/videoprt.c (original)
+++ trunk/reactos/drivers/video/videoprt/videoprt.c Mon Oct 1 12:14:24 2007
@@ -61,62 +61,6 @@
return NULL;
return (PVOID)((ULONG_PTR)BaseAddress + Va);
-}
-
-PVOID NTAPI
-IntVideoPortGetProcAddress(
- IN PVOID HwDeviceExtension,
- IN PUCHAR FunctionName)
-{
- SYSTEM_GDI_DRIVER_INFORMATION GdiDriverInfo;
- PVOID BaseAddress;
- PIMAGE_EXPORT_DIRECTORY ExportDir;
- PUSHORT OrdinalPtr;
- PULONG NamePtr;
- PULONG AddressPtr;
- ULONG i = 0;
- NTSTATUS Status;
-
- DPRINT("VideoPortGetProcAddress(%s)\n", FunctionName);
-
- RtlInitUnicodeString(&GdiDriverInfo.DriverName, L"videoprt");
- Status = ZwSetSystemInformation(
- SystemLoadGdiDriverInformation,
- &GdiDriverInfo,
- sizeof(SYSTEM_GDI_DRIVER_INFORMATION));
- if (!NT_SUCCESS(Status))
- {
- DPRINT("Couldn't get our own module handle?\n");
- return NULL;
- }
-
- BaseAddress = GdiDriverInfo.ImageAddress;
-
- /* Get the pointer to the export directory */
- ExportDir = (PIMAGE_EXPORT_DIRECTORY)IntVideoPortImageDirectoryEntryToData(
- BaseAddress,
- IMAGE_DIRECTORY_ENTRY_EXPORT);
-
- /* Search by name */
- AddressPtr = (PULONG)
- ((ULONG_PTR)BaseAddress + (ULONG_PTR)ExportDir->AddressOfFunctions);
- OrdinalPtr = (PUSHORT)
- ((ULONG_PTR)BaseAddress + (ULONG_PTR)ExportDir->AddressOfNameOrdinals);
- NamePtr = (PULONG)
- ((ULONG_PTR)BaseAddress + (ULONG_PTR)ExportDir->AddressOfNames);
- for (i = 0; i < ExportDir->NumberOfNames; i++, NamePtr++, OrdinalPtr++)
- {
- if (!_strnicmp((PCHAR)FunctionName, (PCHAR)((ULONG_PTR)BaseAddress + *NamePtr),
- strlen((PCHAR)FunctionName)))
- {
- return (PVOID)((ULONG_PTR)BaseAddress +
- (ULONG_PTR)AddressPtr[*OrdinalPtr]);
- }
- }
-
- DPRINT("VideoPortGetProcAddress: Can't resolve symbol %s\n", FunctionName);
-
- return NULL;
}
VOID NTAPI
Modified: trunk/reactos/drivers/video/videoprt/videoprt.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/vid…
==============================================================================
--- trunk/reactos/drivers/video/videoprt/videoprt.h (original)
+++ trunk/reactos/drivers/video/videoprt/videoprt.h Mon Oct 1 12:14:24 2007
@@ -34,7 +34,7 @@
#include <ndk/ntndk.h>
#include <reactos/helper.h>
-#define NDEBUG
+//#define NDEBUG
#include <debug.h>
#define TAG_VIDEO_PORT TAG('V', 'I', 'D', 'P')
@@ -222,6 +222,11 @@
IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
IN PDEVICE_OBJECT DeviceObject);
+PVOID NTAPI
+IntVideoPortGetProcAddress(
+ IN PVOID HwDeviceExtension,
+ IN PUCHAR FunctionName);
+
/* int10.c */
VP_STATUS NTAPI
Modified: trunk/reactos/drivers/video/videoprt/videoprt.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/vid…
==============================================================================
--- trunk/reactos/drivers/video/videoprt/videoprt.rbuild (original)
+++ trunk/reactos/drivers/video/videoprt/videoprt.rbuild Mon Oct 1 12:14:24 2007
@@ -14,6 +14,7 @@
<file>dispatch.c</file>
<file>dma.c</file>
<file>event.c</file>
+ <file>funclist.c</file>
<file>int10.c</file>
<file>interrupt.c</file>
<file>resource.c</file>
Author: cfinck
Date: Sun Sep 30 20:27:55 2007
New Revision: 29318
URL: http://svn.reactos.org/svn/reactos?rev=29318&view=rev
Log:
Ensure that the "Name" column in Task-Manager will always be shown, so a Registry setting can't influence it.
This is necessary as the "Name" column is currently greyed out in the Column Settings dialog, so the user should have no possibility to change that.
Patch by Carlo Bramini (carlo DOT bramix AT libero DOT it)
See issue #2217 for more details.
Modified:
trunk/reactos/base/applications/taskmgr/taskmgr.c
Modified: trunk/reactos/base/applications/taskmgr/taskmgr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/taskmgr/…
==============================================================================
--- trunk/reactos/base/applications/taskmgr/taskmgr.c (original)
+++ trunk/reactos/base/applications/taskmgr/taskmgr.c Sun Sep 30 20:27:55 2007
@@ -719,6 +719,13 @@
dwSize = sizeof(TASKMANAGER_SETTINGS);
RegQueryValueEx(hKey, _T("Preferences"), NULL, NULL, (LPBYTE)&TaskManagerSettings, &dwSize);
+ /*
+ * ATM, the 'ImageName' column is always visible
+ * (and grayed in configuration dialog)
+ * This will avoid troubles if the registry gets corrupted.
+ */
+ TaskManagerSettings.Column_ImageName = TRUE;
+
/* Close the key */
RegCloseKey(hKey);
}