微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 如何获取当前进程的作业对象(如果有)?

Windows Job Objects的上下文中,如何获取当前进程的作业对象(如果它在作业对象中)? IsProcessInJob函数允许我测试给定进程(例如当前进程)是否在给定(或任何)作业中 – 但它不会产生匹配作业的句柄.

解决方法

如果您只想查找正在运行的配额/限制,或者枚举作业中的所有其他进程,则无需获取当前进程的Job对象.

您可以使用NULL调用QueryinformationJobObject,这将是当前进程的Job对象.

> QueryinformationJobObject:http://msdn.microsoft.com/en-us/library/ms684925(VS.85).aspx
>工作对象:http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx

要回答具体问题,请致电IsProcessInJob,了解您是否在工作中.

您可以通过将NULL传递给QueryinformationJobObject来找到有关Job的所有内容

您的子进程将自动继承您的作业,除非您传递CREATE_BREAKAWAY_FROM_JOB且作业已设置JOB_OBJECT_LIMIT_BREAKAWAY_OK或JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK.在这些情况下,您可以根据需要将流程分配给新工作.

因此,在不知道句柄的情况下,您可以找到当前作业的所有内容,并在当前作业中分配子进程,或者如果您有权限,则可以在没有当前作业的情况下进行分配.即你可以做几乎手柄允许你做的所有事情.

唯一的例外是将其复制到另一个兄弟进程.如果您需要这样做,您必须让父进程以某种方式向您传递句柄值.

原文地址:https://www.jb51.cc/c/119033.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