{
서비스 하나 만들기 위한 세 가지 프로그램
- 서비스 프로그램 - 실제로 서비스 코드를 제공하는 프로그램
 
- 서비스 설정 프로그램 - 서비스 설치와 제거에 대한 작업을 수행하는 프로그램
- 서비스 제어 프로그램 - 사용자로부터 명령을 받아 서비스에게 명령을 전달하는 프로그램
 
Ipc 는 두 프로그램이 상호 통신하며 정보를 교환하는 방법이다.
- 메세지
- 파이프
- 메일슬롯
- 소켓
파일매핑 - 프로세스간에 자원공유
등이 있다.
CreateNamedPipe(파이프명(\\.\pipe\파이프명, Access모드(읽고 쓰기), 파이프유형, 5(같은 파이프 이름 최대의 인스턴스 개수, 4096, 4096, 0(접근을 하기위한 대기시간), 보안기술자); 
메세지 보내는 유형
Stream - 파일같은거 보낼 때  PIPE_TYPE_BYTE 
Dgram   -리얼타임보장 예) 방송   PIPE_TYPE_MESSAGE 
CreatenamedPipe()
----------------(1) 이 사이에 클라이언트 접속시 ConnectenamedPipe False로 반환된다. 
ConnectenamedPipe(핸들, 0);
if(!Check)&&(GetLastError() == ERROR_PIPE_CONNECTED)) //(1) 상황일시 발생 
{
Check = true;
}
if(Check)
{
}
FlushFileBuffer(hfile); //ffulsh와 유사, Disconected 를 해도 문제가 생기는데 운영체제에서 버퍼가 남는 문제가 생길수있다.
직렬화 - 객체정보를 화일에 전송 
역직렬화 - 생성자
| Hooking (0) | 2010.01.15 | 
|---|---|
| 서비스 (0) | 2010.01.13 | 
| 동기화 (0) | 2010.01.12 | 
| 디폴트 함수 (0) | 2010.01.04 | 
| API (원 가지고 놀기) (0) | 2010.01.04 | 
| 서비스 (0) | 2010.01.13 | 
|---|---|
| IPC란? (0) | 2010.01.12 | 
| 디폴트 함수 (0) | 2010.01.04 | 
| API (원 가지고 놀기) (0) | 2010.01.04 | 
| API란? (0) | 2010.01.04 | 
#include <windows.h>
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch( msg )
 {
 case WM_LBUTTONDOWN:
  return 0;
 case WM_RBUTTONDOWN:
  return 0;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
       LPSTR lpCmdLine, int nShowCmd)
{
 // 1. 윈도우 클래스 만들기 
 WNDCLASS wc;
 wc.cbWndExtra   = 0;
 wc.cbClsExtra   = 0;
 wc.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.hCursor    = LoadCursor(0, IDC_ARROW);
 wc.hIcon    = LoadIcon(0, IDI_APPLICATION);
 wc.hInstance   = hInstance;
 wc.lpfnWndProc   = WndProc;   // DefWindowProc;
 wc.lpszClassName  = "First";
 wc.lpszMenuName   = 0;
 wc.style    = 0;
 // 2. 등록(레지스트리에)
 RegisterClass(&wc);
 // 3. 윈도우 창 만들기 
 HWND hwnd = CreateWindowEx( 0,     // WS_EX_TOPMOST
     "first",    // 클래스 명
     "Hello",    // 캡션바 내용
     WS_OVERLAPPEDWINDOW, 
     CW_USEDEFAULT , 0, CW_USEDEFAULT, 0, // 초기 위치 
     0, 0,   // 부모 윈도우 핸들, 메뉴 핸들
     hInstance,  // WinMain의 1번째 파라미터 (exe 주소)
     0);   // 생성 인자
 // 4. 윈도우 보여주기
 ShowWindow(hwnd, SW_SHOW);
 UpdateWindow(hwnd);
 
 // 5. Message 
 MSG msg;
 while( GetMessage( &msg, 0, 0, 0 ) )
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return 0;
}
| 서비스 (0) | 2010.01.13 | 
|---|---|
| IPC란? (0) | 2010.01.12 | 
| 동기화 (0) | 2010.01.12 | 
| API (원 가지고 놀기) (0) | 2010.01.04 | 
| API란? (0) | 2010.01.04 |