개발 언어

PE 파일포맷

개요  윈도우 시스템 프로그래밍한다는 사람치고 PE 파일에 대해서 모르는 사람은 아마 거의 없을 것이다. 윈도우 실행 파일 및 DLL, 그리고 드라이버 파일까지도 PE 파일 형태를 따르고 있으니 뭘 해도 따라다니는게 이 PE(Portable Executable) 파일 포맷이니까 말이다. PE 파일 포맷은 크게 헤더, 섹션, 데이터의 세부분으로 나뉘는데 기존 DOS 시절 사용하던 COFF(Common Object File Format)과 거의 비슷한 […]

PE 파일포맷 더 읽기"

MFC 모든 헤더와 라이브러리 설명

다음글은 하이텔  MFC소모임의 시삽이신 권정혁님의 글을 정혁님의 허락하에다음과 같이 기재합니다. 허락해주신 정혁님께 감사드립니다.****************************************************************************이 글은 Mike Blaszczak 의 책 “Professional MFC” 의 Appendix D 에 들어있는내용을 번역한 글입니다. 제 허락없이는 다른 어떤게시판에도 옮기실수 없습니다. 물론 글의 원 소유자는 Mike 입니다.                                          

MFC 모든 헤더와 라이브러리 설명 더 읽기"

__cdecl,__stdcall__fastcall 호출규약

__cdecl C언어 표준 호출 규약이다. 파라미터는 오른쪽에서 왼쪽으로 스택을 통해 전달되며, 호출한 곳에서 스택을 정리한다. 특징적인건 호출한 쪽에서 스택을 정리하기 때문에 가변 인자를 지원한다는 것이다.  extern “C” int __cdecl CdeclFunc(int a, int b, int c)   {       printf(“%d %d %d\n”, a, b, c);   }  위 함수를 호출하기 위한 어셈블리 코드는 아래와 같다. add 명령어를 통해서 호출 한

__cdecl,__stdcall__fastcall 호출규약 더 읽기"

[VC] #pragma

VC++에서 #pragma 사용법 설명.. MSDN에 최적화 관련 #pragma 용법은 아래와 같다. http://msdn.microsoft.com/ko-kr/library/h7k3a0bw.aspx   #pragma auto_inline #pragma check_stack #pragma function #pragma inline_depth #pragma inline_recursion #pragma intrinsic #pragma optimize   이중에서 일단, #pragma function #pragma intrinsic #pragma optimize 에 대해서 정리하고 다음것은 나중에 정리하자.   1. #pragma function <사용법> #pragma function( function1 [, function2, …] ) intrinsic

[VC] #pragma 더 읽기"

[VC] #pragma pack

메모리 패킹1.요약 #pragma pack을 이용하여 메모리를 특정 align으로 packing할 수 있다. 2.본문 데브피아에 다음과 같은 팁이 올라왔다. —————————————————————– 구조체 / 공용체 도는 클래스를 바이트 스트림으로 변화시켜야한다면 메모리를 패킹하자. – 사용하는 구조체 또는 공용체 / 클래스를 바이트 스트림으로 변화시켜야한다면, 메모리를 1 바이트 정열을 시켜야 정확한 바이트 단위 크기를 갔습니다. 주로 통신 프로그램을 만드는 경우에 해당하겠군요 예

[VC] #pragma pack 더 읽기"

[VC] #pragma warning

#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list…] )#pragma warning( push[ ,n ] )#pragma warning( pop )컴파일러 경고 메시지 관련 동작에 대한 선택적 수정을 허용해준다.경고-지시어(warning-specifier)는 다음의 것들 가운데 하나일 수 있다. 경고-지시어의 의미once지정한 메시지(들)을 오직 한 번만 표시한다. default경고 동작을 그것의 디폴트값으로 재설정(reset)한다. 이것은 디폴트로 꺼져 있는 경고를 켜는 효과도 가지고 있다. 이제 그

[VC] #pragma warning 더 읽기"

UML의 기초: 클래스 다이어그램

Donald Bell, IT Specialist, IBM  2007 년 5 월 22 일 The Rational Edge 발췌: UML 2의 새로운 구조 다이어그램 유형 중 가장 중요한 클래스 다이어그램은 소프트웨어 개발 사이클 동안 분석가, 비즈니스 모델러, 개발자, 테스터에 의해 사용됩니다. 이 글은 Unified Modeling Language(UML)에서 사용되었던 필수 다이어그램에 관한 기술자료 시리즈입니다. 시퀀스 다이어그램에 대해 설명했던 이전 기술자료에서는, UML

