windows作業介紹

來源:互聯網
上載者:User

Windows提供了一個作業(job)核心對象,它允許你將進程組合在一起並建立一個"沙箱"來限制進程能夠做什麼.最好將工作物件想象成一個進程容器.但是,即使作業中只包含一個進程,也是非常有用的,因為這樣可以對進程施加平時不能施加的限制.

1、CreateJobObject
功能:建立一個新的作業核心對象(若該作業已經存在,則返回一個指向該作業的控制代碼)

函數定義:
HANDLE WINAPI CreateJobObject(
__in  LPSECURITY_ATTRIBUTES lpJobAttributes,
__in  LPCTSTR lpName
);

__in LPSECURITY_ATTRIBUTES lpJobAttributes       改作業的安全性描述元
__in  LPCTSTR lpName      作業名字

2
、OpenJobObject
功能:開啟一個作業核心對象

函數定義:
HANDLE WINAPI OpenJobObject(
__in          DWORD dwDesiredAccess,
__in          BOOL bInheritHandles,
__in          LPCTSTR lpName
);

__in          DWORD dwDesiredAccess           對該作業的存取權限 
__in          BOOL bInheritHandles                  指示該作業是否可被子進程繼承       
__in          LPCTSTR lpName                         工作物件名

3
、IsProcessInJob 
功能:驗證某一個進程是否存在於作業中

函數定義:
BOOL WINAPI IsProcessInJob(
__in          HANDLE ProcessHandle,
__in          HANDLE JobHandle,
__out         PBOOL Result
);

__in          HANDLE ProcessHandle        被測試進程的控制代碼
__in          HANDLE JobHandle               作業的控制代碼,若為空白,則測試進程是否存在於任一作業中
__out         PBOOL Result                      儲存測試結果的指標

4
、SetInformationJobObject
功能:給作業加上各種限制

函數定義:
BOOL WINAPI SetInformationJobObject(
__in          HANDLE hJob,
__in          JOBOBJECTINFOCLASS JobObjectInfoClass,
__in          LPVOID lpJobObjectInfo,
__in          DWORD cbJobObjectInfoLength
);

__in          HANDLE hJob       標識要限制的作業    
__in          JOBOBJECTINFOCLASS JobObjectInfoClass   枚舉類型,用於指明要使用的限制類型
__in          LPVOID lpJobObjectInfo     包含限制設定值的資料結構的地址
__in          DWORD cbJobObjectInfoLength        指明第三個參數的大小

限制類型

第二個參數的值

第三個參數的結構

基本限制

JobObjectBasicLimitInformation

JOBOBJECT_BASIC_LIMIT_INFORMATION

擴充基本限制

JobObjectExtendedLimitInformation

JOBOBJECT_EXTENDED_LIMIT_INFORMATION

基本UI限制

JobObjectBasicUIRestrictions

JOBOBJECT_BASIC_UI_RESTRICTIONS

安全性限制

JobObjectSecurityLimitInformation

JOBOBJECT_SECURITY_LIMIT_INFORMATION

關聯完成連接埠限制

JobObjectAssociateCompletionPortInformation

JOBOBJECT_ASSOCIATE_COMPLETION_PORT

5、QueryInformationJobObject 
功能:查詢工作物件的資訊

函數定義:
BOOL WINAPI QueryInformationJobObject(
__in          HANDLE hJob,
__in          JOBOBJECTINFOCLASS JobObjectInfoClass,
__out         LPVOID lpJobObjectInfo,
__in          DWORD cbJobObjectInfoLength,
__out         LPDWORD lpReturnLength
);

__in          HANDLE hJob        標識要查詢的作業   
__in          JOBOBJECTINFOCLASS JobObjectInfoClass     枚舉類型,用於指明要使用的限制類型
__out         LPVOID lpJobObjectInfo                                     包含限制設定值的資料結構的地址   
__in          DWORD cbJobObjectInfoLength                         指明第三個參數的大小
__out         LPDWORD lpReturnLength   指明多少位元組放入了緩衝,如果你願意的話,可以(並且通常)為該參數傳遞N U L L

其中,第三個和第四個參數也有和 SetInformationJobObject中同樣的關係。

6、
AssignProcessToJobObject
功能:將進程放入作業

函數定義:
BOOL WINAPI AssignProcessToJobObject(
__in          HANDLE hJob,
__in          HANDLE hProcess
);

__in          HANDLE hJob           存放進程的作業
__in          HANDLE hProcess    將放作業的進程

7、
TerminateJobObject
功能:殺死作業內的所有進程

函數定義:
BOOL WINAPI TerminateJobObject(
__in          HANDLE hJob,
__in          UINT uExitCode
);

__in          HANDLE hJob     將要執行該操作的作業
__in          UINT uExitCode   所有進程的結束代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.