Hi,<br><br>Yes, I can see that such 4-level comparisons are already  <br>in the actctx.c codebase (probably for a reason ?). Looking at <br>MSDN earlier this evening, I could not find reference to 3rd and <br>4th entries in comparisons, but I probably skipped the right section
<br>in the doc.<br><br>Do you believe it is worthwhile to check this comparison function <br>from a windows test perspective ?<br><br>Thanks,<br><br>Norbert<br><br><div><span class="gmail_quote">2007/11/19, Robert Shearman &lt;
<a href="mailto:rob@codeweavers.com">rob@codeweavers.com</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">nlataill wrote:<br>&gt; Adding verbosity to 
actctx.c, it seems that this game is requesting<br>&gt; version 8.0.50608.0, which does match major.minor,<br>&gt; but not the whole version number (/major.minor.build.revision)/.<br>&gt;<br>...<br>&gt; According to MSDN, it seems only 
major.minor is considered for version<br>&gt; matching:<br>&gt; - <a href="http://msdn2.microsoft.com/en-us/library/aa374234.aspx">http://msdn2.microsoft.com/en-us/library/aa374234.aspx</a> : A version<br>&gt; number that changes only in the /build/ or /revision/ parts indicates
<br>&gt; that the assembly is backward compatible with prior versions.<br>&gt; - <a href="http://msdn2.microsoft.com/en-us/library/aa375365.aspx">http://msdn2.microsoft.com/en-us/library/aa375365.aspx</a>: [...] are<br>&gt; manifests used to redirect the version of a side-by-side assembly to
<br>&gt; another compatible version. The version that the assembly is being<br>&gt; redirected to should have the same major.minor values as the original<br>&gt; version.<br>&gt;<br>&gt; I am proposing the following one-liner to ntdll/actctx.c:
<br>&gt;<br>&gt; isa@isa:~/downloads/tmp$ diff -u wine-0.9.49/dlls/ntdll/actctx.c<br>&gt; /home/isa/downloads/wine-0.9.49/dlls/ntdll/actctx.c<br>&gt; --- wine-0.9.49/dlls/ntdll/actctx.c&nbsp;&nbsp;&nbsp;&nbsp; 2007-11-09 17:56: 12.000000000<br>
&gt; +0100<br>&gt; +++ /home/isa/downloads/wine-0.9.49/dlls/ntdll/actctx.c 2007-11-19<br>&gt; 21:07:35.000000000 +0100<br>&gt; @@ -1390,8 +1390,8 @@<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (expected_ai)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* FIXME: more tests */
<br>&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (assembly-&gt;type == ASSEMBLY_MANIFEST &amp;&amp;<br>&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcmp(&amp;assembly-&gt;id.version, &amp;expected_ai-&gt;version,<br>&gt; sizeof(assembly-&gt;id.version)))<br>&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (assembly-&gt;type == ASSEMBLY_MANIFEST &amp;&amp;
<br>&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((assembly-&gt;id.version.major !=<br>&gt; expected_ai-&gt;version.major) || (assembly-&gt;id.version.minor !=<br>&gt; expected_ai-&gt;version.minor)) )<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIXME(&quot;wrong version\n&quot;);
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br>&gt;<br>&gt; With this patch, the manifest (and related DLL) is loading correctly.<br>&gt; This does not prevent my game die shortly after, in D3D code this<br>&gt; time. Still work to do ;-)
<br><br>I think the attached patch is more complete and implements what MSDN states.<br><br>--<br>Rob Shearman<br><br><br></blockquote></div><br>