mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Add patch to populate HKEY_DYN_DATA.
This commit is contained in:
parent
d270fde97f
commit
b04636aa97
@ -7,6 +7,7 @@ Wine to run common Windows applications under Linux.
|
||||
These patches fix the following Wine bugs:
|
||||
|
||||
* Support for TransmitFile ([Wine Bug #5048](http://bugs.winehq.org/show_bug.cgi?id=5048 "Multiple applications and games need support for ws2_32 SIO_GET_EXTENSION_FUNCTION_POINTER TransmitFile (WSAID_TRANSMITFILE)"))
|
||||
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](http://bugs.winehq.org/show_bug.cgi?id=7115 "Need for Speed III installer fails in Win9X mode, reporting "Could not get 'HardWareKey' value" (active PnP device keys in 'HKEY_DYN_DATA\\Config Manager\\Enum' missing)"))
|
||||
* Support for Junction Points ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401 "Support junction points, i.e. DeviceIoCtl(FSCTL_SET_REPARSE_POINT/FSCTL_GET_REPARSE_POINT)"))
|
||||
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980 "Rhapsody 2 crashes on startup (GetSecurityInfo returns NULL DACL for process object)"))
|
||||
* Workaround for TransactNamedPipe not being supported ([Wine Bug #17273](http://bugs.winehq.org/show_bug.cgi?id=17273 "Many apps and games need SetNamedPipeHandleState implementation (support for named pipe message mode)(FireFox+Flash, Win8/NET 4.x SDK/vcrun2012, WiX installers)"))
|
||||
|
@ -24,6 +24,7 @@ PATCHLIST := Miscellaneous.ok \
|
||||
shell32-Default_Folder_ACLs.ok \
|
||||
shlwapi-UrlCombine.ok \
|
||||
strmbase-Lock_Race_Conditions.ok \
|
||||
wineboot-HKEY_DYN_DATA.ok \
|
||||
winepulse-PulseAudio_Support.ok \
|
||||
winex11-XEMBED.ok \
|
||||
ws2_32-TransmitFile.ok \
|
||||
@ -404,6 +405,24 @@ strmbase-Lock_Race_Conditions.ok:
|
||||
echo "+ { \"strmbase-Lock_Race_Conditions\", \"Erich E. Hoover\", \"Fix possible race conditions in strmbase/quartz.\" },"; \
|
||||
) > strmbase-Lock_Race_Conditions.ok
|
||||
|
||||
# Patchset wineboot-HKEY_DYN_DATA
|
||||
# |
|
||||
# | Included patches:
|
||||
# | * Add some generic hardware in HKEY_DYN_DATA\Config Manager\Enum. [by Michael Müller]
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#7115] Need for Speed III installer fails in Win9X mode, reporting "Could not get 'HardWareKey' value" (active PnP
|
||||
# | device keys in 'HKEY_DYN_DATA\\Config Manager\\Enum' missing)
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * programs/wineboot/wineboot.c
|
||||
# |
|
||||
wineboot-HKEY_DYN_DATA.ok:
|
||||
$(PATCH) < wineboot-HKEY_DYN_DATA/0001-wineboot-Add-some-generic-hardware-in-HKEY_DYN_DATA-.patch
|
||||
( \
|
||||
echo "+ { \"wineboot-HKEY_DYN_DATA\", \"Michael Müller\", \"Add some generic hardware in HKEY_DYN_DATA\Config Manager\Enum.\" },"; \
|
||||
) > wineboot-HKEY_DYN_DATA.ok
|
||||
|
||||
# Patchset winepulse-PulseAudio_Support
|
||||
# |
|
||||
# | Included patches:
|
||||
|
@ -0,0 +1,137 @@
|
||||
From bbd182f920565d0aa58cd1524810bd11c535a965 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 16 Mar 2014 03:19:39 +0100
|
||||
Subject: wineboot: Add some generic hardware in HKEY_DYN_DATA\Config
|
||||
Manager\Enum
|
||||
|
||||
---
|
||||
programs/wineboot/wineboot.c | 101 +++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 101 insertions(+)
|
||||
|
||||
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
|
||||
index a20b4e1..db58e40 100644
|
||||
--- a/programs/wineboot/wineboot.c
|
||||
+++ b/programs/wineboot/wineboot.c
|
||||
@@ -272,6 +272,100 @@ static void create_hardware_registry_keys(void)
|
||||
HeapFree( GetProcessHeap(), 0, power_info );
|
||||
}
|
||||
|
||||
+struct dyndata_enum_key{
|
||||
+ WCHAR id[9];
|
||||
+ WCHAR hardwarekey[64];
|
||||
+ char problem[4];
|
||||
+ char status[4];
|
||||
+ char allocation[12];
|
||||
+ char child[4];
|
||||
+ char sibling[4];
|
||||
+ char parent[4];
|
||||
+};
|
||||
+
|
||||
+static struct dyndata_enum_key predefined_enums[] =
|
||||
+{
|
||||
+ {
|
||||
+ {'C','2','9','A','2','3','D','0',0},
|
||||
+ {'H','T','R','E','E','\\','R','O','O','T','\\','0',0},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x4e, 0x08, 0x08, 0x1a},
|
||||
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x40, 0x5a, 0x9a, 0xc2},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x00, 0x00, 0x00, 0x00}
|
||||
+ },
|
||||
+ {
|
||||
+ {'C','2','9','A','5','A','4','0',0},
|
||||
+ {'H','T','R','E','E','\\','R','E','S','E','R','V','E','D','\\','0',0},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x4e, 0x08, 0x08, 0x18},
|
||||
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x60, 0x5c, 0x9a, 0xc2},
|
||||
+ {0xd0, 0x23, 0x9a, 0xc2}
|
||||
+ },
|
||||
+ {
|
||||
+ {'C','2','9','A','5','C','6','0',0},
|
||||
+ {'R','O','O','T','\\','N','E','T','\\','0','0','0','0',0},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x4f, 0x6a, 0x08, 0x18},
|
||||
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
+ {0xf0, 0x93, 0x9b, 0xc2},
|
||||
+ {0xc0, 0x5d, 0x9a, 0xc2},
|
||||
+ {0xd0, 0x23, 0x9a, 0xc2}
|
||||
+ },
|
||||
+ {
|
||||
+ {'C','2','9','A','5','D','C','0',0},
|
||||
+ {'R','O','O','T','\\','P','R','O','C','E','S','S','O','R','_','U','P','D','A','T','E','\\','0','0','0','0',0},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0xcf, 0x6a, 0x88, 0x19},
|
||||
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x20, 0x5f, 0x9a, 0xc2},
|
||||
+ {0xd0, 0x23, 0x9a, 0xc2}
|
||||
+ },
|
||||
+ {
|
||||
+ {'C','2','9','A','5','F','2','0',0},
|
||||
+ {'R','O','O','T','\\','S','W','E','N','U','M','\\','0','0','0','0',0},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0xcf, 0x6a, 0x88, 0x19},
|
||||
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x00, 0x00, 0x00, 0x00},
|
||||
+ {0x20, 0x5f, 0x9a, 0xc2},
|
||||
+ {0xd0, 0x23, 0x9a, 0xc2}
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+/* add entry to HKEY_DYN_DATA\Config Manager\Enum */
|
||||
+static void add_dynamic_enum_keys(HKEY key, struct dyndata_enum_key *entry)
|
||||
+{
|
||||
+ static const WCHAR HardWareKeyW[] = {'H','a','r','d','W','a','r','e','K','e','y',0};
|
||||
+ static const WCHAR ProblemW[] = {'P','r','o','b','l','e','m',0};
|
||||
+ static const WCHAR StatusW[] = {'S','t','a','t','u','s',0};
|
||||
+ static const WCHAR AllocationW[] = {'A','l','l','o','c','a','t','i','o','n',0};
|
||||
+ static const WCHAR ChildW[] = {'C','h','i','l','d',0};
|
||||
+ static const WCHAR SiblingW[] = {'S','i','b','l','i','n','g',0};
|
||||
+ static const WCHAR ParentW[] = {'P','a','r','e','n','t',0};
|
||||
+
|
||||
+ HKEY subkey;
|
||||
+
|
||||
+ if (!entry)
|
||||
+ return;
|
||||
+
|
||||
+ if (RegCreateKeyExW( key, entry->id, 0, NULL, 0, KEY_WRITE, NULL, &subkey, NULL ))
|
||||
+ return;
|
||||
+
|
||||
+ set_reg_value( subkey, HardWareKeyW, entry->hardwarekey );
|
||||
+ RegSetValueExW( subkey, ProblemW, 0, REG_BINARY, (const BYTE *)entry->problem, sizeof(entry->problem) );
|
||||
+ RegSetValueExW( subkey, StatusW, 0, REG_BINARY, (const BYTE *)entry->status, sizeof(entry->status) );
|
||||
+ RegSetValueExW( subkey, AllocationW, 0, REG_BINARY, (const BYTE *)entry->allocation, sizeof(entry->allocation) );
|
||||
+ RegSetValueExW( subkey, ChildW, 0, REG_BINARY, (const BYTE *)entry->child, sizeof(entry->child) );
|
||||
+ RegSetValueExW( subkey, SiblingW, 0, REG_BINARY, (const BYTE *)entry->sibling, sizeof(entry->sibling) );
|
||||
+ RegSetValueExW( subkey, ParentW, 0, REG_BINARY, (const BYTE *)entry->parent, sizeof(entry->parent) );
|
||||
+
|
||||
+ RegCloseKey( subkey );
|
||||
+}
|
||||
|
||||
/* create the DynData registry keys */
|
||||
static void create_dynamic_registry_keys(void)
|
||||
@@ -281,11 +375,18 @@ static void create_dynamic_registry_keys(void)
|
||||
static const WCHAR ConfigManagerW[] = {'C','o','n','f','i','g',' ','M','a','n','a','g','e','r','\\',
|
||||
'E','n','u','m',0};
|
||||
HKEY key;
|
||||
+ int entry;
|
||||
|
||||
if (!RegCreateKeyExW( HKEY_DYN_DATA, StatDataW, 0, NULL, 0, KEY_WRITE, NULL, &key, NULL ))
|
||||
RegCloseKey( key );
|
||||
+
|
||||
if (!RegCreateKeyExW( HKEY_DYN_DATA, ConfigManagerW, 0, NULL, 0, KEY_WRITE, NULL, &key, NULL ))
|
||||
+ {
|
||||
+ for (entry = 0; entry < sizeof(predefined_enums) / sizeof(predefined_enums[0]); entry++)
|
||||
+ add_dynamic_enum_keys( key, &predefined_enums[entry] );
|
||||
+
|
||||
RegCloseKey( key );
|
||||
+ }
|
||||
}
|
||||
|
||||
/* create the platform-specific environment registry keys */
|
||||
--
|
||||
1.8.3.2
|
||||
|
4
patches/wineboot-HKEY_DYN_DATA/definition
Normal file
4
patches/wineboot-HKEY_DYN_DATA/definition
Normal file
@ -0,0 +1,4 @@
|
||||
Author: Michael Müller
|
||||
Subject: Add some generic hardware in HKEY_DYN_DATA\Config Manager\Enum.
|
||||
Revision: 1
|
||||
Fixes: [7115] Need for Speed 3 installer requires devices in HKEY_DYN_DATA
|
Loading…
Reference in New Issue
Block a user