A comprehensive collection of P/Invoke method signatures for Windows APIs, packaged as NuGet libraries with type-safe wrappers.
P/Invoke is a collection of libraries that provide pre-defined P/Invoke method signatures for calling Windows APIs from .NET applications. It solves the problem of developers having to manually research, define, and test these signatures each time they need to interact with native Windows functions. The library packages these signatures as individual NuGet packages for easy consumption.
.NET developers building Windows applications that need to call native Windows APIs, particularly those working with system-level functionality, device management, graphics, or security features.
Developers choose P/Invoke because it provides reliable, tested signatures that are guaranteed to compile and work, saving significant research and debugging time compared to manually defining P/Invoke methods or using unverified online sources.
A library containing all P/Invoke code so you don't have to import it every time. Maintained and updated to support the latest Windows OS.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes signatures for dozens of core Windows DLLs like kernel32 and user32, eliminating the need to manually research APIs for system-level tasks.
Uses SafeHandle-derived types and enums instead of raw IntPtr, making API calls safer and reducing common memory management errors.
All signatures are proven to compile and work, with unit tests providing sample usage, ensuring correctness over unverified online sources.
XML doc comments with MSDN links enable easy IntelliSense support, helping developers understand API usage directly in the IDE.
The README explicitly states the project is no longer maintained and recommends CsWin32, meaning no bug fixes, updates, or support for new Windows APIs.
Organized into separate NuGet packages per DLL, which can lead to dependency bloat if you only need a few functions, complicating project management.
As noted in the usage, null parameters can cause compiler errors due to multiple overloads (e.g., struct* vs struct?), requiring explicit casting to resolve.