.Net互操作之PInvoke

PInvoke是.NET与Native C++或Windows API交互的重要方式。本文介绍了如何使用PInvoke调用C++ DLL和Windows API,提到了一个有用的网站(http://pinvoke.net/)以及VS插件,该插件能简化PInvoke声明的编写,降低开发难度。
摘要由CSDN通过智能技术生成

PInvoke是Platform Invoke的缩写。开发过程中经常遇到C#项目需要调用Native C++编写的Dll,还有就是有时候需要调用WindowsAPI,而事实上,某些Windows API也是存在于Native C++ dll或者是C dll存在的。PINVOKE是其中一种方式。

有一本书《精通.Net互操作》我还没有读,但是从目录来看,书中介绍了三大方法来实现.Net与Native dll之间的交互,一个是PINVOKE;第二个是通过C++ Clr进行一次封装,经由C# ==> C++Clr ==>Native C++;第三种是通过COM的方式。其中前两种方式在项目开发中我都是用过,个人倾向是,如果是调用Windows API,采用PINVOKE方式;如果需要调用的是自己项目组内编写的Native C++ dll,我倾向采用C++ Clr封装过度的形式,这样的好处是减少.Net工程与Native C++之间的耦合性。

PInvoke使用方法是有固定套路的,有一个非常好的网站(http://pinvoke.net/)提供了大量的Windows API在C#中的声明方法,另外就是还提供了一个VS的插件,利用该插件可以方便的将Windows API以PInvoke的声明方式插入到C#代码中,很是好用。减少了开发人员自己写PInvoke声明时,对于Windows API中的各种各样参数在C#中的对应类型的烦恼。

PInvoke插件 RedGate.PInvokeExtension VS平台调用插件 PInvoke 平台调用 调用C++ 调用系统 C#C++, Search Module: Directory Constants Delegates Enums Interfaces Structures Desktop Functions: advapi32 avifil32 cards cfgmgr32 comctl32 comdlg32 credui crypt32 dbghelp dbghlp dbghlp32 dhcpsapi difxapi dmcl40 dnsapi dtl dwmapi faultrep fbwflib fltlib fwpuclnt gdi32 gdiplus getuname glu32 glut32 gsapi hhctrl hid hlink httpapi icmp imm32 iphlpapi iprop irprops kernel32 mapi32 MinCore mpr mqrt mscorsn msdelta msdrm msi msports msvcrt ncrypt netapi32 ntdll ntdsapi odbc32 odbccp32 ole32 oleacc oleaut32 opengl32 pdh powrprof printui propsys psapi pstorec query quickusb rasapi32 rpcrt4 scarddlg secur32 setupapi shell32 shlwapi twain_32 unicows urlmon user32 userenv uxtheme version wer wevtapi winfax winhttp wininet winmm winscard winspool wintrust winusb wlanapi ws2_32 wtsapi32 xolehlp xpsprint Smart Device Functions: aygshell coredll ipaqutil rapi Glossary distributed computing LibHolocaust Marshaling Marshalling Marshalling PInvoke test pinvoke Show Recent Changes Subscribe (RSS) Misc. Pages Comments FAQ Helpful Tools Playground Suggested Reading Website TODO List Support Forum Download Visual Studio Add-In Terms of Use Privacy Policy Create page PInvoke (glossary) Summary The mechanism provided by the CLR that enables managed code to call static DLL exports. Access PInvoke.net directly from VS: Terms of Use Edit This Page Find References Show Printable Version Revisions Show changes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值