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 为结尾的是