UML의 기초: 클래스 다이어그램 더 읽기"

[UML]시퀀스 다이어그램

  본 기사에서는 UML 시퀀스 다이어그램에 대한 자세한 소개와 UML 2.0 스펙에 포함된 몇가지 새로운 표기법을 소개한다. 그동안 여러분들이 들어왔던 UML의 새로운 스팩인 UML 2.0의 변경 사항들을 설명할 때가 되었다. 이 새로운 스팩은 중요하기 때문에, OMG의 UML 1.4 스팩에서 UML (UML 2)의 Adopted 2.0 Draft Specification으로 관심의 초점도 옮겨야 할 것이다. UML 2.0 Draft Specification은

[UML]시퀀스 다이어그램 더 읽기"

윈도우 데이터 타입

Common Data Types The following data types are commonly used when transferring data across the wire. All multiple-byte numbers are transmitted in little-endian format (least significant byte first), unless otherwise indicated. typedef __int8; typedef __int16; typedef __int32; typedef __int64; typedef int BOOL, *PBOOL, *LPBOOL; typedef BYTE BOOLEAN, *PBOOLEAN; typedef WCHAR * BSTR; typedef unsigned char

윈도우 데이터 타입 더 읽기"

윈도우에서 유니코드 프로그래밍

아래의 글은 Jeffrey Richter 의 Programming Applications for MS Windows 4th edition중에 Part 1의 2장 Unicode 의 How to Write Unicode Source Code 부분을 번역해두었던 것을 올리는 것이다. (요즘 포스트가 뜸해서^^;;) 국내에 번역본이 출간된 걸로 알고 있지만 절판된 관계로 구해보지 못했고, 출판사도 망한 것으로 알고 있으며(다른 곳으로 흡수 합병 된 것인가?) 개인적인 용도로 번역해봤으므로 저작권에

윈도우에서 유니코드 프로그래밍 더 읽기"

헝가리안 표기법

개요..   헝가리안 표기법은 “구시대의 유물이니 쓰지 말아야 한다”라는 주장과 “대규모 프로젝트, 코드파악이 잘된다.”등의 논란은 많지만 사용을 잘 하면 코드 분석(가독성) 및 작성에 매우 도움이 되는 코딩 방법론입니다.   헝가리안 표기법 정리..   Hungarian Notation Data Type Prefix Example Boolean b bContinue Int n nIndex Short n nIndex Character c cFirstInitial Float f Percent Double

헝가리안 표기법 더 읽기"

class로 작성된 DLL 사용방법

Class를 아무런 생각없이 DLL(dynamic link library )로 만들어버렸다.. -_-;; 다만들고 나서 사용할려고 보니 막막한것… T^T   이리저리 뒤지고 뒤지다 알아낸 방법이다.   대략 방법은 예를 들어 설명하면 사용할 클래스 이름을 CMy이라 하면   /////////////////////////////////////////////////////////////////////////////////////// – dll class header   class CMy{public: CMy();        // 생성자 ~CMy();        // 파괴자:연결 핸들을 해제한다.   //사용할

class로 작성된 DLL 사용방법 더 읽기"

PostQuitMessage() 사용시 주의사항

스레드 메시지 큐에 WM_QUIT 메시지를 붙이고 즉시 리턴한다. WM_QUIT 메시지를 큐에 붙임으로써 시스템에게 이 스레드가 종료될 것이라는 것을 미리 알려준다. 메시지 루프는 보통 WM_QUIT 메시지를 받으면 종료하도록 되어 있으므로 이 함수를 호출하면 메시지 루프가 종료된다. 특히 이 함수를 호출하는 스레드가 주 스레드일 경우는 주 스레드의 메시지 루프가 종료됨으로써 프로세스가 종료된다.   단, 이 함수는 메시지를

PostQuitMessage() 사용시 주의사항 더 읽기"

윈도우즈 MFC 클래스 접근 4가지 방법

