반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 당사자표시정정신청서
- vue
- Tutorial
- 보정명령
- 코로나
- win32
- 개인사업자
- Blade
- 소액임금체불
- 인민공원
- javascript
- as후기
- blockchain
- 홈택스
- Bootstrap
- Sentinel
- Python
- Laravel
- reactnative
- cartalyst
- auth
- Eclipse
- elasticSearch
- 체당금
- php
- 전자소송
- Java
- 사업자계좌
- 이더리움
- 코로나19
Archives
- Today
- Total
그냥 사는 이야기
Win32 API x86, x64 구분? 본문
반응형
Win32 API를 통해서 시스템이 32bit인지 64bit 운영체제 인지 알아 보려면 아래와 같은 식으로 하면 된다.
GetSystemInfo vs GetNativeSystemInfo
SYSTEM_INFO siSysInfo;
GetNativeSystemInfo(&siSysInfo);
printf(" Processor Architecture %d\n", siSysInfo.wProcessorArchitecture);
GetSystemInfo() 대신 GetNativeSystemInfo()를 사용해야 한다.
Windows Server 2003 x64에서 해보니 GetSystemInfo()는 0 값을 return 한다. x86으로 리턴한 것이다. MSDN에 설명이 나와 있지만 GetSystemInfo()는 과거에 나온 함수로서 WOW64에 대한 고려가 되어 있지 않다. 그러니깐 64비트 환경에서 32비트 호환모드로 동작하는 프로세스에서는 GetSystemInfo()은 마치 32비트 환경인줄 알고 리턴한다는 것이다.
WOW64를 더 잘 이해하려면 [64비트 윈도우 프로그래밍]① 32비트 프로그램을 엄호하라 글 참조
따라서 이런 경우에도 정확하게 동작하려면 GetNativeSystemInfo()를 사용하면 된다. 아마 WINVER 501 이상부터 가능했던 것 같은데.
매번 실수 할까봐...
'Development > System' 카테고리의 다른 글
Ubuntu 16.04에서 lxc, lxd 설치 (0) | 2020.01.12 |
---|---|
Visual Studio 2008에서 Team Foundation Server 2010 사용하기 (0) | 2012.06.07 |
Wow64 redirection 해제(x64) (1) | 2010.01.27 |
devcon을 사용하여 disk를 disable 시키기 (0) | 2009.10.21 |
LoadLibrary() / FreeLibrary() 에서 memory leak 발생 (0) | 2009.07.17 |
Comments