본문 바로가기

분류 전체보기

Avoiding problems with VC2005 SP1 Security update KB971090 마이크로소프트가 VS2005 의 KB971090 업데이트를 쥐도새도 모르게 설치해준다. 처음에는 VS2005가 설치되어 있지 않는 컴퓨터에서는 컴파일된 바이너리를 아래의 재배포패키지를 통해 실행해었다. http://www.microsoft.com/downloads/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=en 그러나, KB971090 업데이트후에 실행되지 않는 문제 발생!!! 프로그램 추가/삭제 에서 KB971090 업데이트를 삭제하고 컴파일 하니까 실행은 된다만, 또 어느순간보면 KB971090 가 설치되어 있다. 결국, 아래의 재배포패키지를 설치해야 한다. http://www.microsoft.com/download.. 더보기
[펌]비주얼베이직(VB)에서 마우스 스크롤이 되는 방법 비주얼 베이직 6.0에서 작업을 하다보면 뜻밖에도 이런 것이 안 되다니 하고 느끼는 것이 있다. 바로 마우스의 휠이 먹히지않는다는 것이다. 마우스로 화면을 스크롤할 수 없다는 것은 정말이지 뜻밖의 복병이다. 윈도우에서 아무런 문제 없이 사용하던 것이비주얼베이직에만 오면 딱 그 기능이 멎어버린다. (놀라운 MS사의 센스가 아닐 수 없다!)이 문제를 해결하려고 하면 아래의 파일을 내려받아서 설치하면 간단하게 해결된다.(왜 이것은 VB6에 기본적으로 포함하지않는 것도 이상하다. 더군다나 패치에서도 해결할 노력이 없다. SP6까지 오면서 개선된 것이 없다. 다행히도 VB.NET에서는된다.) 1. 아래의 파일을 내려받는다. http://download.microsoft.com/download/e/f/b/efb39.. 더보기
[MFC] VC++이 생성하는 파일 NL 인라인 함수 파일. 이 파일에는 인라인 함수가 정의된다. RC와 RC2 RC는 리소스 파일을 말하며 리소스 컴파일러(RC.EXE)에 의해 컴파일된다. 다 이얼로그, 아이콘, 메뉴, 커서 등과 같은 리소스에 대한 정보가 기술되어 있다. RC2 또한 리 소스에 대한 정보가 포함된다. DEF 모 듈 정의 파일(Module definition file). 프로젝트 유형에 따라 사용목적이 다른데 윈도우즈 또는 윈도우즈 NT 기반의 프로그램인 경우 익스포트되는 함수의 리스트, 힙(Hea p)크기, 세그먼트 속성 등을 지정한다. APS 리소스 파일에 대한 바이너리 파일. App Studio에서 리소스 파일을 로딩하는데 사용(로딩 속도 향상) BSC 소스 브라우저 정보 파일(Browser database file.. 더보기
bstr , CComBSTR 통상적인 WIN32에서는 BSTR도 WCHAR*입니다. 통상적으로 쓰는 WCHAR 문자열과 다른 점은, 첫문자 앞에 4바이트가 추가로 할당되어 문자열의 길이를 저장합니다. 문자열크기(4바이트)첫번째 문자(2바이트)두번째 문자(2바이트)세번째 문자(2바이트)NULL(2바이트) 이런 구조이구요, BSTR 자체는 WCHAR*로, 첫번째 문자의 주소를 가리키고 있는 포인터입니다.보통 메모리를 할당하면, 가장 첫번째 요소의 주소를 가지고 핸들링 하는데,BSTR은 약간 특이하게 문자열의 크기가 아니라 첫번째 문자의 포인터입니다.그래서 C언어에서 사용할 때, 통상적인 WCHAR*과 비슷하게 사용할 수 있긴 하죠. 조금 헷갈릴 수 있는 게 C언어에서 메모리를 할당하거나 해제할 때는 가장 첫번째 요소의 포인터를 사용하는.. 더보기
[펌]MFC & C - 대용량 파일 빨리 읽기 대용량의 파일 순식간에 읽기1.요약 10M 이상이 되는 파일을 빠르게 읽는 방법을 알아보기로 합니다. 2.본문 v 파일 읽기는 자주 사용하실 것인데.. CFile::Read를 사용하면.. 10MB정도 되는 파일을 읽으면 무진장 오래 걸려서.. 메모리 맵 파일을 이용한 파일 읽기 방법을 올려 들립니다.. 많은 예제가 나온것으로 알지만.. 혹시... 도 몰라서.. BOOL OpenFiles(LPCSTR lpszPathName) { DWORD dwFileSize; HANDLE hFile, hFileMap; LPVOID lpvFile; hFile = ::CreateFile(lpszPathName, GENERIC_READ , 0, NULL OPEN_EXISTING, FILE_ATTRIBUTTE_NORMAL, NU.. 더보기
[펌]C/C++ Secure Function 에 대해서 Visual Studio 2005 Secure Function 에 좀더 쓰겠습니다. 사실 strcpy 류의 함수를 _s 의 postfix를 붙여주는 것만으로는 충분하지 않습니다. char szBuf[10]; strcpy(szBuf, “test”) 와 같은 코드를 그냥 컴파일 하면 분명히 deprecated warning이 나옵니다. 그리고 _CRT_SECURE_NO_DEPRECATE 를 정의하거나, #pragma warning 을 이용해서 warning control을 할 수 있습니다. 이 방법은 예전의 방법입니다. Secure check를 전혀 하지 않는 방법이지요. 그런데 C++의 특성상 string manipulation 과정에서 buffer overrun이나 stack을 깨먹는 경우가 허다해서 _.. 더보기
다중 스레드 동기화 (2) 커널 모드 유저 모드에서 커널 오브젝트에 접근을 할 때 시스템은 커널 모드로 변환을 합니다.커널 오브젝트에는 File, Event, Mutex, Semaphore, Process, Waitable Timer, Job, Thread 가 있습니다. 커널 모드에서 동기화는 커널 오브젝트가 non-Signal인지 Signal 상태인지를 보고 쓰레드를 스케쥴링합니다.커널 오브젝트가 signal상태이면 쓰레드가 돌아갈 준비가 된 상태이고, non-signal 상태이면 쓰레드는 기다림(Wait)상태 입니다. 이벤트(EVENT) 가장 많이 보편화되고 많이 쓰는 다중 쓰레드 동기화 오브젝트가 이벤트가 아닌가 생각이 됩니다.이벤트로 다중 쓰레드 동기화 하는 방법에는 두가지 방법이 있습니다. 개발자가 직접 이벤트를 수동으로.. 더보기
다중 쓰레드 동기화 (1) 쓰레드 동기화 오브젝트 (Thread Synchronization Objects) 쓰레드가 2개 이상 실행될 때 여러가지 변수 가있습니다.하나의 공유자원(예를들어 동시에 접근하는 변수) 에 접근할 때, 파일 입출력 이나 디바이스I/O작업을 할 때 동기화 오브젝트가 필요합니다.동기화 오브젝트 없이 쓰레드가 공유 자원을 사용할 때 공유자원이 원치 않은 값이 될수 있고, I/O작업 시 쓰레드가 I/O작업이 끝날 때 까지 무한정 블로킹(blocking : 특정 함수가 리턴 될 때 까지 기다림)현상이 발생할 수 있습니다.동기화 오브젝트를 사용하여 다중 쓰레드에서 어떻게 안전 하게 공유자원에 접근하고 다른 쓰레드간의 실행 순서등을 조작하는지에 대해 알아 보겠습니다. 동기화 오브젝트는 유저 모드와 커널 모드로 분류할.. 더보기
MFC SDI 템플릿 기본 개념 ① 애플리케이션 클래스 얻기 CTestApp *pApp = (CTestApp *) AfxGetApp(); ② 메인프레임 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd(); ③ View 윈도 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd(); CTestView *pView = (CTestView *) pFrame->GetActiveView(); or CTestView *pView = (CTestView *) ((CMainFrame *) AfxGetMainWnd())->GetActiveView(); ④ Document 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) Af.. 더보기