일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vb
- dll
- Firebird
- VB.NET
- 초보
- 기초
- 파이어버드
- xml
- 셋업
- c#
- 델파이
- Visual Studio 2005
- 예제
- 파라미터
- SQL
- MySQL
- 인스톨
- 데이터베이스
- Visual Basic
- Delphi
- 소니
- 문자열
- winsock
- MFC
- 설치
- 입문
- 시리얼 통신
- PostgreSQL
- SDK
- WIN32 SDK
- Today
- Total
목록Win32 SDK 초보 (27)
프로그래밍 노트
파일에는 텍스트 파일과 바이너리 파일의 두종류가 있다. 텍스트 파일은 문자 정보로 되어있는 파일이고 윈도우즈에 있는 메모장같은 텍스트 에디터로 편집할 수 있는 파일이다. 에디터로 열어 보면 어떤 데이터가 들어있는지 볼 수 있다. 이에 반해 바이너리 파일은 바이너리, 2진수의 데이터가 나열되어있는 파일로 16진수로 변환하여 덤프 표시를 해주는 프로그램을 사용해서 볼수 있다. 그렇게 본다고 해도 사람이 이해할 수 있는 데이터인 경우도 있지만 주로 이해할 수 없는 데이터들일 것이다. 예를 들면 C언어의 소스 파일은 텍스트 파일이지만 소스 파일을 컴파일/링크하여 생기는 오브젝트 파일(*.obj파일)이나 실행 파일은 바이너리 파일이다. 이런 파일을 텍스트 에디터로 읽어봐도 무슨 의미인지 알 수 없다. 그러나 컴퓨..
■ 소스1 int n = 0; HANDLE hFile = CreateFile(sPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile == INVALID_HANDLE_VALUE) // 에러 else { char buffer[65536]; DWORD dwRead; int n = 0; while(1) { if(!ReadFile(hFile, buffer, sizeof buffer, &dwRead, NULL) || !dwRead) break; n += std::count(buffer, buffer + dwRead, '\n'); } CloseHandle(hFile); } ■ 소스2 static i..
VB IIf(Expression, TruePart, FalsePart) C (Expression ? TruePart: FalsePart )
설명은 따로 필요없을 것같다. 그냥 밑에 소스를 보면.... void main() { int nDec = 0; char szHex[16]; // 16진수를 10진수로 sprintf(szHex, "FF"); nDec = (int)strtol(szHex, NULL, 16); printf(" %s -> %d \n", szHex, nDec); nDec = nDec - 0xF; // 10진수를 16진수로 sprintf(szHex, "%X", nDec); printf("%d -> %s \n", nDec, szHex); } 실행한 결과 FF -> 255 240 -> F0 strtol 함수를 알면 16진수를 10진수로 바꾸는 것을 한줄에 끝낼 수 있는데 저 함수를 모르면... sprintf의 포멧에서 %X를 쓰느냐 %..
CreateSemaphore와 WaitForSingleObject을 이용하여 어떤 어플리케이션을 한번에 3개까지만 실행 하게하기 #include #include #define SEMAPHORE_NAME "Semaphore Sample" // 어플리케이션을 한번에 3개까지만 실행 하게 int main() { HANDLE hSemaphore; DWORD dwResult; // 세마포어 만들기 hSemaphore = CreateSemaphore(NULL, 3, 3, (LPCSTR)SEMAPHORE_NAME); // 지정한 오브젝트가 시그널 상태가 되 dwResult = WaitForSingleObject(hSemaphore, // 세마포어 오브젝트 핸들 0); // 타임아웃시간 // 만들어진 세마포어 확인 i..
플렛폼 SDK CreateSemaphore 유명한 혹은 무명한 세마포어 오브젝트를 만들거나 Open한다.HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // 시큐리티 기술자 LONG lInitialCount, // 초기 카운트 LONG lMaximumCount, // 최대 카운트 LPCTSTR lpName // 오브젝트 이름 );파라미터 lpSemaphoreAttributes 자식 프로세스가 얻은 핸들을 계승할 것인가를 결정한다.1개의 SECURITY_ATTRIBUTES 구조체에의 포인터를 지정한다. NULL로 지정하면 자식 프로세스는 그 핸들을 계승할 수 없다. Windows NT/2000:SECURITY_ATTRIBUTES 구..
플랫폼 SDK WaitForSingleObject 지정한 오브젝트가 시그널 상태가 되거나 타임아웃이 되면 제어를 돌려준다. (지정한 오브젝트가 비시그널 상태이면 시그널 상태가 될때 까지 설정한 타임아웃 시간 만큼WaitForSingleObject에서 대기한다. 당연한 이야기지만 시그널 상태면 바로 다음으로 넘어간다.) 대기 상태라는 것을 알려주려면 WaitForMultipleObjectsEx 함수를 사용한다. 복수의 오브젝트를 대기하기 위해서는 WaitForMultipleObjects 함수를 사용한다.DWORD WaitForSingleObject( HANDLE hHandle, // 오브젝트 핸들 DWORD dwMilliseconds // 타임아웃 시간 );파라미터 hHandle 오브젝트의 핸들을 지정한다..
Visual C++ 2005 Express Edition에서 Win32어플리케이션을 만들기위해서는 몇가지 설정을 해주어야된다. 1) 먼저 Visual C++ 2005 Express Edition 다운로드해서 셋업한다. 2) Microsoft Platform SDK를 다운로드해서 셋업한다. 3) 패스를 설정한다. Visual C++ 2005 Express Edition을 시작해서 툴 > 옵션 > 프로젝트 및 솔루션 > VC++ 디렉토리에 Microsoft Platform SDK의 Bin, Includem lib의 패스를 추가한다. 4) 라이브러리 추가 C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults \corewin_express.vsprop..
OS에서 제공하는 타이머 함수 함수 측정 단위 Resolution --------------------------------------------------------------------------- Now, Time, Timer sec 1 sec GetTickCount msec 거의 10 msec TimeGetTime msec 거의 10 msec QueryPerformanceCounter QueryPerformanceFrequency 같음 음 거의 10msec이라는 것이...
WIN32 SDK에서 시리얼 통신을 하려면... WinAPI에서는 시리얼 포트도 파일처럼 CreateFile로 파일을 열고 WriteFile로 데이터를 쓰거나 ReadFile로 데이터를 읽거나 CloseHandle로 파일을 닫는다. 일반적으로 파일을 다루는 것과 비슷하지만 시리얼 통신에서는 여기에다가 통신을 하기위한 설정이 필요한다. SetCommState가 이런한 설정을 하게된다. 시리얼 통신을 하기위한 순서는 1) CreateFile로 파일을 연다. 2) SetCommState함수로 통신포트의 설정을 한다. 3) ReadFile이나 WriteFile로 데이터를 송수신한다. 4) CloseHandle로 파일을 닫는다. 시리얼 통신을 하기위해서는 Windows에서는 HANDLE형의 변수로 파일등의 오브젝..