创建进程 W 中的错误:无法将参数 9 从 'STARTUPINFO' 转换为'LPSTARTUPINFO &'

Error in CreateProcessW: cannot convert parameter 9 from 'STARTUPINFO' to 'LPSTARTUPINFO &'

本文关键字:STARTUPINFO LPSTARTUPINFO 转换 参数 进程 错误 创建      更新时间:2023-10-16

我理解startup_info是指向STARTUPINFO结构的指针

我有一个函数,我通过引用传递startup_info到它。所以我们可以说我通过引用传递了一个指针

void cp(....., LPSTARTUPINFO & startup_info) {
  CreateProcessW(....., startup_info);
}

让我们假设我在函数caller()

中调用函数cp
void caller() {
  STARTUPINFO startup_info; 
  cp(....., startup_info); // error occurs here, I cannot convert 'STARTUPINFO' to 'LPSTARTUPINFO &'
}

它会给我错误信息:CreateProcessW中的错误:无法将参数9从'STARTUPINFO'转换为'LPSTARTUPINFO &'

但是由于statup_info是一个指针,我应该能够将其传递给函数cp对吗?

编辑:谢谢你的建议,但以下方法对我有效:LPSTARTUPINFO是指向STARTUPINFO结构体的指针

所以改成

void cp(....., LPSTARTUPINFO startup_info_ptr) {
      CreateProcessW(....., startup_info_ptr); // pass in pointer of startup_info
}
void caller() {
      STARTUPINFO startup_info; 
      cp(....., &startup_info); // passing the address of startup_info
}

你有两个startup_info。在caller()中,它是STARTUPINFO(不是指针)。在cp()中,它是STARTUPINFO*&(对指针的引用)。为什么?这很可能是无意的。

我希望

:

void cp(....., STARTUPINFO* pStartup_info) {
  CreateProcessW(....., pStartup_info);
}
void caller() {
  STARTUPINFO startup_info; 
  cp(....., &startup_info);
}

在产品代码中,我避免了指针的p前缀,但我在这里使用它是为了消除两个startup_info的歧义。