外媒報道,Win32 API 是經典 Windows 桌面應用的原生平臺。它適用于需要直接訪問系統功能和硬件的應用程序。這些 Win32 API 對于 C 和 C++ 開發者來說是很容易訪問的。然而對于其他語言,如 C# 和 Rust,則需要包裝器或綁定來訪問這些 API。為了讓更多的語言包括 C# 和 Rust 能夠訪問 Win32 API,微軟宣布了新的 win32metadata 項目。
IT之家獲悉,新的 win32metadata 項目目的是以元數據的方式提供 Win32 API 表層的完整描述,從而可以以自動化的方式將其投射到任何語言中,提高正確性并將維護開銷降到最低。
通過這個項目,你可以獲取 Nuget.org 網站上的 Windows 元數據文件(winmd),其中包含描述整個 Win32 API 表層的元數據。語言預測需要建立在這些元數據之上,以使開發人員能夠從他們選擇的語言中習慣性地調用 Win32 API。微軟公布了三種語言預測。
- C#/Win32 是與 . NET 的 PInvoke 項目的所有者 Andrew Arnott 合作構建的,C#/Win32 可以解析元數據,并生成調用你關心的 API 所需的 P/Invoke 包裝器。
- Rust 語言投射遵循 C++/WinRT 建立的傳統,即使用標準語言和編譯器為 Windows 構建語言投射,為 Rust 開發者提供了一種自然和習慣性的方式來調用 Windows API。
- Modern C++ 投射。