분류 전체보기294 0129 - File I/O *WriteFile 2009. 1. 29. 0128- I/O (3) - Asynchronous(비동기), Overlapped *비동기 I/O : I/O자체를 O/S에게 일임해버림. Read후 Write요청을 함-> O/S가 Write마침 -> Callback함수 호출. 어찌할까? 비동기를 효율적으로 하려면 -> 동적으로 버퍼 할당후 O/S에 넘긴다. 그리고 return. Callback이 오면 다시 할당하고 넘김. 실제 Write는 커널이 알아서 해주니까. 더 빠르고 편하다. 구조 -> I/O를 걸고 callback이 올때까지 wait를 걸어준다. ->이거하지말고 그냥 리턴~~. 대신 callback에서 다음것을 읽으라고 호출해주면 좋다. Overlapped I/O가 지원되야만 File I/O를 비동기로 할 수 있다. 그리고 비동기에서 모든것을 다 O/S에 맡겨버리면 이것이 IOCP이다. *Overlapped I/O사용을 위해.. 2009. 1. 28. 0128 - File I/O (2) - Thread Ver. *스레드 기반으로 파일 I/O하기. Thread에서 사용할 파일 I/O에 관한 정보구조체 typedef struct _COPY_FILE{ TCHAR szSrcFile[MAX_PATH+_MAX_FNAME]; TCHAR szDestFile[MAX_PATH+_MAX_FNAME]; LPVOID pDlg; } -pDlg를 넣는 이유는? WorkerThread가 실행되기 전에 Dialog를 만들어두고 그 대화상자의 주소를 넘겨주기 위해서. (ProgressBar Dialog는 Main Dialog에 속해있어야한다. Thread한테 속해있는것이 아니라.) *Thread에서 사용할 함수 DWORD WINAPI ThreadCopyFile(LPVOID pParam){ COPY_FILE File; memcpy(&File, .. 2009. 1. 28. 0123 - 파일 I/O *파일객체로 생성해서 그곳에 메모리 write하면 파일에 write한거임. *이 파일 I/O를 잘하면 좋다.. device도 파일이라는 사실을 잊지말자... *CreateFile을 잘 건드릴줄 안다면... 대략 좋다. *File I/O의 가장큰 장점은 추상화 이다. 2009. 1. 23. 0123 - 서비스 프로그래밍(3) and 사용자 세션관리 * 서비스 프로그램과 사용자 프로그램의 IPC -> 서비스프로그램은 메모리에 write가능하다. 그런데 사용자는 접근을 못한다. -> 서비스가 일시적으로 권한을 떨어뜨려서 작성하자. -> 이걸 SD(Security Descriptor)를 수정해서 권한을 떨궈. 단 이것은 Admin그룹만 가능하게 해야한다. 그런데 만약 EVERYONE으로하면 뚫릴수 있다. -> 이거는 소켓이 편한데 소켓을 못써먹을경우 천상 공유메모리를 사용하여야하는데... -> 이벤트 누가받을수있어?를 고려해야한다. *권한먹기용 SD예제 SetSampleServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0); SECURITY_ATTRIBUTES SA = {0}; SA.bInheritHandle = FAL.. 2009. 1. 23. 0122 - 서비스프로그래밍 (2). 서비스프로그램등록/제거 1. Install Service Program void CServiceManagerDlg::OnButtonInstall() { // TODO: Add your control notification handler code here SC_HANDLE hServiceManager = NULL; SC_HANDLE hService = NULL; TCHAR szPath[MAX_PATH+_MAX_FNAME] = {0}; //step //1. 운영체제의 서비스매니저에 연결 hServiceManager = ::OpenSCManager(NULL, NULL,SC_MANAGER_CREATE_SERVICE); if(hServiceManager == NULL){ AfxMessageBox(_T("Error: Failed to o.. 2009. 1. 22. 이전 1 ··· 40 41 42 43 44 45 46 ··· 49 다음 728x90