Come faccio a livello di programmazione determinare lo spazio massimo in modalità utente del (Windows) OS?

StackOverflow https://stackoverflow.com/questions/894663

Domanda

Sto scrivendo un'applicazione diagnostica che ha bisogno di registrare ciò che l'utente ha impostato come il suo spazio in modalità utente user-mode anche noto come spazio di indirizzi virtuali anche noto come l'opzione / 3GB in WinXP o l'interruttore increaseuserva in bcdedit su Vista / Win7.

Uno di C ++ o C ++ / CLI farà.

Tutte le idee?

È stato utile?

Soluzione

GlobalMemoryStatusEx vi darà un < a href = "http://msdn.microsoft.com/en-us/library/aa366770(VS.85).aspx" rel = "nofollow noreferrer"> MEMORYSTATUSEX struct con ullTotalVirtual:

  

La dimensione della parte in modalità utente dello spazio di indirizzi virtuali del processo chiamante, in byte. Questo valore dipende dal tipo di processo, il tipo di processore, e la configurazione del sistema operativo. Ad esempio, questo valore è di circa 2 GB per la maggior parte dei processi a 32 bit su un processore x86 e circa 3 GB per processi a 32 bit che sono grandi indirizzo consapevoli esecuzione su un sistema con 4 gigabyte sintonizzazione abilitato.

Si noti che avresti dovuto segnare il tuo EXE come LARGEADDRESSAWARE al fine di vedere 3GB nel vostro processo .

Credo che ci sia un'altra funzione che restituisce anche queste informazioni (no - non GlobalMemoryStatus che è deprecato) insieme a informazioni di processore - ma non riesco a ricordarlo ATM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top