2013-10-12 10 views
0

DWORD가 필요한 함수를 사용하려고합니다.MapViewOfFile을 호출하는 중 오류가 발생했습니다.

dwFileOffsetHigh

뷰 개시 위치 오프셋 파일 고차 DWORD [IN]

은 사양이다. dwFileOffsetLow [in]

뷰가 시작될 오프셋의 하위 DWORD 파일입니다. 높은 오프셋과 낮은 오프셋의 조합은 파일 매핑을 사이의 오프셋으로 지정해야합니다. 또한 시스템의 메모리 할당 의 일치도와 일치해야합니다. 즉, 오프셋은 할당 세분화 의 배수 여야합니다. 메모리 할당 시스템의 세분성을 얻으려면 을 SYSTEM_INFO 구조체의 멤버로 채우는 GetSystemInfo 함수를 사용하십시오.

이 오류는 잘못된 매개 변수로 인해 실패합니다.

unsigned long lByteStart=200959959; 
unsigned long lByteLen=66964224; 

MapViewOfFile(*phMapping, FILE_MAP_READ, 0, lByteStart, lByteLen); 

내가 이해하지 못했기 때문에 높거나 낮음 또는 낮음에 대해 신경 쓰지 않았고 단순히 작동 할 것으로 기대했습니다.

이제는 작동하지 않습니다. 누군가 내가 아마도 잘못한 것과 제대로 수행해야 할 작업을 말해 줄 수 있습니까?

답변

3

문제는 높거나 낮은 부분이 아닙니다. 문제는 '오프셋은 할당 세분성의 배수 여야합니다.'입니다. 나는 네가 그렇게 생각하지 않는다.

할당 세분성의 일반적인 값은 4096이지만 시스템에있는 내용을 확인해야합니다 (견적에 나와 있습니다).

+0

64 킬로바이트입니다. –

+0

고맙습니다. 나는 그것을 시험 할 것이다. – tmighty

+0

세분성은 64kb가 아닌 65536 바이트입니다. – tmighty

관련 문제