TRAP FLAG를 이용하여 DEBUGING 감지자신이 만든 프로세스가 타인에 의하여 디버깅이 되고 있는지, 윈도우가 전역적으로 디버깅모드 인지 확인하는 기초적인 방법 입니다. Windows 32bit 프로세스(x86)에서 사용가능한 ASM을 이용하며 x64(AMD64)에서는 ASM를 64bit용으로 수정하시면 됩니다. Source Code12345678910111213141516171819202122232425262728293031323334353637383940414243/******************************************************************************* _ _ _ _ __ _____ ..
CRITICAL_SECTION 사용법 및 문제점우리는 프로그램을 작성할 때 다중 THREAD에서의 객체 접근을 보호 하기위한 방법으로 CRITICAL_SECTION을 많이 사용한다. 사용법은 아래와 같다 .12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364/******************************************************************************* _ _ _ _ __ _____ _ _ *| | |..
함수 및 인자 명명법에 대한 고찰 1. 기본 함수 정의 우리가 처음 배우는 함수명은 대부분 다음과 같은 형태입니다: void foo();void boo(); 하지만 이러한 함수명은 그 목적과 기능을 전혀 알 수 없기 때문에 적절하지 않습니다. 함수가 어떤 동작을 수행하는지, 리턴 값이 무엇을 의미하는지 알 수 있도록 함수명을 명확하게 짓는 것이 필요합니다. 2. 리턴 값이 있는 함수 리턴 값을 사용하는 경우 함수명을 통해 그 역할을 더욱 명확하게 나타낼 수 있습니다: bool foo(); // 성공 또는 실패를 리턴LRESULT boo(); // 특정 결과 코드 리턴 3. 함수명..
32비트 모듈을 작성 할 때 급하거나 떄론 귀찮아서 inline __asm 을 이용하어 코딩을 한다.asm을 바로 쓸 수 있기에 해당 방식을 많이 사용한다. 하지만 이제 64비트 시대 아닌가!! 그리고 고객사에서 점점 64비트 전용 프로그램들을 지원하기 시작하면서 난관에 봉착하기에 이른다. 그것은 바로!!Microsoft Visual Studio 에서는 64bit 컴파일러에서 inline __asm 코드를 더이상 지원 하지 않는다!! 참고 : http://msdn.microsoft.com/en-us/library/wbk4z78b(VS.80).aspx그럼 이제 우리는 더 이상 asm을 사용할 수 없는것인가? 절대 그렇지 않다!! 분명한것은 인라인 어셈을 이용하지 못하도록 하고 있는것이지 asm을 사용하지 ..
구조체 초기화 및 동적 할당 초기화의 중요성 1. 구조체 및 동적 할당 초기화 프로그래머들은 구조체를 사용하고 동적으로 메모리를 할당할 때, 메모리를 초기화하는 다양한 방법을 사용합니다. 하지만 기본적으로 컴파일러가 자동으로 메모리를 초기화하지 않는다면, 다음과 같은 함수들을 사용하여 초기화 작업을 해야 합니다: ::ZeroMemory(메모리 주소, 크기) memset(메모리 주소, 값, 크기) 2. 코드 예시 struct Data{ int nData1; bool bData2;};Data *pData = new Data;// 메모리 초기화::ZeroMemory(pData, sizeof(Data));::memset..
CPU 점유율 제어와 Sleep() 함수 사용1. 과도한 반복문에는 Sleep()을 사용하자무한 반복문이나 자원을 많이 소모하는 루프에서는 Sleep()을 적절히 사용하여 CPU 자원의 독점을 방지해야 합니다. 그렇지 않으면 CPU를 과도하게 점유하게 되어 프로그램이 느려지거나 UI가 응답하지 않게 될 수 있습니다.2. Windows 프로그램의 멀티 스레드 환경Windows 환경에서 UI 스레드와 기능을 처리하는 다른 스레드는 자원을 공유하게 됩니다. 이때 특정 스레드가 CPU를 과도하게 사용하면 UI 스레드가 응답하지 않거나 프로그램이 멈출 수 있습니다. 예를 들어, 무한 반복문이 있는 코드에서 CPU 100% 점유가 발생할 수 있습니다.3. CPU 100% 점유 코드 예시#include "stdafx..
- Total
- Today
- Yesterday
- ReFS
- 리눅스
- C++
- 블루버블다이브팀
- 다이빙
- PowerShell
- 제주도
- Linux
- 블루버블다이빙팀
- 서귀포블루버블
- Thread
- C
- C#
- 양파다이브
- 울릉도
- 현포다이브
- 성산블루버블
- 패턴
- 암호화
- RSA
- 서귀포
- DLL
- 디자인패턴
- Build
- 블루버블
- OpenSource
- ip
- Windows
- 윈도우
- 스쿠버다이빙
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |