注意CreateProcessW函数

原创 2006年04月11日 20:42:00

看下面这个代码有什么问题:

 

#define PROCESS_NAME _T(“C://Windows/NotePad.ext”)

 

    if (!CreateProcessW(NULL, PROCESS_NAME, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInformation))

 

这里的问题是你不能传一个const字符串给CreateProcessW. MSDN上一些说明CreateProcessW:

 

假如你传入一个const 字符串给Unicode版本的函数(CreateProcessW)会返回失败。

 

但是MSDN没有解释为什么会失败。写CreateProcessW函数的开发人员在代码中需要临时修改这个输入字符串为了从参数中分离出执行程序的名字。这里就有两个问题。

 

第一个是显而易见的:你不能传入constant字符串。第二个是:你不能在多线程中使用相同的内存调用CreateProcessCreateProcess在返回之前会恢复lpCommandLine的字符串内容,如果lpCommandLine的内容已经不是原来传入的内容时就会存在一个时间顺序的问题。因此你有两个线程调用CreateProcess使用相同的内存,一些CreateProcess的调用可能会没有命令行参数,而一些会有我们所期望的命令行参数。

 

 

 

 

 

 

 

 

CreateProcessW的参数陷阱

CreateProcessW的参数陷阱 今天一个朋友提到以前在DELPHI 7中运行正常的CreateProcess代码在XE2总是报内存地址非法写入错误。当时调试了一下,果真如此,颇感奇怪...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2016年04月24日 23:13
  • 1210

CreateProcessW的参数陷阱

CreateProcessW的参数陷阱 今天一个朋友提到以前在DELPHI 7中运行正常的CreateProcess代码在XE2总是报内存地址非法写入错误。当时调试了一下,果真如此,颇感奇怪...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2016年04月24日 23:13
  • 1210

Qt程序打包发布方法(使用官方提供的windeployqt工具)

Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt...
  • spw_1201
  • spw_1201
  • 2017年03月16日 11:07
  • 244

VLOOKUP函数使用及注意事项

·  VLOOKUP 的语法结构 VLOOKUP用于在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值 VLOOKUP(lookup_value,table_arra...
  • Icesteam
  • Icesteam
  • 2017年03月11日 23:09
  • 1005

Oracle 中常用函数注意事项

1. nvl(字段,‘x’)字段值等于null就这个函数得到的结果就是'x',一般用于存在空值比较的情况下,比如字段a与字段b都是int型,其中一个等于null另一个为非空值,你使用anvl(字段,-...
  • Denghejing
  • Denghejing
  • 2014年11月18日 17:28
  • 880

C语言——使用scanf函数时需要注意的问题

转自:http://blog.csdn.NET/wayne92   scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好...
  • qq_31108501
  • qq_31108501
  • 2016年12月01日 18:21
  • 1552

虚函数使用注意事项

转载自:昵称:welkinwalker 定义:虚函数就是给函数的前边加上 virtual 就可以了,虚函数必须是非静态的成员函数,   没有继承特性的函数不能为虚函数。   作用: 虚函数主要是为了...
  • zhaojinjia
  • zhaojinjia
  • 2013年09月25日 16:07
  • 2105

(一二五)第十一章复习题

1.使用成员函数为Stonewt类重载乘法运算符,该运算符将数据成员与double类型的值相乘。注意用英石和磅表示时,需要进位。也就是说,将10英石8磅乘以2等于21英石2磅。 答: Stonew...
  • qq20004604
  • qq20004604
  • 2016年01月23日 02:27
  • 378

scanf函数总结:注意事项及例程

一、scanf函数小结 1>scanf函数的说明及其注意事 scanf函数说明:     a. 如果使用这个函数,要包含一个头文件 stdio.h。     b.scanf函数是一个阻塞式函数:...
  • zjqx_w
  • zjqx_w
  • 2015年07月16日 09:38
  • 426

OpenGL入门学习之十六——在Windows系统中显示文字

本课我们来谈谈如何显示文字。 OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。 各种流行的图形操作系统,例如W...
  • u012309398
  • u012309398
  • 2014年06月26日 15:21
  • 558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:注意CreateProcessW函数
举报原因:
原因补充:

(最多只允许输入30个字)