C#中dllimport用法

    dllimport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。
    dllimport属性应用于方法,要求最少要提供包含入口点的dll的名称。
    dllimport的定义如下:
      [AttributeUsage(AttributeTargets.Method)]
    public class DllImportAttribute: System.Attribute
    {
     public DllImportAttribute(string dllName) {…} //定位参数为dllName
     public CallingConvention CallingConvention; //入口点调用约定
     public CharSet CharSet;                                  //入口点采用的字符接
     public string EntryPoint;                                 //入口点名称
     public bool ExactSpelling;                              //是否必须与指示的入口点拼写完全一致,默认false
     public bool PreserveSig;                                 //方法的签名是被保留还是被转换
     public bool SetLastError;                                 //FindLastError方法的返回值保存在这里
     public string Value { get {…} }
    } 

    用法示例:
    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
    以上是用来写入ini文件的一个win32api。
    
    用此方式调用Win32API的数据类型对应:DWORD=int或uint,BOOL=bool,预定义常量=enum,结构=struct。

相关文章:

  1. C#和C++混合编程的一些tips 最近帮朋友写个小东西的时候,刚好用到了C#和C++的混合编程,记录一些tips供日后参考。 首先说明下环境:C#调用C++的库函数,C++建立一个非托管类库项目,C#项目引用之。继续阅读 »...
  2. CQRS体系结构模式 本文介绍了CQRS模式的基本结构,并对其中一些重要概念作了注释,也是我在实践和思考当中总结出来的内容(PS:转载请注明出处)。学习过DDD 而刚刚开始CQRS的朋友,在阅读一些资料的时候势必会感到疑惑,希望本文能够帮助到这些朋友。比如最开始阅读的时候,我也不知道为什么一定要通过领域事件去更改对象状态,而不是在对象状态变更的时候,去触发领域事件,因为当时我仍然希望能够在Domain Model中方便地使用getter/setter,我当时也希望能够让Domain Model同时适应于经典DDD和CQRS架构。在经过多次尝试后发现,这种做法是不合理、不可取的,也正如Udi Dahan所说:CQRS是一种模式,既然是模式,就是用来解决特定问题的。 继续阅读 »...
  3. PostGreSQL之MVCC代码分析(1):概览 Transaction启动时形成快照就是要记录该Transaction可见的TransactionID,排除不可见的ID。PostGreSQL中每一个版本的数据有两个ID,其中一个是CreationID即插入该数据的TransactionID,一个是ExpiredID,即删除或更新该数据的TransactionID。对一个Transaction可见的数据的ID要满足以下条件: 1.CreationID当前TransactionID或ExpiredID不存在 Transaction启动形成快照的过程: 遍历当前所有活动的Transaction,记录在一个活动Transaction的ID数组中;根据Transaction的先后顺序,选择当前Transaction可见的最小TransactionID,记录在xmin,选择可见的最大TransactionID,记录在xmax中。 PostGreSQL8.5中进行最终的版本选择是在从外存中获取一个页面的数据之后,由一个检验函数(HeapTupleSatisfiesMVCC等一系列函数)检验所有该页面数据的数据对当前Transaction的可见性,如果不可见,则将数据除去,最后返回所有可见数据。继续阅读 »...
  4. 几种用户相似度计算方法及其优缺点 注:我毕设要做一个垂直搜索引擎中的用户推荐项目,这些是我摘录的一些资料和相关分析。     进行用户协同过滤时,一个关键问题是如何计算用户之间的相似性。比较常见的计算用户相似度的算法有余弦相似性、皮尔森系数、调整余弦相似性三种。     这三种相似性都是基于一个称为用户-项目矩阵的数据结构来进行计算的。该数据结构如下:         余弦相似性:把用户评分看作是n维项目空间上的向量,通过计算两个向量之间的夹角余弦来度量两个用户之间的相似性。     皮尔森系数:又称相关相似性,通过Peason相关系数来度量两个用户的相似性。计算时,首先找到两个用户共同评分过的项目集,然后计算这两个向量的相关系数。     调整余弦相似性:将余弦相似性中的向量,减去用户平均评分向量后,再计算夹角余弦以修正不同用户评分尺度不同的问题。     在数据比较稀疏的情况下,这几种方法均存在一定问题:余弦相似性和调整余弦相似性对于用户未评价项目评分为0的假设;皮尔森系数中用户共同评分项目集可能很小。     在垂直搜索引擎中,用户数据具有相当的稀疏性。所以需要通过一定的手段来消除这种稀疏性。我的思路:     1.垂直搜索中存在一个项目的目录(树形结构),如果自顶向下进行评分,并将子项目分数与父项目分数按一定规则运算后作为最后评分。从而填充稀疏矩阵为密集矩阵。     2.按照密集矩阵进行推荐。...
  5. 海量数据面试题举例 大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。继续阅读 »...

发表评论

无觅相关文章插件,快速提升流量