<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>