
Microsoft ha ampliado el alcance de las API de Win32 más allá del soporte para C y C ++, agregando soporte adicional para C # y Rust a través del proyecto win32metadata, ahora disponible en versión preliminar en GitHub. Según el equipo de desarrollo de Windows, seguirán otros idiomas.
Anteriormente, los desarrolladores que usaban lenguajes distintos de C y C ++ tenían que usar envoltorios o enlaces para acceder a estas API. Esto aumenta la probabilidad de fallas y, según Microsoft, no se amplía a una amplia cobertura de API.
Esto ha estimulado varios proyectos comunitarios para proporcionar una representación más idiomática y tipada de estos envoltorios y enlaces para proporcionar una experiencia de desarrollador mejorada como PInvoke para .NET y winapi-rs para Rust.
Sin embargo, dado que todos estos proyectos se administran manualmente, el equipo de Windows SDK ha lanzado su propia versión para aliviar a la comunidad.
“El objetivo del proyecto win32metadata es proporcionar una descripción completa de metadatos de la interfaz API de Win32 para que pueda proyectarse automáticamente en cualquier idioma, mejorando la corrección y minimizando el mantenimiento”, escribió el equipo de Windows SDK en un Entrada de blog.
El proyecto es un archivo de metadatos de Windows compatible con ECMA-335 (winmd) publicado en NuGet.org.
La primera proyección de lenguaje de este tipo es C # / Win32, que analiza los metadatos y genera los contenedores P / Invoke necesarios para llamar a las API. Los desarrolladores simplemente necesitan agregar una referencia al paquete Microsoft.Windows.CsWin32 de NuGet.org y agregar el archivo NativeMethods.txt a la raíz de su proyecto con una lista de las funciones de Win32 que desean invocar.
“C # / Win32 tiene amplios tipos de Intellisense para los parámetros y también incluye la documentación relevante de docs.microsoft.com, todos los cuales se generan dinámicamente a partir de metadatos basados en las API que solicitó”, explicó el equipo de Windows. “No se requieren dependencias adicionales, se logra una amplia cobertura de API con una corrección mejorada y un mantenimiento mínimo, y las API se expresan idiomáticamente como los desarrolladores de C # esperarían”.
Mientras tanto, Rust Voice Projection sigue a C ++ / WinRT para crear proyecciones de voz para Windows, y Windows Crate permite a los desarrolladores llamar a las API como cualquier otro módulo de Rust.
El equipo también está trabajando para agregar la proyección Modern C ++ a GitHub y dar la bienvenida a las contribuciones de la comunidad allí. Otros idiomas seguirán por demanda popular.