微軟計劃讓 C# 和 Rust 等語言更容易訪問 Win32 API
阿新 • • 發佈:2021-03-08
3月8日訊息外媒報道,Win32 API 是經典 Windows 桌面應用的原生平臺。它適用於需要直接訪問系統功能和硬體的應用程式。這些 Win32 API 對於 C 和 C++ 開發者來說是很容易訪問的。然而對於其他語言,如 C# 和 Rust,則需要包裝器或繫結來訪問這些 API。為了讓更多的語言包括 C# 和 Rust 能夠訪問 Win32 API,微軟宣佈了新的 win32metadata 專案。
獲悉,新的 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++ 投射。