microsoft mobile 移动应用开发宝典----读书笔记(14)

 各种与本地代码互操作技术(包括平台底层、第三方SDK、自己编写的C++代码)
1.理解平台调用服务
平台调用服务Platfrom Invocation Service,PInvoke
使用PInvoke,可以再托管代码中调用(用C或C++编写的)本地方法
这个功能位于System.Runtime.InteropServices命名空间
www.pinvoke.com
extern关键字
添加System.Runtime.InteropService.DllImportAttribute类型的属性(attribute),公共字段
C语言:方法的名称就是入口点的名称
C++:改编mangling
反改编unmaigling,Depends.exe或Dumpbin.exe工具显示DLL中的函数
示例:NativeDll

1)封送marshaling
.NET类型和默认的封送行为
强制制定封送行为:MarshalAsAttribute
UnmanagedType的成员
本地结构
类class:类的实体位于堆中,封送的为“引用”
结构struct:封送的是堆栈stack中的“值”
拆收器marshaler

2)NativeMethods
Compact Framework不支持CAS(代码访问安全Code Access Security)
管理PInvoke声明时,将所有仅在内部使用的结构放在NativeMethods类中

3)Media示例

4)对托管代码进行回调
三种方法:使用Windows消息,MessageWindow类
  通过系统事件句柄和后台线程上的API方法WaitForSingleObject
  将托管的委托传给本地API函数:该委托以函数指针的形式封送
MessageWindow:RegisterWindowMessage
已命名事件(named event)
EventWaitHandle类
函数指针

2.理解COM互操作
组件对象模型(Component Object Model,COM)是一种本地的面向对象编程模型
一个组件能都支持多个接口,每个接口通过一个唯一的Guid来识别

1)COM库的导入
.dll文件或类型库.tlb文件

2)接口的手动定义
访问CEMAPI的主要接口为IMAPISession
接口类型
后期绑定late binding
ComInterfaceType枚举的三个成员:InterfaceIsDual/InterfaceIsDispatch/InterfaceIsIUnknown

COM错误处理
设备相关的问题
www.inthehand.com/WindowsMobile.aspx
共用体结构

3)ActiveX控件
Compact Framework不直接支持ActiveX控件包容(hosting)
msdn2.microsoft.com/zh-cn/library/aa446515.aspx


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值