文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

VB.NET平台调用是怎么执行操作

2023-06-17 21:21

关注

这篇文章主要为大家展示了“VB.NET平台调用是怎么执行操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET平台调用是怎么执行操作”这篇文章吧。

Windows API就是Windows系统的API函数简称(Application Program Interface,即:应用程序接口函数),它是Windows操作系统提供给各种开发基于Windows平台应用软件的开发语言的一些公用的函数,这些函数一般都比较底层,所以当各种开发语言使用自带的函数或类库已无法解决问题时,调用Windows API函数往往是一种非常直接、有效的解决方法。但由于在程序中调用Windows API函数一般都很复杂,所以对于程序员来说,是否能够灵活的使用Windows API函数,往往也是其水平高低的一个重要标志。但自从微软推出.NET框架以后,各种开发基于.NET平台下的程序语言,如VB.NET、Visual C#等却很少使用Windows API函数,并且微软公司也不像以前那样,提倡在这些.NET开发语言中使用Windows API函数,其主要的原因如下:

.NET框架所附带的类库.NETFrameWork SDK是一个内容丰富、功能强大的软件开发包,各种Windows API函数所实现的各种功能几乎都可以在这个软件开发包中找到与之对应的部分。

微软VB.NET、Visual C#等目的是编写跨平台的应用程序,如果在VB.NET、Visual C#等中使用Windows API函数,这也就注定了编写出的程序只能运行于Windows平台之下,而弱化了.NET的跨平台能力。这也就是为什么微软不提倡在VB.NET平台调用 Windows API函数的原因。

虽然微软并不提倡在VB.NET、Visual C#中调用Windows API函数,但由于目前.NET框架推出时间较短,.NETFrameWork SDK中提供的类库还并不足以完全替换Windows API函数的所有功能,所以在某些时候,.NET开发语言还是必须要调用Windows API函数。

VB.NET平台调用、托管DLL、非托管DLL简介:

托管DLL就是能够在公共语言运行库(Common Language Runtime,简称CLR)中能够直接引用的,并且扩展名为“DLL”的文件。具体所指就是封装各种命名空间所在的DLL文件,如System.dll 等。非托管DLL就是平常所的动态链接库等,其中就包括了封装所有Windows API函数的DLL文件。各种非托管DLL中的函数在公共语言运行库中不能直接被调用,而需要经过.NET框架提供的平台调用服务后才可以。

平台调用是.NET框架为VB.NET、Visual C#等.NET开发语言提供的一种服务,用以在托管代码中引入各种非托管DLL中封装的函数(其中包括Windows API函数)。平台调用依赖于元数据在运行时查找导出函数并封装其参数。

平台服务调用非托管DLL中的函数的流程图

公共语言运行库利用平台服务调用非托管DLL中的函数的流程图


在托管代码中使用平台调用服务调用非托管DLL中封装的函数时,平台服务将依次执行以下操作:
1.查找包含该函数所在的DLL文件。
2.如果找到,则将该DLL文件 加载到内存中。
3.查找函数在内存中的地址并将其参数推到堆栈上,并封送所需的数据。
4.将控制权转移给非托管函数。 这样整个函数调用完成。

在VB.NET平台调用服务,申明Windows API函数主要有二种具体的实现方法:
1.使用DllImport特征类来申明Windows API函数。
2.使用“Declare”语句来申明Windows API函数。

这二种方法虽有异曲同工之效,但在繁简上却有很大差异,***种方法申明过程比较复杂,很容易在申明Windows API函数时出错,所以并不提倡。而第二种方法相对简单,并且又保存了以前Visual Basic中的很多语法,所以在平常时大都使用这种方法来申明Windows API函数。

以上是“VB.NET平台调用是怎么执行操作”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