[转帖]C#如何调用非托管函数(二)-传递结构和类
作者:作者不详  发布日期:2011/06/12 17:49:19
[转帖]C#如何调用非托管函数(二)-传递结构和类

在上一篇 c# 如何调用非托管函数 中介绍了调用非托管函数的简单方法,其中传递的都是简单的值类型,如uint等。本篇将介绍如何传递结构或类到非托管函数。

以系统函数 GetSystemTime 为例,以下分别演示了如何传递结构和类。

一 传递结构 

参考MSDN可以知道他的定义为:

void WINAPI GetSystemTime(__out LPSYSTEMTIME lpSystemTime);

其中LPSYSTEMTIME 就是一个结构体:

typedef struct _SYSTEMTIME {
  WORD wYear;
  WORD wMonth;
  WORD wDayOfWeek;
  WORD wDay;
  WORD wHour;
  WORD wMinute;
  WORD wSecond;
  WORD wMilliseconds;
} SYSTEMTIME,
 *PSYSTEMTIME;

注意这里只是一个特例,并不是所有的情况既可以定义成结构类型也可以定义成类类型,通常我们应遵循以下原则:

  • 在非托管函数不要求任何间接寻址时使用按值传递的结构。
  • 在非托管函数要求一级间接寻址时使用按引用传递或按类传递的结构。
  • 在非托管函数要求二级间接寻址时使用按引用传递的类。

本文转自刘武作品
http://www.cnblogs.com/liuwu/archive/2009/09/26/1574327.html



参考:

 



本文来源:



C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


上一篇 下一篇