返回顶部
首页 > 资讯 > 精选 >C#调用Windows API之参数类型的示例分析
  • 103
分享到

C#调用Windows API之参数类型的示例分析

2023-06-18 00:06:47 103人浏览 八月长安
摘要

小编给大家分享一下C#调用windows api之参数类型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#调用Windows API之参数类型1、数值

小编给大家分享一下C#调用windows api之参数类型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

C#调用Windows API之参数类型1、

数值型直接用对应的就可。

(DWord -> int , WORD -> Int16)

C#调用Windows API之参数类型2、

API中字符串指针类型 -> .net中string

C#调用Windows API之参数类型3、

API中句柄 (dWord)  -> .net中IntPtr

C#调用Windows API之参数类型4、

API中结构   -> .net中结构或者类。注意这种情况下,要先用StructLayout特性限定声明结构或类

公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递给需要指定布局的非托管代码,则显式控制类布局是重要的。它的构造函数中用LayoutKind值初始化 StructLayoutAttribute 类的新实例。 LayoutKind.Sequential 用于强制将成员按其出现的顺序进行顺序布局。

LayoutKind.Explicit 用于控制每个数据成员的精确位置。利用 Explicit, 每个成员必须使用 FieldOffsetAttribute 指示此字段在类型中的位置。如:

[StructLayout(LayoutKind.Explicit,   Size=16, CharSet=CharSet.Ansi)]  public class MySystemTime   {  [FieldOffset(0)]public ushort wYear;   [FieldOffset(2)]public ushort wMonth;  [FieldOffset(4)]public ushort wDayOfWeek;   [FieldOffset(6)]public ushort wDay;   [FieldOffset(8)]public ushort wHour;   [FieldOffset(10)]public ushort wMinute;   [FieldOffset(12)]public ushort wSecond;   [FieldOffset(14)]public ushort wMilliseconds;   }

C#调用Windows API之参数类型实例说明:

下面是针对API中OSVERSioNINFO结构,在.net中定义对应类或结构的例子:

      //.net中声明为类  [ StructLayout( LayoutKind.Sequential )]     public class OSVersionInfo   {     public int OSVersionInfoSize;  public int majorVersion;   public int minorVersion;  public int buildNumber;  public int platfORMId;  [ MarshalAs( UnmanagedType.ByValTStr,   SizeConst=128 )]      public String versionString;  }  //或者  //.net中声明为结构  [ StructLayout( LayoutKind.Sequential )]    public struct OSVersionInfo2   {  public int OSVersionInfoSize;  public int majorVersion;   public int minorVersion;  public int buildNumber;  public int platformId;   [ MarshalAs( UnmanagedType.ByValTStr,   SizeConst=128 )]      public String versionString;  }

此例中用到MashalAs特性,它用于描述字段、方法或参数的封送处理格式。用它作为参数前缀并指定目标需要的数据类型。例如,以下代码将两个参数作为数据类型长指针封送给 Windows API 函数的字符串 (LPStr):

[MarshalAs(UnmanagedType.LPStr)]  String existingfile;  [MarshalAs(UnmanagedType.LPStr)]  String newfile;

C#调用Windows API之参数类型注意事项:

注意结构作为参数时候,一般前面要加上ref修饰符,否则会出现错误:对象的引用没有指定对象的实例。

[ DllImport( "kernel32",    EntryPoint="GetVersionEx" )]   public static extern bool    GetVersionEx2( ref OSVersionInfo2 osvi );

以上是“C#调用Windows API之参数类型的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: C#调用Windows API之参数类型的示例分析

