Go to the source code of this file.
◆ JOB_HANDLE_GROWTH
Definition at line 24 of file job.c.
◆ JOB_PROCESS_GROWTH
Definition at line 23 of file job.c.
◆ _Requires_exclusive_lock_held_()
| _Requires_exclusive_lock_held_ |
( |
UserLock |
| ) |
|
Definition at line 50 of file job.c.
54{
57
59
62 {
63 ERR(
"Failed to allocate a JOBINFO for job %p\n", pEJob);
65 }
66
69 {
70 ERR(
"Failed to create the atom table of job %p: 0x%lx\n", pEJob,
Status);
73 }
74
75 pJobInfo->
pEJob = pEJob;
76
79
80 TRACE(
"Created JOBINFO %p for job %p\n", pJobInfo, pEJob);
81 return pJobInfo;
82}
#define NT_SUCCESS(StatCode)
#define ExFreePoolWithTag(_P, _T)
static PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
NTSYSAPI NTSTATUS NTAPI RtlCreateAtomTable(_In_ ULONG TableSize, _Inout_ PRTL_ATOM_TABLE *AtomTable)
BOOL FASTCALL UserIsEnteredExclusive(VOID)
PRTL_ATOM_TABLE pAtomTable
static PJOBINFO gJobInfoList
◆ _Requires_lock_held_()
Definition at line 32 of file job.c.
36{
38
40
42 {
43 if (pJobInfo->
pEJob == pEJob)
44 return pJobInfo;
45 }
46
48}
BOOL FASTCALL UserIsEntered(VOID)
◆ DBG_DEFAULT_CHANNEL()
| DBG_DEFAULT_CHANNEL |
( |
UserProcess |
| ) |
|
◆ IntJobAddProcess()
Definition at line 328 of file job.c.
331{
334
336
337 pJobInfo = IntFindJobInfo(pEJob);
338 if (pJobInfo ==
NULL)
339 {
340
341
342 ERR(
"No JOBINFO for job %p\n", pEJob);
344 }
345 else
346 {
347 Status = IntAddProcessToJobInfo(pJobInfo, ppi);
348 }
349
352}
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
#define STATUS_UNSUCCESSFUL
Referenced by Win32kJobCallout().
◆ IntJobSetRestrictions()
Definition at line 266 of file job.c.
269{
273
275
276 pJobInfo = IntFindJobInfo(pEJob);
277
278
279 if (UIRestrictions == 0)
280 {
281 if (pJobInfo !=
NULL)
282 IntDestroyJobInfo(pJobInfo);
283
284 goto Quit;
285 }
286
287 if (pJobInfo ==
NULL)
288 {
290
291 pJobInfo = IntCreateJobInfo(pEJob);
292 if (pJobInfo ==
NULL)
293 {
295 goto Quit;
296 }
297
299
300
301
303 {
304 if (ppi->peProcess !=
NULL &&
306 {
307 Status = IntAddProcessToJobInfo(pJobInfo, ppi);
309 goto Quit;
310 }
311 }
312 }
313
315
316Quit:
317
319 IntDestroyJobInfo(pJobInfo);
320
323}
PEJOB NTAPI PsGetProcessJob(PEPROCESS Process)
Referenced by Win32kJobCallout().
◆ IntJobTerminate()
Definition at line 357 of file job.c.
358{
360
362
363 pJobInfo = IntFindJobInfo(pEJob);
364 if (pJobInfo !=
NULL)
365 IntDestroyJobInfo(pJobInfo);
366
369}
Referenced by Win32kJobCallout().
◆ NtUserUserHandleGrantAccess()
Definition at line 587 of file job.c.
591{
596
597 if (hUserHandle ==
NULL)
598 {
601 }
602
610 {
613 }
614
616
617 pJobInfo = IntFindJobInfo(pEJob);
618 if (pJobInfo ==
NULL)
619 {
620
622 }
623 else
624 {
625 Ret = IntGrantHandleToJob(pJobInfo, hUserHandle, bGrant);
626 }
627
629
631 return Ret;
632}
#define ERROR_INVALID_PARAMETER
#define JOB_OBJECT_SET_ATTRIBUTES
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define ObDereferenceObject
◆ Win32kJobCallout()
Definition at line 476 of file job.c.
477{
479 {
483
487
490
491 default:
494 }
495}
_In_ HANDLE _In_ CONST PDXGKMDT_OPM_GET_INFO_PARAMETERS Parameters
@ PsW32JobCalloutTerminate
@ PsW32JobCalloutAddProcess
@ PsW32JobCalloutSetInformation
#define STATUS_INVALID_PARAMETER
static NTSTATUS IntJobSetRestrictions(_In_ PEJOB pEJob, _In_ ULONG UIRestrictions)
static NTSTATUS IntJobTerminate(_In_ PEJOB pEJob)
static NTSTATUS IntJobAddProcess(_In_ PEJOB pEJob, _In_ PPROCESSINFO ppi)
Referenced by DriverEntry().
◆ gJobInfoList