Send MinGW-Notify mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.osdn.me/mailman/listinfo/mingw-notify
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of MinGW-Notify digest..."


Please do not reply to this notification; the sender address is unable to 
accept incoming e-mail.  If you wish to unsubscribe you can do so at 
https://lists.osdn.me/mailman/listinfo/mingw-notify.



Today's Topics:

   1. [mingw] #42344: Implement a generic infrastructure to
      facilitate run-time linking of API functions (MinGW Notification List)
   2. [mingw] #41567: Some new Win32 APIs are missing from w32api
      (MinGW Notification List)


----------------------------------------------------------------------

Message: 1
Date: Fri, 21 May 2021 20:46:00 +0100
From: MinGW Notification List <[email protected]>
To: OSDN Ticket System <[email protected]>
Subject: [MinGW-Notify] [mingw] #42344: Implement a generic
        infrastructure to facilitate run-time linking of API functions
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8

#42344: Implement a generic infrastructure to facilitate run-time linking of 
API functions

  Open Date: 2021-05-21 20:46
Last Update: 2021-05-21 20:46

URL for this Ticket:
    https://osdn.net//projects/mingw/ticket/42344
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=42344

---------------------------------------------------------------------

Last Changes/Comment on this Ticket:
2021-05-21 20:46 Updated by: keith
 * New Ticket "Implement a generic infrastructure to facilitate run-time 
linking of API functions" created


---------------------------------------------------------------------
Ticket Status:

      Reporter: keith
         Owner: keith
          Type: Feature Request
        Status: Open [Owner assigned]
      Priority: 5 - Medium
     MileStone: (None)
     Component: WSL
      Severity: 5 - Medium
    Resolution: None
---------------------------------------------------------------------

Ticket details:

As support for new (Windows version-dependent) APIs is added to MinGW, there is 
increased potential for creating an application which will not load, much less 
run, on legacy Windows versions; the typical manifestation of such a load 
failure is that the process crashes with an "entry point not found" exception, 
for the unsupported DLL function, before the main() function even gets control, 
so there's no opportunity to handle the exception.
The only way to mitigate such exceptions, such that the application retains 
control, is to always link potentially unsupported API functions dynamically, 
at run-time, by retrieval of an entry-point reference, using GetProcAddress(), 
and to always invoke the function via the reference pointer, (and never call it 
directly, by name).  The mechanism for dynamically linking such functions is 
mostly the same, in each case, often resulting in significant repetitive 
coding; it would be a great convenience, if MinGW were to implement a generic 
API infrastructure, to encapsulate the common features of the required run-time 
linking interface.

-- 
Ticket information of MinGW - Minimalist GNU for Windows project
MinGW - Minimalist GNU for Windows Project is hosted on OSDN

Project URL: https://osdn.net/projects/mingw/
OSDN: https://osdn.net

URL for this Ticket:
    https://osdn.net/projects/mingw/ticket/42344
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=42344


------------------------------

Message: 2
Date: Fri, 21 May 2021 23:49:17 +0100
From: MinGW Notification List <[email protected]>
To: OSDN Ticket System <[email protected]>
Subject: [MinGW-Notify] [mingw] #41567: Some new Win32 APIs are
        missing from w32api
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8

#41567: Some new Win32 APIs are missing from w32api

  Open Date: 2021-02-12 14:20
Last Update: 2021-05-21 23:49

URL for this Ticket:
    https://osdn.net//projects/mingw/ticket/41567
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=41567

---------------------------------------------------------------------

Last Changes/Comment on this Ticket:
2021-05-21 23:49 Updated by: keith

Comment:

Reply To keith
... there is a potential problem with simply adding the import library thunks, 
for the missing functions.  It's not insurmountable — in fact, it's easy enough 
to do — and perhaps is more of a caveat ...

Fundamentally, the caveat is that, once the header files have been updated, and 
the import library thunks have been added, any code which is compiled with an 
appropriate NTDDI_VERSION definition may call the new functions directly, and, 
in the absence of coding errors, the program will compile, and link 
successfully.  However, it will not load, much less run, on any legacy version 
of Windows, ...

... The defensive way, to manage this caveat, is to always call potentially 
unsupported functions via a pointer retrieved by GetProcAddress(), and never 
call them directly; ...  I've written quite a few such "legacy capable" 
functions, in the past year or so; they all look very similar, and I'm 
seriously considering factoring out the commonality, into generic helper 
functions, (perhaps in libkernel32.a), to make the task less repetitive, but 
that's probably a subject for another feature request ticket.
I've now opened feature request #42344, relating to this.  On that, I plan to 
develop the concept, which I will illustrate by a simple example derived from 
this very ticket, to show how run-time linked stubs — for the pseudo-console 
API, in this example case — might be integrated directly into the MinGW headers 
themselves.

---------------------------------------------------------------------
Ticket Status:

      Reporter: eliz
         Owner: (None)
          Type: Feature Request
        Status: Open
      Priority: 5 - Medium
     MileStone: (None)
     Component: WSL
      Severity: 5 - Medium
    Resolution: None
---------------------------------------------------------------------

Ticket details:

To compile programs that use the Pseudo Console feature introduced recently 
with Windows 10, there's a need in several additions to the MinGW w32api 
headers and import libraries.
First, we need a value for _WIN32_WINNT that specifies Windows 10, in 
sdkddkver.h:
#define _WIN32_WINNT_WIN10 0x0A00
Second, we need functions, data structures, and macros to create and update 
lists of attributes for process and thread creation.  These are:
InitializeProcThreadAttributeList function
UpdateProcThreadAttribute function
DeleteProcThreadAttributeList function
PROC_THREAD_ATTRIBUTE_LIST structure
STARTUPINFOEX structure
PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE macro
Other PROC_THREAD_ATTRIBUTE_* macros
These seem to be supported since Windows 7, with the exception of 
PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE, which is only supported since Windows 10, 
and STARTUPINFOEX, which is supported since Vista.  I think the proper place 
for them is in the winbase.h header file.
We also need the EXTENDED_STARTUPINFO_PRESENT flag for the CreateProcess 
function (this flag is supported since Vista and should be in winbase.h).
And finally, we need the functions, data types, and macros to manipulate 
pseudo-consoles, available only since Windows 10:
CreatePseudoConsole function
ClosePseudoConsole function
ResizePseudoConsole function
HPCON data type
Thanks in advance for providing these.


-- 
Ticket information of MinGW - Minimalist GNU for Windows project
MinGW - Minimalist GNU for Windows Project is hosted on OSDN

Project URL: https://osdn.net/projects/mingw/
OSDN: https://osdn.net

URL for this Ticket:
    https://osdn.net/projects/mingw/ticket/41567
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=41567


------------------------------

Subject: Digest Footer

_______________________________________________
MinGW-Notify mailing list
[email protected]
https://lists.osdn.me/mailman/listinfo/mingw-notify


------------------------------

End of MinGW-Notify Digest, Vol 44, Issue 9
*******************************************

Reply via email to