Funzione SetProcessWorkingSetSize (memoryapi.h)
Imposta le dimensioni minime e massime del set di lavoro per il processo specificato.
Sintassi
BOOL SetProcessWorkingSetSize(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize
);
Parametri
[in] hProcess
Handle per il processo le cui dimensioni del set di lavoro devono essere impostate.
L'handle deve avere il diritto di accesso PROCESS_SET_QUOTA . Per altre informazioni, vedere Elaborare diritti di sicurezza e accesso.
[in] dwMinimumWorkingSetSize
Dimensioni minime del set di lavoro per il processo, in byte. Gestione memoria virtuale tenta di mantenere almeno questa quantità di memoria residente nel processo ogni volta che il processo è attivo.
Questo parametro deve essere maggiore di zero, ma minore o uguale alla dimensione massima del set di lavoro. Le dimensioni predefinite sono 50 pagine, ad esempio 204.800 byte nei sistemi con dimensioni di pagina 4K. Se il valore è maggiore di zero ma minore di 20 pagine, il valore minimo è impostato su 20 pagine.
Se sia dwMinimumWorkingSetSize che dwMaximumWorkingSetSize hanno il valore (SIZE_T)-1, la funzione rimuove il maggior numero possibile di pagine dal set di lavoro del processo specificato.
[in] dwMaximumWorkingSetSize
Dimensione massima del set di lavoro per il processo, in byte. La gestione memoria virtuale tenta di mantenere non più di questa quantità di memoria residente nel processo ogni volta che il processo è attivo e la memoria disponibile è bassa.
Questo parametro deve essere maggiore o uguale a 13 pagine (ad esempio 53.248 nei sistemi con dimensioni di pagina 4K) e minore del numero massimo a livello di sistema (numero di pagine disponibili meno 512 pagine). Le dimensioni predefinite sono 345 pagine, ad esempio 1.413.120 byte nei sistemi con dimensioni di pagina 4K.
Se sia dwMinimumWorkingSetSize che dwMaximumWorkingSetSize hanno il valore (SIZE_T)-1, la funzione rimuove il maggior numero possibile di pagine dal set di lavoro del processo specificato.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Chiamare GetLastError per ottenere informazioni di errore estese.
Commenti
Il set di lavoro di un processo è il set di pagine di memoria nello spazio indirizzi virtuale del processo attualmente residente nella memoria fisica. Queste pagine sono disponibili per l'uso di un'applicazione senza attivare un errore di pagina. Per altre informazioni sugli errori di pagina, vedere Set di lavoro. Le dimensioni minime e massime del set di lavoro influiscono sul comportamento di paging della memoria virtuale di un processo.
Il set di lavoro del processo specificato può essere svuotato specificando il valore (SIZE_T)-1 per le dimensioni minime e massime del set di lavoro. Ciò rimuove il maggior numero possibile di pagine dal set di lavoro. La funzione EmptyWorkingSet può essere usata anche per questo scopo.
Se i valori di dwMinimumWorkingSetSize o dwMaximumWorkingSetSize sono maggiori delle dimensioni correnti del set di lavoro corrente del processo, il processo specificato deve avere il privilegio SE_INC_WORKING_SET_NAME. Tutti gli utenti hanno in genere questo privilegio. Per altre informazioni sui privilegi di sicurezza, vedere Privilegi.
Windows Server 2003 e Windows XP: Il processo specificato deve avere il privilegio di SE_INC_BASE_PRIORITY_NAME . Gli utenti nei gruppi Administrators e Power Users hanno in genere questo privilegio.
Il sistema operativo alloca le dimensioni dei set di lavoro in base al primo servizio. Ad esempio, se un'applicazione imposta correttamente 40 megabyte come dimensione minima del set di lavoro su un sistema da 64 megabyte e una seconda applicazione richiede una dimensione del set di lavoro da 40 megabyte, il sistema operativo nega la richiesta della seconda applicazione.
L'uso della funzione SetProcessWorkingSetSize per impostare le dimensioni minime e massime del set di lavoro di un'applicazione non garantisce che la memoria richiesta venga riservata o che rimanga residente in ogni momento. Quando l'applicazione è inattiva o una situazione di memoria ridotta causa una richiesta di memoria, il sistema operativo può ridurre il set di lavoro dell'applicazione. Un'applicazione può usare la funzione VirtualLockper bloccare gli intervalli dello spazio indirizzi virtuale dell'applicazione in memoria; tuttavia, che può potenzialmente ridurre le prestazioni del sistema.
Quando si aumentano le dimensioni del set di lavoro di un'applicazione, si sta togliendo memoria fisica dal resto del sistema. Ciò può ridurre le prestazioni di altre applicazioni e il sistema nel suo complesso. Può anche causare errori di operazioni che richiedono la presenza di memoria fisica ,ad esempio la creazione di processi, thread e pool di kernel. È quindi necessario usare attentamente la funzione SetProcessWorkingSetSize . È sempre necessario considerare le prestazioni dell'intero sistema quando si progetta un'applicazione.
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | memoryapi.h |
Libreria | onecore.lib |
DLL | Kernel32.dll |