예전에 4대 Class 접근방법이라는 자료중 다음 클래스간의 포인터 얻는 방법.그림으로 설명된것이 있는데 찾을수가 없다 ㅠ_ㅠ CTestApp, CMainFrame, CTestDoc, CTestView ◎ CTestApp에서CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();CTestDoc* pDoc = (CTestDoc*)((CMainFrame*)AfxGetMainWnd())->GetActiveDocument();CTestView* pView = (CTestView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView(); ◎ CMainFrame에서CTestApp* pApp = (CTestApp*)AfxGetApp();CTestDoc* pDoc = (CTestDoc*)GetActiveDocument();CTestView* pView = (CTestView*)GetActiveView(); ◎ CTestDoc에서CTestApp* pApp = (CTestApp*)AfxGetApp();CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();CTestView* pView = (CTestView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView(); ◎ CTestView에서CTestApp* pApp = (CTestApp*)AfxGetApp();CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();             

윈도우즈 MFC 클래스 접근 4가지 방법 더 읽기"

윈도우 explorer의 contextmenu에 사용자 메뉴항목을 추가하는 방법

윈도우 explorer의 contextmenu에 사용자 메뉴항목을 추가하는 방법. 1. ATL COM AppWizard를 이용 프로젝트를 생성한다. 2. New ATL Object로 Simple Object를 추가한다. 3. 추가한 Simple Object의 헤더 파일을 보면 아래와 비슷한 항목들이 있는데 적당히 추가한다.   #include “IContextMenuImpl.h”  //추가선언 class ATL_NO_VTABLE 클래스 이름:  ……  public IShellExtInit, public IContextMenuImpl,  …… //IContextMenuSTDMETHOD(GetCommandString)(UINT, UINT, UINT*, LPTSTR, UINT);STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO);STDMETHOD(QueryContextMenu)(HMENU, UINT, UINT, UINT,

윈도우 explorer의 contextmenu에 사용자 메뉴항목을 추가하는 방법 더 읽기"

링크파일(*.lnk)의 대상 추출하기

링크파일(*.lnk)의 대상 추출하기   링크파일에서 대상 파일의 Full Path를 찾는 방법이다….       HRESULT hres;     IShellLink* psl;     char szGotPath[MAX_PATH];     char szDescription[MAX_PATH];     WIN32_FIND_DATA wfd;      // Get a pointer to the IShellLink interface.     hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,            

링크파일(*.lnk)의 대상 추출하기 더 읽기"

동적 아이콘 할당

동적 아이콘 할당….   아이콘 핸들러를 이용한 동적 아이콘 할당에 대하여 알아보자. 본 내용은 정보문화사의 PROFESSIONAL Visual C++ Windows Programming 의 내용을 발췌   작성할 프로그램은 Bitmap의 색 깊이(저장시 단색, 256색, 16색, 24비트로 나눠서 저장이 가능하다)에 따라 아이콘을 다르게 표시 하도록 하는 것 이다 ATL COM AppWizard를 이용해 프로젝트를 생성한다. Server Type – Dynamic Link

동적 아이콘 할당 더 읽기"

현재 프로세서의 상위 프로세서 알아내는 로직

현재 프로세서의 상위 프로세서 알아내는 로직…   PROCESSENTRY32를 이용하여 프로세서의 상위 프로세서의 정보를 알아낸후 다시한번 로직을 거쳐 프로세서의 이름을 알아내는 로직이다.   업무 중 현재 기동되는 Application의 부모 Process가 무엇인지 조사하여 처리할 내용이 있어 조사한 내용을 토대로 회사업무에 맞게 자체 수정한 내용임…     // 상위 프로세서의 PID를 알아내는 함수 BOOL GetParentProcessId(PROCESSENTRY32* pe32){#ifdef SCMS_DEBUG_WEBDAV LogOut(“scmsds02 GetParentProcessId

현재 프로세서의 상위 프로세서 알아내는 로직 더 읽기"

Directory Depth 구하는 함수 (VC)

DWORD QueryMaximumDepthofSomePath(LPCTSTR lpszPath){ WIN32_FIND_DATA wfs; HANDLE hFile = NULL;  TCHAR FullDirPath[MAX_PATH]; TCHAR NewDirPath[MAX_PATH]; ZeroMemory(FullDirPath, sizeof(FullDirPath)); ZeroMemory(NewDirPath, sizeof(NewDirPath));  int nCount = 1;      //디렉토리 깊이 (입력받은 lpszPath 부터 카운트 한다.) int nTotCount = 0;     //최하위 디렉토리 깊이  // 폴더가 존재 하는지, 드라이브인지 체크 if ( PathIsRoot(lpszPath) || _access(lpszPath, 0) == -1 ) {  return 0; }  wsprintf(FullDirPath,    “%s\\*.*”,lpszPath);  // Start scaning

Directory Depth 구하는 함수 (VC) 더 읽기"

SHGetSpecialFolderPath()

SHGetSpecialFolderPath()   Minimum DLL Version shell32.dll version 4.71 or later Custom Implementation No Header shlobj.h Import library shell32.lib Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0 Unicode Implemented as ANSI and Unicode versions.    BOOL SHGetSpecialFolderPath(          HWND hwndOwner,  

SHGetSpecialFolderPath() 더 읽기"

위로 스크롤