本文链接: https://lsjlt.com/news/294638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#调用Windows API之参数类型的示例分析
    小编给大家分享一下C#调用Windows API之参数类型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#调用Windows API之参数类型1、数值...
    99+
    2023-06-18
  • js数据类型之数字类型的示例分析
    这篇文章主要介绍了js数据类型之数字类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们具体介绍一下js的数据类型其中一种。一、...
    99+
    2024-04-02
  • PHP数据类型之NULL型的示例分析
    这篇文章给大家分享的是有关PHP数据类型之NULL型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1:什么是NULL?对于MULL这个单词来说,他代表着空,并非是错误(false)以及0,也不是我们常用...
    99+
    2023-06-15
  • JavaScript基础之数据类型的示例分析
    这篇文章主要为大家展示了“JavaScript基础之数据类型的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript基础之数据类型的示例分析...
    99+
    2024-04-02
  • C语言中数据类型的示例分析
    这篇文章将为大家详细讲解有关C语言中数据类型的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(壹) 数据类型介绍前面我们已经学习了基本的内置类型,以及他们所占存储空间的大小。:类型的意义...
    99+
    2023-06-29
  • C#类型和C#变量的示例分析
    这篇文章主要介绍C#类型和C#变量的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#类型有两种:值类型(value type)和引用类型(reference type)。值类型变量直接包括它们的数据,而引用...
    99+
    2023-06-17
  • C#中调用C类型dll入参为struct的问题分析
    这篇文章将为大家详细讲解有关C#中调用C类型dll入参为struct的问题分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言C# 可以通过 DllImport 的方式引用 C 类型的 dll。但很多 ...
    99+
    2023-06-14
  • Javascript基础之类型的示例分析
    这篇文章主要介绍了Javascript基础之类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本类型  Javascript有5...
    99+
    2024-04-02
  • ASP.NET中Web API参数绑定的示例分析
    这篇文章主要介绍了ASP.NET中Web API参数绑定的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。操作方法在WebAPI控制器中可以有一个或多个不同类...
    99+
    2023-06-29
  • redis数据类型的示例分析
    这篇文章主要介绍redis数据类型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis支持5种数据类型,它们描述如下:Strings - 字符串Redis的字符串是字节...
    99+
    2024-04-02
  • javascript数据类型的示例分析
    这篇文章将为大家详细讲解有关javascript数据类型的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. undefined 和 nullundefined是...
    99+
    2024-04-02
  • MySQL并发参数调整的示例分析
    这篇文章主要介绍了MySQL并发参数调整的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mysql并发参数调整从实现上来说,MySQ...
    99+
    2024-04-02
  • Python中函数的参数类型实例分析
    今天小编给大家分享一下Python中函数的参数类型实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、Python的函...
    99+
    2023-07-02
  • JavaScript中引用类型之基本包装类型的示例分析
    这篇文章主要介绍JavaScript中引用类型之基本包装类型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:为了操作基本类型值,ECDMAScript提供了3个特殊...
    99+
    2024-04-02
  • ECMAScript数据类型之Number类型实例分析
    这篇文章主要介绍“ECMAScript数据类型之Number类型实例分析”,在日常操作中,相信很多人在ECMAScript数据类型之Number类型实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ECM...
    99+
    2023-06-30
  • JavaScript中数据类型的示例分析
    这篇文章主要介绍JavaScript中数据类型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一,数据类型以下内容基于ES5(ES6引入了一种新的原始数据类型Symbol,表...
    99+
    2024-04-02
  • JS数值Number类型的示例分析
    小编给大家分享一下JS数值Number类型的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Number 问题下面的问题你都能回答对了吗?0.1 + 0.2 == 0.3 成立吗?....
    99+
    2024-04-02
  • Typescript中数据类型的示例分析
    这篇文章将为大家详细讲解有关Typescript中数据类型的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。是什么typescript和javascript几乎一样,拥有相同的数据类型,另外在jav...
    99+
    2023-06-29
  • Mysql中并发参数调整的示例分析
    这篇文章将为大家详细讲解有关Mysql中并发参数调整的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。查询缓存优化不建议使用,一般是在应用服务做缓存层,毕竟数据并发能力是有限的概述当开始Mysql的...
    99+
    2023-06-21
  • C++中占位参数和默认参数的示例分析
    这篇文章将为大家详细讲解有关C++中占位参数和默认参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1,默认参数在c++中,函数的形参列表中的形参是可以有默认值的。语法: 返回值类型 函数名 (...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作