2011-04-19 3 views
0

정확히 Windows CE에서 MMF를 만들고 매핑하는 과정에서 MMF에 대해 주소 공간이 차단됩니다. MMF를 만들 때 또는 뷰가 매핑 될 때입니까? 가상 주소 공간에 연속적 x (생성시 지정됨)의 공백이있는 경우에만 생성이 성공합니까?Windows CE에서 메모리 매핑 된 파일의 일부를 매핑하는 중

둘째, win32에서와 같이 win CE에서 파일의 일부를 매핑 할 수 있습니까? 0x8000 바이트로 MMF를 만들고 0x5000의 오프셋과 0x7000의 크기를 제공하는 파일의 뷰를 매핑하면 매핑이 실패합니다. INVALID_PARAMETER (이)라고합니다. 뷰의 오프셋과 크기의 합이 0x8000보다 작은 경우 매핑이 허용되지만 항상 파일의 시작 부분에서 매핑됩니까?

답변

1

Windows Mobile 6.x (CE 5.0)에서 메모리 매핑 파일은 가상 주소 공간의 0x42000000 위의 Large Memory Area에 저장됩니다.

예. MMF를 성공적으로 할당하려면 연속 된 공간이 필요합니다.

0x5000 + 0x7000 = 0xC000. 이는 0x8000 바이트의 할당 된 공간보다 큽니다.

-PaulH

편집 또한, 시스템의 할당 단위의 must be a multiple 오프셋. 해당 값을 찾으려면 GetSystemInfo을 사용하십시오. 한 장치에서, 예를 들어 0xa11 바이트입니다.

+0

하지만 명령은 파일의 오프셋 0x5000에서 시작하여 0x7000 바이트를 읽고 0x8000 인 MMF에 할당 된 공간에 다음 0x7000을 읽고 저장해야합니다. 이 경우 0x7000은 0x8000보다 작기 때문에 왜 실패해야합니까? –

+0

"어디서", 나는 MMF 제작 단계를 의미했습니다. 위치가 아닙니다. 아니면 "언제"였을 것입니다. CreateMMF 호출 또는 MapViewOfFile 호출 중에 할당됩니까? –

+0

할당 단위는 얼마입니까? (내 편집 참조) – PaulH

관련 문제