Initialize process quota subsystem
This commit is contained in:
@@ -22,6 +22,7 @@ namespace PS
|
||||
STATIC KSPIN_LOCK QuotaLock;
|
||||
|
||||
public:
|
||||
STATIC VOID XTAPI InitializeQuota(VOID);
|
||||
STATIC XTFASTCALL VOID ReturnProcessQuota(IN PEPROCESS_QUOTA_BLOCK QuotaBlock,
|
||||
IN PEPROCESS Process,
|
||||
IN PS_QUOTA_TYPE QuotaType,
|
||||
|
||||
@@ -77,4 +77,7 @@ PS::ProcessManager::InitializeProcessManager(VOID)
|
||||
ObjectTypeInitializer.GenericMapping = PS_THREAD_GENERIC_MAPPING;
|
||||
ObjectTypeInitializer.ValidAccessMask = SE_THREAD_ALL_ACCESS;
|
||||
OB::TypeRegistry::CreateObjectType(&ObjectTypeName, &ObjectTypeInitializer, NULLPTR, &ThreadType);
|
||||
|
||||
/* Initialize system quota */
|
||||
PS::Quota::InitializeQuota();
|
||||
}
|
||||
|
||||
@@ -67,6 +67,36 @@ PS::Quota::DereferenceQuotaBlock(IN PEPROCESS_QUOTA_BLOCK QuotaBlock)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the system-wide process quota subsystem.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
VOID
|
||||
XTAPI
|
||||
PS::Quota::InitializeQuota(VOID)
|
||||
{
|
||||
/* Initialize the quota lock */
|
||||
KE::SpinLock::InitializeSpinLock(&QuotaLock);
|
||||
|
||||
/* Clear the default quota block */
|
||||
RtlZeroMemory(&DefaultQuotaBlock, sizeof(DefaultQuotaBlock));
|
||||
|
||||
/* Set up the counters */
|
||||
DefaultQuotaBlock.ProcessCount = 1;
|
||||
DefaultQuotaBlock.ReferenceCount = 1;
|
||||
|
||||
/* Set up the limits */
|
||||
DefaultQuotaBlock.QuotaEntry[PsNonPagedPool].Limit = (SIZE_T)-1;
|
||||
DefaultQuotaBlock.QuotaEntry[PsPagedPool].Limit = (SIZE_T)-1;
|
||||
DefaultQuotaBlock.QuotaEntry[PsPageFile].Limit = (SIZE_T)-1;
|
||||
|
||||
/* Assign the default quota block to the current process */
|
||||
PS::Process::GetCurrentProcess()->QuotaBlock = &DefaultQuotaBlock;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a specified amount of quota to a quota block and updates process usage.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user