0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[2021Aug] Mingw-w64 バージョン別サポート API レベルを軽く調べてみた

Posted at

はじめに

先日 Debian Buster で Mingw-w64 v6.0.0 を試したとき、使いたかった GetCurrentProcessToken() が使えず、後日 Ubuntu Focal Fossa の v7.0.0 なら使えるのかなと試しました。

結果、使えました。めでたしめでたし。

なんですが、何となく、Mingw-w64 がバージョン別にサポートしている API レベルってどんな感じなんだろうと気になったので、軽く調べてみようと思い立ち、ホントに軽く調べた次第です。

結論

WINVER と _WIN32_WINNT を簡単に一覧してみた結果が下記です。

予想していたことではありますが、Mingw-w64 v6 だから Windows 7 相当、とか、そういうことではなかったです。Windows 順ではなく要望順に実装しているのでしょう。互換処理系ではリーズナブルだと思います。

Code Windows Ver v6.0.0 v7.0.0 v8.0.2 v9.0.0
0x0400 NT 4.0 o o o o
0x0500 2000 o o o o
0x0501 XP o o o o
0x0502 XP 64bit / Server 2003 o o o o
0x0600 Vista / Server 2008 o o o o
0x0601 7 / Server 2008 R2 o o o o
0x0602 8 / Server 2012 o o o o
0x0603 8.1 / Server 2012 R2 o o o o
0x0604 10 Technical Preview x x o o
0x0605 ??? x x o o
0x0606 ??? x x o o
0x0A00 10 / Server 2016, 2019 o o o o

不明な Windows バージョンについて

前記表中 Windows Ver の列が ??? の行が2つありますが、これらのコードに対応する Windows バージョンを見つけることができませんでした。
2020-06-19 付の一覧には出現していませんし、site:microsoft.com でググってもヒットしません。

winuser.h>= 0x0605>= 0x0606 の箇所を見ると、DPI 関連の関数が出てきます。GetThreadDpiHostingBehavior() など。同関数のシステム要件は Windows 10 1803 以降のようです。他方 .NET Framework 4.8 の新機能として WPF の高 DPI の強化があるそうです。

WPF デビューは Vista にプリインストールされている .NET Framework 3.0 でした。WPF は 0x0600 番台で管理されているのかもしれません。

ところで GetCurrentProcessToken() デビューは

Mingw-w64 に GetCurrentProcessToken() が実装されたのは、v6 から v7 の間の 2018-09-27 のコミットでした。

ちなみに GetCurrentProcessToken() が返す疑似ハンドルは固定値で -4 です。

おわりに

使いたい関数などが Mingw-w64 で利用できるかどうかは、つど個々のバージョンにて確認するしかなさそうです。
なので、出来るならば最新リリースを実行できるようにしておくと良さそうです。

そして、Snappy には Mingw-w64 は無いようです。残念。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?