Loading...

safe memcpy

사용법 uiSize = sizeof( D3DXVECTOR2 ); SafeMemcpy(dstbuffer, srcbuffer, uiSize, start(여기선 dstbuffer), 마지막위치(여기선 dstbuffer + (uSize+1))); 이런식으로 사용하면 된다. 그냥 간단히 src와 dst, 그리고 복사할만큼의 크기로 memcpy할때 안전한지 체크한다. 그다지 쓸일이 많지 않기도 하지만 중요한 부분을 처리할때는 이렇게 사용해도 괜춘은듯. 그냥 api보고 베껴서 만들었다.흐헤헤. BOOL SafeMemcpy(void *dst, void *src, size_t n, void *start, void *end) { if(n < 1) { #ifdef _DEBUG MGASSERT(!"Font memcpy fai..

2010. 10. 31. 00:48

CreateEvent

대기상태에 있는 스레드 모두를 실행가능한 상태로 변경해 줄 수 있다. HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPTSTR lpName ); lpEventAttributes : NULL 넣어주면 된다. bManualReset : manual-reset 모드 event로 생성할 것인지 auto-reset 모드 event로 생성할 것인지 지정. 만약 TRUE를 전달하면 manual-reset모드의 event가 발생하는데 event가 signaled 상태에 있을 경우 resetevent함수를 호출하지 않는 이상 non-signaled상태로 돌아가지 않는다. 반면에 FALSE..

2010. 10. 30. 23:11

_beginthreadex

스레드를 생성하는 함수. 스레드는 커널에 의해 생성되는 리소스이므로 커널 오브젝트가 생성될 것이고 함수 호출이 끝나면 커널 오브젝트를 의미하는 핸들이 리턴 될 것이다. 1. Win32 API의 CreateThread 대신 C Run Time Library의 _beginthreadex를 써야하는 경우 1.부동 소수형 변수나 함수를 사용할 경우 2.C의 malloc과 free나 C++ 의 new와 delete 를 사용할경우 3.stdio.h 나 io.h에서 어떤 함수를 호출한다면 4.strtok() 나 rand() 와 같이 정적 버퍼를 사용 하는 어떤 런타임 함수를 호출할 경우 출처 : http://www.fiadot.com/TatterTools/index.php?pl=476&setdate=200402&PH..

2010. 10. 30. 22:03

WaitForSingleObject

DWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval ); 실패시 WAIT_FAILED 리턴 HhANDLE : 상태를 확인할 커널 오브젝트의 핸들을 전달. 이 핸들의 커널 오브젝트 상태가 signaled가 되어야 리턴한다. non-signaled상태에 있을 경우 함수는 리턴하지 않고 대기상태로 들어간다. dwMilliseconds : 타임아웃을 설정한다. 커널오브젝트가 singnaled 상태로 바뀌지 않을 경우 무한대기 상태로 빠질수 있다. 그러나 타임아웃을 설정해 놓으면 그 시간이 지나서 바로 리턴하게 된다. 1/1000초 단위로 설정한다. 만약 INFINITE를 전달할..

pointer to member function의 크기?

본문 : http://www.gpgstudy.com/forum/viewtopic.php?topic=5749 VC 컴파일러 혹은 링커의 버그를 발견한 듯 싶습니다. 올려짐: 2005-04-24 09:38 자세한 내용은 http://wminos.jaram...p/Project_PacMan#s-5 위키에 정리해놨습니다. ----------------------- 팩맨 게임 코어에 GUI시스템을 작성하던 중 실행타임 버그를 발견하게 되었습니다. 디버깅을 아무리 해도, 납득할 수 없는 현상이었는데. 소스에는 아무런 문제가 없어 보입니다. dev-c++ 로는 에러없이 컴파일 되는군요. vc7 과 vc8 beta 에서는 에러가 발생합니다. 몇시간을 디버깅 한 결과, 발생 원인을 알게 되었고.. 스샷과 그 현상이 일어..

The <algorithm> header doesn't seem to contain std::min() and std::max() any longer

std::min, std::max를 쓰는데 이상한 오류가 났다. 이에대해 찾은 해결책. The header doesn't seem to contain std::min() and std::max() any longer. I looked in the VC\include folder and found only minmax.h with old macros-based min() and max() implementation. VS2005B2 MSDN clains min() and max() are still available in the header. algorithim 헤더가 std::min이랑 std::max를 가지고 있지 않은것 같애 ㅜㅜ. 그래서 내가 vc의 include 폴더의 minmax를 찾아서 살펴보..

shader 2.0 & 3.0

이전에 입사하면서 2.0과 3.0의 차이를 말하라는 면접질문을 받은적이 있다. 지금도 그렇지만 그때는 더욱 아는게 없었고 그래서 머 농담식으로 "3.0이 2.0보다 더 좋을 겁니다" 라고 했었었다. 그냥 그때 알고 있던 거라도 말할걸 그랬나 하고 일년반이나 지난 지금 후회하고 있긴 하지만... 머, 결국은 회사 잘 다니고 있으니까.. ㅎㅎㅎ. shader 공부를 하는도중에 생각이 나서좀 정리를 해두고싶네.. 2.0과 3.0의 차이점. 1. 유연한 입출력 선언. 세이더 프로그램에 대한 입력의 수가 지원되는 입력 레지스터의 수를 초과하더라도, 여러 입력들을 한 레지스터에 함께 넣ㅇ르 수 있다. 2. 조건자의 제공. 동적인 쓰기 마스킹이 가능한 4개의 불린 플래그들의 묶음으로 이루어진 레지스터. 이 레지스터를..

DirectX SDK 9.0c 의 Pure Device 에 대한 보고

출처 : http://www.tomatowax.com/ZeroboardXE/6856 1. DirectX SDK Direct3D Device 의 생성시 사용될 수 있는 PURE DEVICE Option Flag D3DCREATE_PUREDEVICE Specifies that Direct3D does not support Get* calls for anything that can be stored in state blocks. It also tells Direct3D not to provide any emulation services for vertex processing. This means that if the device does not support vertex processing, then the ..