Так... Раз процесс создан CreateProcess, то в структуре TProcessInformation хранится hProcess с правами полного доступа... Тогда будет сразу так: SetProcessWorkingSetSize( pi.hProcess, MinSize, MaxSize );
Насчёт привилегий:
| Цитата(MSDN) | | If the values of either dwMinimumWorkingSetSize or dwMaximumWorkingSetSize are greater than the process' current working set sizes, the specified process must have the SE_INC_BASE_PRIORITY_NAME privilege. Users in the Administrators and Power Users groups generally have this privilege. For more information about security privileges, see Privileges. |
Можешь юзать такую функцию:
| Код | function SetPrivilege(aPrivilegeName : string; aEnabled : boolean ): boolean; var TP : TTokenPrivileges; Token : THandle; dwRetLen : DWord; begin Result := False; OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token ); TP.PrivilegeCount := 1; if( LookupPrivilegeValue(nil, PChar( aPrivilegeName ), TP.Privileges[ 0 ].LUID ) ) then begin TP.Privileges[0].Attributes:= (SE_PRIVILEGE_ENABLED)*byte(aEnabled); Result := AdjustTokenPrivileges(Token, False, TP, 0, nil, dwRetLen ); end; CloseHandle( Token ); end; | Если хочешь увеличить размер WorkingSet, то перед SetProcessWorkingSetSize вызывай эту функцию так:
| Код | SetPrivilege ('SeIncreaseBasePriorityPrivilege', True);
|
|