컴퓨터 공부/Win32 API 프로그래밍

[5월 8일 3교시] 메모리 2 + 멀티 쓰레드 1

려리군 2009. 5. 8. 16:05

Memory Mapped File

파일을 마치 메모리인 것처럼 사용하는 기법


HANDLE WINAPI CreateFileMapping(__in      HANDLE hFile, __in_opt  LPSECURITY_ATTRIBUTES lpAttributes, __in      DWORD flProtect, __in      DWORD dwMaximumSizeHigh, __in      DWORD dwMaximumSizeLow, __in_opt  LPCTSTR lpName);

참고주소 : http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx

디스크 상의 파일을 메모리처럼 사용 가능하도록 맵하는 데 필요한 핸들을 얻는다.

 - hFile : 대상 파일의 핸들

 - lpAttributes : 보안 정보

 - flProtect : 접근형태. PAGE_READONLY, PAGE_WRITE, PAGE_WRITECOPY(Copy on Write) : 쓰기 수행시 별도의 복사본 생성.

 - dwMaximumSizeHigh, 


MapViewOfFile


프로세스

프로세스

실행중인 프로그램, 인스턴스

방잡기(공간적인 개념, spatial)

쓰레드

실제 일을 하는 것.(작업을 담당)

놀기(시간적인 개념, temporal)


멀티 쓰레드 : 하나의 프로세스가 복수 개의 쓰레드를 가짐.


프로세스 관련 함수.

UINT WINAPI WinExec(__in  LPCSTR lpCmdLine, __in  UINT uCmdShow);

참고주소 : http://msdn.microsoft.com/en-us/library/ms687393(VS.85).aspx

WIN16용 함수.

실행 파일을 현재 디렉터리-> 시스템 디렉터리-> 윈도우즈 디렉터리 -> PATH 순서대로 찾아 프로그램을 실행

프로그램이 GetMessage를 처음 호출할 때 리턴.


리턴 : 성공시 31보다 큰 값. 실패시 31이하의 오류코드값.

lpCmdshow : 실행 파일의 경로

uCmdshow : 보여줄 형태


BOOL WINAPI CreateProcess(__in_opt     LPCTSTR lpApplicationName,__inout_opt  LPTSTR lpCommandLine, __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes, __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes, __in         BOOL bInheritHandles, __in         DWORD dwCreationFlags,  __in_opt     LPVOID lpEnvironment, __in_opt     LPCTSTR lpCurrentDirectory, __in         LPSTARTUPINFO lpStartupInfo, __out        LPPROCESS_INFORMATION lpProcessInformation);

참고주소 : http://msdn.microsoft.com/en-us/library/ms682425.aspx

WIN32용 함수.

두번째 인수를 주로 사용(WinExec처럼 실행하기 위해 경로검색을 한다.)

함수를 수행하고 바로 리턴.


lpApplicationName : 프로그램 이름(사용 안해도 됨)

lpCommandLine : 실행 파일의 경로

lpProcessAttributes :  프로세스 보안 속성

lpThreadAttributes : 쓰레드 보안속성.

(예시 : 키 값이 3이면 프로세스 1,2를 모두 접근할 수 있다.)

bInheritHandles : 부모 핸들을 상속할 수 있는 가 여부 설정.

dwCreationFlags : 우선순위 클래스와 프로세스 생성 옵션 지정.

lpEnvironment : 환경변수 설정

lpStartupInfo : 실행할 프로그램의 시작 정보(CreateWindow), 위의 3개만 윈도우 응용 프로그램과 관련

STARTUPINFO 구조체 정보 :http://msdn.microsoft.com/en-us/library/ms686331(VS.85).aspx

lpProcessInformation : 생성된 프로세스의 정보를 얻음.