안녕하세요
windows 7, .net framework4.0으로 개발하던 프로젝트를
windows 8.1, .net framework 4.5로 옯겼습니다.
프로젝트는 64비트입니다.
그러면 컴파일은 되는데 프로젝트에서 참조하는 c++ dll의 함수를 호출하면 보호된 메모리에 접근했다는 에러가 납니다.
프로젝트에서 참조한 dll은 atl 형식이구요.
자세히 들어가보니까 dll에서 DeviceIoControl()함수를 호출하는데, lpOutBuffer의 값이
"메모리를 읽을 수 없음"이라고 나옵니다.
그리고 저 값을 사용하다가 에러가 나는데요.
그런데 dll을 참조한 c# 프로젝트의 프레임워크를 4.0으로 설정하면 lpOutBuffer의 값이 제대로 할당됩니다.
이게 어떤 상황인지 혹시 아시나요?