MVS编写MFC应用程序知识点总结

先声明一点,我是嵌入式方向的学生,因为一点需要编写MFC程序,这篇文章只是我接触MVSC++的一些个人记录。

  1. HINSTANCE和HWND的区别:二者都是表示句柄,前者是应用程序的句柄,后者是窗口的句柄。进程中的每个DLL模块被全局唯一的32字节的HINSTANCE句柄标识,只有在特定的进程内部有效,句柄代表了DLL模块在虚拟空间中的其实地址。在WIN32中,HINSTANCE和HMODULE的值是相同的,这两种类型可以替代使用。
  2. stdcall 是C++标准调用方式,WINAPI宏和CALLBACK宏来指定函数的调用方式为stdcall
  3. exteern “C”:为了解决C\C++的兼容问题,通用性更强。
  4. 应用程序调用DLL的第二种方法:(IpAddFun)GetProcAddress(hDll,MakeIntresource(1));其中MakeIntresource直接通过.def文件中为函数制定的顺序访问。MakeIntresource是一个通过序号获取函数名的宏//需要看具体的代码理解,暂未确定是这样。
  5. DLL程序入口函数DLLMain:注意大小写是区别的(仅导出资源的DLL可以没有DLLMain函数)。函数原型参数的意义:hMoudule参数:指定向DLL本身的实例句柄;ul_reason_for_call参数:指明了DLL被调用的原因,可以有以下4个取值:1、DLL_PROCESS_ATTACH:当DLL被进程第一次调用时,导致DLLMain函数调用,如果同一个进程后来再次调用此DLL时,操作系统只会增加DLL的使用次数。
  6. DLLMain函数:WINDOWS在加载DLL的时候,需要一个入口函数,就如同控制台或DOS程序需要MAIN函数、WIN32程序需要WINMAIN函数一样,WINDOWS在找不到DLLMain的时候,系统会从其他运行库中引入一个不做任何操作的缺省的DLLMain函数版本,并不意味着DLL可以放弃DLLMain函数,就像是默认的构造函数一样。DLLMain函数在DLL被加载和卸载时被调用,在单个现成的启动终止时,DLLMain函数也被调用,ul_reason_for_call指明了被调用的原因。原因有4种。
  7. APIENTRY定义为——stdcall,他以为着这个函数以标准Pascal的方式进行调用,也就是WINAPI方式;进程中的每个DLL模块被全局唯一的32字节的HINSTANCE和HMODULE的值是相同的,这两种类型可以替换使用,这就是函数参数hModule的来历。
  8. GetProcAddress(hDll,MAKEINTRESOURCE(1)),他直接通过.def文件中为add函数指定的顺序号访问add函数,MAKEINTRESOURCE是通过序号获取函数的宏。
  9. Dll文件的使用有两种方法:第一种:加载时动态链接:具体方法:#pragma commet(lib,”mydll.lib”) extern “c”_declspec(dllimport) int add(int a,int b);第二种:运行时动态链接:主要使用LoadLibrary和GetProcAddress,LoadLibrary返回值是HMOUDULE或HINSTANCE。
  10. 编译DLL文件的时候会提示无法启动程序DLL,但是DLL和LIB文件可以生成。
  11. PSAM卡生成过程密钥和加密数据之间若是加上PSAM卡产生随机数则会产生不响应错误。
  12. 产生随机数指令过程理解:压缩指令2字节变成1字节,可能压缩后返回的字符指针可与ASCLL表对应,也可能不可以与ASCLL码对应,都可以使用输出函数进行输出,没有规定的输出乱码,之后选择把没有对应ASCLL表的压缩字符再次拉伸而进行相关操作,这里(PSAM卡接口开发)需要拉伸返回的压缩指令提取字符数组表示的十六进制随机数。
  13. 外部认证中有一个随机数要从CPU生成,卡片默认有一个操作是使用CPU内部一个最近生成的随机数和外部认证指令里面的一个随机数,生成密钥,和由PSAM卡生成的在外部认证使用到的密钥对比,结果正确则由卡片返回9000
  14. 动态库的循环调用的过程中,要是循环调用的动态库都使用的是当前文件调用,则,当前文件为刚开始的调用的DLL动态库
  15. 做外部认证的时候,需要用到PSAM进行数据加密,要是找不到PSAM卡的密钥文件,添加一二级分散因子,同时指令的长度字节边长。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值