2011-09-20 3 views
3

실제 RAM 용량은 충분하지만 내 프로세스에서 사용할 수있는 가상 메모리의 양은 32MB입니다. 이 한도를 늘릴 수있는 방법 (예 : 함수 호출 또는 프로젝트 속성)이 있습니까? 나는 한계를 찾고있다. 한계.Windows Mobile에서 프로세스의 사용 가능한 메모리를 늘리려면 어떻게합니까?

저는 GlobalMemoryStatusEx으로 전화하여 사용법을보고 있습니다. 도움이 될만한 종류의 사람 인 dwTotalVirtual 회원을 설정할 수있는 무언가가 있다면.

감사합니다.

답변

2

아니요, 늘릴 방법이 없습니다. Windows CE 5.0 및 이전 버전에서는 지원되는 32 개의 동시 프로세스에 대해 가상 메모리가 32MB로 제한되어있었습니다. 그것은 커널의 일부입니다.

이제 모든 할당이 32MB에서 나오는 것은 아닙니다. 워드 프로세서 (경험)에서 :

당신이> = 2메가바이트 dwSize와 VirtualAlloc를 호출 할 경우

는 flAllocationType는 MEM_RESERVE로 설정하고, flProtect는 PAGE_NOACCESS에 자동 공유 메모리 영역에 메모리를 예약 설정합니다. 이렇게하면 프로세스 당 가상 메모리가 보존됩니다.

즉, VirtualAlloc의 넓은 영역을 32MB 슬롯 제한에 영향을주지 않고 사용할 수 있습니다.

+1

감사합니다. 확인하려면 : WriteProcessMemory 및 ReadProcessMemory를 사용하여이 메모리에 액세스하는 유일한 방법은 무엇입니까? – noelicus

+1

기술적으로 대답은 "의존적"입니다. CE 5.0 및 이전 버전의 공유 메모리는 실제로 보호되지 않으므로 VirtualAlloc이 반환 한 포인터를 읽고 쓸 수만 있습니다. 그것은 "올바른"방법이 아니며, OS가 작동하도록 허용하는 메모리를 보호하지 않는 OS의 근본적인 결함 일뿐입니다. 이 결함은 CE 6.0에서 수정되었으므로 직접 포인터를 조작하면 코드가 CE 6 또는 7로 이식되지 않습니다. – ctacke

관련 문제