<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><b>From:</b> Vm-dev [mailto:vm-dev-bounces@lists.squeakfoundation.org]
<b>On Behalf Of </b>Eliot Miranda<br>
<b>Sent:</b> Monday, April 23, 2018 16:24<br>
<b>To:</b> Open Smalltalk Virtual Machine Development Discussion <vm-dev@lists.squeakfoundation.org><br>
<b>Subject:</b> Re: [Vm-dev] Raise minimum supported Windows API from XP to Vista (was: Identify console executable and standard one)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Hi Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">On Mon, Apr 23, 2018 at 4:11 PM, <Vincent.Blondeau@lamresearch.com> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Hi Eliot,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> *From:* Vm-dev [mailto:vm-dev-bounces@lists.squeakfoundation.org] *On<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Behalf Of *Eliot Miranda<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> *Sent:* Monday, April 23, 2018 13:33<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> *To:* Open Smalltalk Virtual Machine Development Discussion <vm-dev@lists.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> squeakfoundation.org><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> *Subject:* Re: [Vm-dev] Raise minimum supported Windows API from XP to<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Vista (was: Identify console executable and standard one)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Hi Alistair,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> On Mon, Apr 23, 2018 at 1:06 PM, Alistair Grant <akgrant0710@gmail.com><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Hi Eliot & Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > On Mon, Apr 23, 2018 at 10:00:12AM -0700, Eliot Miranda wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > Hi Alistair,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > On Apr 23, 2018, at 2:46 AM, Alistair Grant <akgrant0710@gmail.com><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > Hi Everyone,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > I have some test code that correctly identifies whether stdin on<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Windows<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > is a console or redirected, in both windows command terminals<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> (cmd.exe)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > and cygwin mintty (the current code only works for cmd.exe, not for<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > cygwin terminals).<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > However it relies on the Windows Vista API, i.e. _WIN32_WINNT >=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > 0x0600, and at the moment we set the minimum supported version to<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > Windows XP (0x0501).<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > Since Windows XP is no longer supported, I can't see any problem with<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > raising the minimum version to Windows Vista (which also isn't<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > supported, but should give us maximum compatibility), but wanted to<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > check first.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > Are there any objections to raising the minimum API level to Windows<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > > Vista?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > Not from me.  But it would be nice if the resulting executable still<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > ran in Windows NT.  Is that still possible?  What does the code look<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > > like?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > If we make this change I think the chances of it working on NT are next<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > to zero.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Actually, I'd be surprised if the current VM ran on NT since it is<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > explicitly asking for the XP API, but I haven't tested it.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > The code is available at:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > https://urldefense.proofpoint.com/v2/url?u=https-3A__<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> fossies.org_linux_misc_vim-2D8.0.tar.bz2_vim80_src_iscygpty.c&d=DwIBaQ&c=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> RWI7EqL8K9lqtga8KxgfzvOYoob76EZWE0yAO85PVMQ&r=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> kIZIYXBAA3fhM7P5HOuTC5w6mnEApTfXPTq3lR34ZiY&m=oPgRLf_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> qAaa4HRKiutXLr1xXOa8SzpEcef72bohSLbU&s=mkWFs166cLTuhJuXteRsf0YR1UetLX<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> CU4lbr9L-ztdY&e=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > https://urldefense.proofpoint.com/v2/url?u=https-3A__<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> fossies.org_linux_misc_vim-2D8.0.tar.bz2_vim80_src_iscygpty.h&d=DwIBaQ&c=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> RWI7EqL8K9lqtga8KxgfzvOYoob76EZWE0yAO85PVMQ&r=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> kIZIYXBAA3fhM7P5HOuTC5w6mnEApTfXPTq3lR34ZiY&m=oPgRLf_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> qAaa4HRKiutXLr1xXOa8SzpEcef72bohSLbU&s=C9f7RvD0S_OxvWZFF8Md_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> 6nmuANHrD3WPtoUghrAahE&e=<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> So if you look at lines 60 through 101 you'll see the standard technique<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> for getting around the version issue:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    60 //#define USE_DYNFILEID<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    61 #ifdef USE_DYNFILEID<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    62 typedef BOOL (WINAPI *pfnGetFileInformationByHandleEx)(<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    63         HANDLE                    hFile,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    64         FILE_INFO_BY_HANDLE_CLASS FileInformationClass,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    65         LPVOID                    lpFileInformation,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    66         DWORD                     dwBufferSize<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    67 );<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    68 static pfnGetFileInformationByHandleEx pGetFileInformationByHandleEx<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> = NULL;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    69<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    70 # ifndef USE_FILEEXTD<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    71 static BOOL WINAPI stub_GetFileInformationByHandleEx(<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    72         HANDLE                    hFile,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    73         FILE_INFO_BY_HANDLE_CLASS FileInformationClass,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    74         LPVOID                    lpFileInformation,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    75         DWORD                     dwBufferSize<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    76         )<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    77 {<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    78     return FALSE;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    79 }<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    80 # endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    81<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    82 static void setup_fileid_api(void)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    83 {<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    84     if (pGetFileInformationByHandleEx != NULL) {<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    85         return;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    86     }<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    87     pGetFileInformationByHandleEx = (pfnGetFileInformationByHandleE<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> x)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    88         GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    89                 "GetFileInformationByHandleEx");<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    90     if (pGetFileInformationByHandleEx == NULL) {<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    91 # ifdef USE_FILEEXTD<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    92         pGetFileInformationByHandleEx = GetFileInformationByHandleEx;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    93 # else<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    94         pGetFileInformationByHandleEx =<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> stub_GetFileInformationByHandleEx;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    95 # endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    96     }<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    97 }<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    98 #else<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>    99 # define pGetFileInformationByHandleEx  GetFileInformationByHandleEx<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>   100 # define setup_fileid_api()<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>   101 #endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> If USE_DYNFILEID is defined then the code searches kernel32.dll and uses<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> the function if found.  So the safe way to write this is to follow the<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> approach given by USE_DYNFILEID (no need to implement setup_fileid_api; all<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> thats needed is the statements therefore prepended to the use of<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> pGetFileInformationByHandleEx).  If GetFileInformationByHandleEx exists in<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> kernel32.dll use it, otherwise fall back on our existing code.  That way we<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> should be able to keep the Windows XP build level.  People still use it a<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> lot (especially students in poor countries) and I'd rather wait until we<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> can jump forward beyond Vista to make the change ;-) ;-) ;-)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Does that make sense?  You'll see some of this code in the win32 subsystem<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> already; gre p GetProcAddress  platforms/win32/vm/*<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> platforms/win32/plugins/*/*<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> It does make sense. But, it is not possible anymore to compile with Cygwin<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> in this case: some structures like FILE_BASIC_INFO,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> FILE_INFO_BY_HANDLE_CLASS are not defined if the Windows version is before<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> 0x0600 (see winbase.h:2641).<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">No problem; one simply steals the Microsoft define from the Vista header<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">and includes it verbatim,  e.g. see NOTIFYICONDATA<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">in platforms/win32/vm/sqWin32.h.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> And in the Windows 10 version of Cygwin, fileExt.h, which should contains<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> the definitions for the XP version, is just an empty stub.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Then, should we change:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> WINVER:=-D_WIN32_WINNT=0x0501 -DWINVER=0x0501<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> to:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> WINVER:=-D_WIN32_WINNT=0x0600 -DWINVER=0x0600<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> In Makefile.tools, knowing that the dependencies are still compatible?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Or should be add the fileExt.h XP version in the dependencies?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">No.  We simply define the necessary types verbatim.  Look at sqWin32.h for<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">the pattern:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">/****************************************************************************/<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">/* few addtional definitions for those having older include files<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">*/<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">/****************************************************************************/<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">#if (WINVER < 0x0400) && !defined(_GNU_H_WINDOWS_H)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">...<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">defines<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">#endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">In this case we should just use #if WINVER < 0x0600, right?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal">Indeed!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Waiting for review now: <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/254">
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/254</a> <o:p></o:p></p>
<p class="MsoNormal">It is working fine on Windows 10 with the debug version, with Powershell, Cygwin, and standard Launching for the explorer<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Vincent<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">_,,,^..^,,,_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">best, Eliot<o:p></o:p></p>
</div>
</body>
</html>