gpt4 book ai didi

c++ - VirtualBox IGuestSession::ProcessCreate 返回 0x8000FFFF (E_UNEXPECTED)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:47 26 4
gpt4 key购买 nike

因此,我正尝试从主机在 guest session 中执行一个进程,但我一直从中获得 0x8000FFFF (E_UNEXPECTED) HRESULT。由于我得到的是 COM 错误而不是 VBOX_E_IPRT_ERROR,这让我觉得我的 SAFEARRAY 是问题所在,而不是实际参数,如果这有意义的话。我对 COM 不太熟悉,所以这可能只是我使用 SAFEARRAY 错误的情况。无论哪种方式,这是我现在正在尝试的代码:

SAFEARRAY  *args_and_env, *creation_flags;
SAFEARRAYBOUND arrayDim[1];
arrayDim[0].lLbound= 0;
arrayDim[0].cElements= 1;

args_and_env = SafeArrayCreate(VT_LPWSTR,1,arrayDim);
SafeArrayPutElement(args_and_env, 0, L"");

creation_flags = SafeArrayCreate(VT_INT, 1, arrayDim);
int flag = ProcessCreateFlag_None;
SafeArrayPutElement(creation_flags, 0, &flag);

IGuestProcess *proca;
rc = guestSession->ProcessCreate(proc, args_and_env, args_and_env, creation_flags, 0, &proca);

IGuestSession::ProcessCreate 的文档如下:

IGuestProcess IGuestSession::processCreate(
[in] wstring executable,
[in] wstring arguments[],
[in] wstring environmentChanges[],
[in] ProcessCreateFlag flags[],
[in] unsigned long timeoutMS)

函数声明如下:

HRESULT STDMETHODCALLTYPE ProcessCreate( 
/* [in] */ BSTR aExecutable,
/* [in] */ SAFEARRAY * aArguments,
/* [in] */ SAFEARRAY * aEnvironmentChanges,
/* [in] */ SAFEARRAY * aFlags,
/* [in] */ ULONG aTimeoutMS,
/* [retval][out] */ IGuestProcess **aGuestProcess)

我还尝试将 NULL 传递给参数和 environmentChanges,因为我不想使用它们中的任何一个,但结果相同。

最佳答案

当我测试我的任务时,我意识到如果您使用没有密码的 session 操作系统可能会出现此问题。您必须设置密码并使用密码创建 session :

BSTR login = ...;
BSTR passsword = ...;
BSTR empty = SysAllocString(L"");
HRESULT rc = guest->CreateSession(login, password, empty, sessionName, &guestSession);

然后创建一个guest进程

关于c++ - VirtualBox IGuestSession::ProcessCreate 返回 0x8000FFFF (E_UNEXPECTED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com