[PATCH 0/3] winepulse: Add Wow64 handlers.

Huw Davies huw at codeweavers.com
Thu Apr 14 04:03:08 CDT 2022


Since the wineoss queue has stalled for today, I thought I'd
send in the Wow64 handlers for winepulse.

The first two patches can be tested with a regular setup.
The third requires enabling the new Wow64 mode (see the patch
below).  With that applied you build and install 32-bit and
64-bit versions of Wine and then run a 32-bit app with wine64.
There's obviously no graphics at this point, but the 32-bit
mmdevapi tests run well.

Huw D. M. Davies (3):
  winepulse: Use handles to represent the stream.
  winepulse: Return offsets rather than ptrs to the strings.
  winepulse: Implement Wow64 entry points in the Unix library.

 dlls/winepulse.drv/mmdevdrv.c |  17 +-
 dlls/winepulse.drv/pulse.c    | 522 ++++++++++++++++++++++++++++++++--
 dlls/winepulse.drv/unixlib.h  |  44 ++-
 3 files changed, 524 insertions(+), 59 deletions(-)
-- 
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index d750f7a7579..b18f1c7fba9 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -1548,8 +1548,8 @@ static NTSTATUS MODULE_InitDLL( WINE_MODREF *wm, UINT reason, LPVOID lpReserved
 
     if (wm->ldr.Flags & LDR_DONT_RESOLVE_REFS) return STATUS_SUCCESS;
     if (wm->ldr.TlsIndex != -1) call_tls_callbacks( wm->ldr.DllBase, reason );
-    if (wm->ldr.Flags & LDR_WINE_INTERNAL && reason == DLL_PROCESS_ATTACH)
-        unix_funcs->init_builtin_dll( wm->ldr.DllBase );
+//    if (wm->ldr.Flags & LDR_WINE_INTERNAL && reason == DLL_PROCESS_ATTACH)
+//        unix_funcs->init_builtin_dll( wm->ldr.DllBase );
     if (!entry) return STATUS_SUCCESS;
 
     if (TRACE_ON(relay))
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
index ee958ae71f4..2bb5e8bbf83 100644
--- a/dlls/ntdll/unix/env.c
+++ b/dlls/ntdll/unix/env.c
@@ -1919,7 +1919,7 @@ static RTL_USER_PROCESS_PARAMETERS *build_initial_params( void **module )
     if (!status)
     {
         if (main_image_info.ImageCharacteristics & IMAGE_FILE_DLL) status = STATUS_INVALID_IMAGE_FORMAT;
-        if (main_image_info.Machine != current_machine) status = STATUS_INVALID_IMAGE_FORMAT;
+//        if (main_image_info.Machine != current_machine) status = STATUS_INVALID_IMAGE_FORMAT;
     }
 
     if (status)  /* try launching it through start.exe */



More information about the wine-devel mailing list