我目前正在尝试展开this以允许我通过管理作业对象来获取更多可能性。但是,每当我尝试设置Limit对象中定义的JobMemoryLimit时,我都会遇到问题。
我创建了一个函数,它通过一些额外的步骤复制JobObject构造函数中的set信息逻辑。首先,我设置了附加标志
info.LimitFlags |= (uint)JobObjectLimitFlags.JOB_OBJECT_LIMIT_JOB_MEMORY;
仅此一项就足以破坏我的代码。当我调用SetInformationJobObject时,它返回false并且不修改作业。我对Marshal.GetLastWin32Error()的调用返回了ERROR_BAD_LENGTH的代码。设置extendedInfo.JobMemoryLimit没有任何区别。
我应该注意,在这个例子中,我试图修改现有的Job,但我已经尝试过两种方式。将上面的行插入JobObject构造函数仍然会导致从SetInformationJobObject返回false,但现在错误代码为0。
在这种情况下ERROR_BAD_LENGTH是什么意思,为什么通过更改我的标志来触发它?
答案 0 :(得分:0)
事实证明,给定示例中的对象结构对我的系统来说是不正确的。我不知道这是否仅仅是作者所采用的路径找不到的示例的问题,或者是否有关于架构的更改。
我发现并制作的所有工作代码在32位模式下运行时使用4个字节用于LimitFlags,在64位模式下运行时使用8个字节。