无法使用 OpenJobObjectA 打开作业对象

问题描述 投票:0回答:1

我正在编写一个程序,它将使用

\BaseNamedObjects
打开
OpenJobObjectA
命名空间中存在的作业对象。下面是代码片段:

 hJob = OpenJobObjectA(JOB_OBJECT_QUERY, FALSE, "\\BaseNamedObjects\\SAC10680");
 if (hJob == NULL) {
     fprintf(stderr, "Failed to open job object. Error code: %d\n", GetLastError());
     return 1;
 }

现在,即使作业对象存在(我使用 winobj 进行验证),我也无法打开该对象。并出现以下错误:

Failed to open job object. Error code: 161

我知道错误 161 意味着路径无效。但事实并非如此!!

代码应该打开作业对象。

windows winapi
1个回答
0
投票

根据文档:OpenJobObjectA 函数

名称可以有“Global”或“Local”前缀,以显式打开全局或会话命名空间中的对象。名称的其余部分可以包含除反斜杠字符 () 之外的任何字符。

驱动程序在全局

\BaseNamedObjects
对象目录中创建一个命名事件对象。要从用户模式访问内核模式事件,请使用名称
Global\\Xxx

我同意RbMm,你应该尝试使用

Global\\SAC10680

© www.soinside.com 2019 - 2024. All rights reserved.