• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






Kevin Gao

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2011年11月21日

C# API 如何保证使用托管对象的平台调用成功
摘要: 三、如何保证使用托管对象的平台调用成功? 如果在调用平台 invoke 后的任何位置都未引用托管对象,则垃圾回收器可能将完成该托管对象。这将释放资源并使句柄无效,从而导致平台invoke 调用失败。用 HandleRef 包装句柄可保证在平台 invoke 调... 阅读全文
posted @ 2011-11-21 12:00 Kevin Gao 阅读(23) 评论(0) 推荐(0)
 
C# API 如何保证使用托管对象的平台调用成功
摘要: 三、如何保证使用托管对象的平台调用成功?如果在调用平台 invoke 后的任何位置都未引用托管对象,则垃圾回收器可能将完成该托管对象。这将释放资源并使句柄无效,从而导致平台invoke 调用失败。用 HandleRef 包装句柄可保证在平台 invoke 调用完成前,不对托管对象进行垃圾回收。例如下面:FileStream fs = new FileStream( "a.txt", FileMode.Open );StringBuilder buffer = new StringBuilder( 5 );int read = 0;ReadFile(fs.Handle, bu 阅读全文
posted @ 2011-11-21 11:59 Kevin Gao 阅读(618) 评论(0) 推荐(1)
 
C# API 调用格式和参数类型
摘要: 一、调用格式 using System.Runtime.InteropServices; //引用此名称空间,简化后面的代码 //使用DllImportAttribute特性来引入api函数,注意声明的是空方法,即方法体为空。 [DllImport("user... 阅读全文
posted @ 2011-11-21 11:26 Kevin Gao 阅读(14) 评论(0) 推荐(0)
 
C# API 调用格式和参数类型
摘要: 一、调用格式using System.Runtime.InteropServices; //引用此名称空间,简化后面的代码//使用DllImportAttribute特性来引入api函数,注意声明的是空方法,即方法体为空。[DllImport("user32.dll")]public static extern ReturnType FunctionName(type arg1,type arg2,...);//调用时与调用其他方法并无区别可以使用字段进一步说明特性,用逗号隔开,如:[ DllImport( "kernel32", EntryPoint= 阅读全文
posted @ 2011-11-21 11:25 Kevin Gao 阅读(1632) 评论(0) 推荐(1)