자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Q,

다음과 같은 코드가 32비트에서는 정상적인 핸들이 64비트에서는 0이 반환됩니다.

const
  SharedMemoryHandle = $FFFFFFFF;

 

  SharedMemory := CreateFileMapping(
                              SharedMemoryHandle,
                              nil,
                              PAGE_READWRITE,
                              0,
                              sizeof(TTouchInterfaceItems),
                              PChar(ATOUCH_INTERFACE)
                  );

 

A,

윈도우 API 호출 후 문제가 있을 경우 GetLastError를 호출해 오류의 종류를 확인할 수 있습니다.

제가 GetLastError로 확인 결과(https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v=vs.85).aspx) 유효하지 않은 핸들(ERROR_INVALID_HANDLE: 6)이 반환됩니다.

 

다음 링크를 보면 아래와 같이 32비트와 64비트의 INVALID_HANDLE_VALUE값의 차이를 확인할 수 있습니다.

http://www.viva64.com/en/b/0022/

As a result, INVALID_HANDLE_VALUE does coincide with 0xFFFFFFFF value in a 32-bit system. But in a 64-bit system 0×00000000FFFFFFFF value

 

64비트에서는 위 코드를 아래와 같이 변경해서 사용하시기 바랍니다.

  SharedMemory := CreateFileMapping(
                              INVALID_HANDLE_VALUE,
                              nil,
                              PAGE_READWRITE,
                              0,
                              sizeof(TTouchInterfaceItems),
                              PChar(ATOUCH_INTERFACE)
                  );

 

참고로,

위 구문은 메모리 맵파일을 사용하는 일부 코드이며 실행파일과 라이브러리(dll)이 동일한 주소공간의 메모리를 공유할 수 있습니다. 자세한 내용은 아래 링크를 참고해 학습하시기 바랍니다.

MSDN : https://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx

메모리 맵파일 소개 : http://sweeper.egloos.com/2990023

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 39911
공지 유용한 관련 사이트 관리자2 2014.03.20 79436
492 TEdit를 반투명하게 입력을 받고싶습니다 헨씀히포 2019.12.01 368
491 datasnap 이용하여 sqlconnection 이용하여 데이타를 모방일에서 가져오는데. 종결자 2019.12.01 299
490 델파이소스 빌더 변환 문의 [1] 누리 2019.12.04 316
489 컴파일에러 [1] 한시민 2019.12.04 313
488 ADOQuery의 SQL 에 Select * from Table where 조건 을 만족하는 데이터를 읽어 오는 방법 문의 드립니다. 한태수 2019.12.05 431
487 [10.3.3 브리핑] 안드로이드 앱 번들과 iOS 유니버셜 앱의 차이점은? file 험프리 2019.12.05 371
486 [10.3.3 브리핑] 안드로이드 64비트 장비에서 실행이 안되요. 험프리 2019.12.05 343
485 [10.3.3 브리핑] 출시 후 로드맵이 변경되었나요? 험프리 2019.12.05 342
484 [10.3.3 브리핑] 파이어몽키 성능향상으로 어떤 것이 있었나요? 험프리 2019.12.05 333
483 [10.3.3 브리핑] 엔터프라이즈 커넥터가 1년 라이선스인데 어떻게 갱신하는가? 험프리 2019.12.05 363
482 [10.3.3 브리핑] 업데이트에서 버그가 개선되었는지 확인하는 방법은? 험프리 2019.12.05 336
481 [10.3.3 브리핑] RAD서버의 부하 분산 등은 어떻게 되나요? 험프리 2019.12.05 358
480 RADSTUDIO 10(Seattle) 의 dbGo 팔레트에서 ADOStoredProc 관련 소스코드를 찾습니다. 한태수 2019.12.05 271
479 PageControl 컴포넌트에서...? [2] 헨씀히포 2019.12.06 645
478 Microsoft teams 메신저로 메세지(채팅)보내는거 경험 있으시분 있나요? max 2019.12.06 386
477 c++ 빌더로 OSX 를 개발하려고 하고 있습니다. 과장님 2019.12.06 361
476 mac os Catalina 에서 Rio 10.3 Update2 버전의 paserver가 mac에서 작동 안됩니다. [1] 델파이_사랑 2019.12.08 328
475 안드로이드에서 전화걸기 어떻게 하야 하나요? [2] 델마당쇠 2019.12.09 359
474 [에러] 64비트로 컴파일시, 빌더가 설치되지 않은 피시에서 에러 발생 file lamp 2019.12.09 316
473 빌더가 설치되지 않은 피시에서 메모리에러 발생 file lamp 2019.12.10 297