자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15781
공지 유용한 관련 사이트 관리자2 2014.03.20 54599
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 98018
499 10.3.3 64-Bit deploy시 에러 [4] air 2019.11.28 209
498 [에러] ISO C++17 does not allow 'register' storage class specifier [2] file lamp 2019.11.29 1033
497 데이터스냅 사용자 인증 devdev 2019.11.29 106
496 ClientDataSet 이 연결오류 [1] file 우기여니아빠 2019.11.29 253
495 TJSONArray Data Clear 문의 [1] 늦바람 2019.11.29 388
494 TEdit를 반투명하게 입력을 받고싶습니다 헨씀히포 2019.12.01 144
493 datasnap 이용하여 sqlconnection 이용하여 데이타를 모방일에서 가져오는데. 종결자 2019.12.01 102
492 델파이소스 빌더 변환 문의 [1] 누리 2019.12.04 104
491 컴파일에러 [1] 한시민 2019.12.04 115
490 ADOQuery의 SQL 에 Select * from Table where 조건 을 만족하는 데이터를 읽어 오는 방법 문의 드립니다. 한태수 2019.12.05 105
489 [10.3.3 브리핑] 안드로이드 앱 번들과 iOS 유니버셜 앱의 차이점은? file 험프리 2019.12.05 203
488 [10.3.3 브리핑] 안드로이드 64비트 장비에서 실행이 안되요. 험프리 2019.12.05 148
487 [10.3.3 브리핑] 출시 후 로드맵이 변경되었나요? 험프리 2019.12.05 116
486 [10.3.3 브리핑] 파이어몽키 성능향상으로 어떤 것이 있었나요? 험프리 2019.12.05 147
485 [10.3.3 브리핑] 엔터프라이즈 커넥터가 1년 라이선스인데 어떻게 갱신하는가? 험프리 2019.12.05 131
484 [10.3.3 브리핑] 업데이트에서 버그가 개선되었는지 확인하는 방법은? 험프리 2019.12.05 136
483 [10.3.3 브리핑] RAD서버의 부하 분산 등은 어떻게 되나요? 험프리 2019.12.05 124
482 RADSTUDIO 10(Seattle) 의 dbGo 팔레트에서 ADOStoredProc 관련 소스코드를 찾습니다. 한태수 2019.12.05 104
481 PageControl 컴포넌트에서...? [2] 헨씀히포 2019.12.06 330
480 Microsoft teams 메신저로 메세지(채팅)보내는거 경험 있으시분 있나요? max 2019.12.06 206