加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

createprocess,createprocessA,createprocessW的区别

(2013-06-23 13:05:13)
标签:

windowsapi

分类: WindowsAPI

createprocess,createprocessA,createprocessW的区别

 

在Windows编程时,Windows提供了两套API,以便同时支持宽字符和窄字符。宽字符版本的函数/结构体等都以W结尾,窄字符的则以A结尾。


比如你写CreateProcess,则在宽字符版本中实际调用的是CreateProcessW,窄字符版本中调用的则是CreateProcessA。
其实windows api中很多函数都有这三种表示方法,实际上完成功能的是两个宽字符版本CreateProcessW和窄字符版本CreateProcessA


CreateProcess则默认的调用CreateProcessW

CreateProcessA -> The ANSI version of this function

CreateProcessW -> The Unicode version of this function

请参照http://msdn.microsoft.com/en-us/library/ms682425.aspx

在Win32位API中,创建进程是由CreateProcess()完成的。这实际上是个宏定义,

Windows NT 头文件使用宏,如下所示选择相应的 API:
#ifdef UNICODE
#define CreateProcess CreateProcessW
#else
#define CreateProcess CreateProcessA
#endif // !UNICODE

根据不同的情况定义成CreateProcessA ()或CreateProcessW()之一

两个函数的区别仅在于字符串的表达,前者采用ASCII字符,而后者采用“宽字符”、即Unicode。

实际上Windows的内部都采用宽字符,所以前者只是把字符串转换成宽字符格式,然后调用后者。

总结:

以 A 为结尾的是   窄字符   即   ASCII字符

以 W 为结尾的是   宽字符   即   Unicode型
两个函数的区别仅在于字符串的表达

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有