* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고
뇌를 자극하는 윈도우즈 시스템 프로그래밍 |
product.kyobobook.co.kr
[지금 무료]뇌를 자극하는 윈도우즈 시스템 프로그래밍 강의 | 한빛미디어 - 인프런
한빛미디어 | , [사진] 1. 강좌 소개 한빛미디어(주) 에서 발간한 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 의 저자 윤성우 님이 직접 강의하는 온라인 강좌입니다. 이미 여러 저서와 온라인
www.inflearn.com
* CreateFile 함수 - 파일 열기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-createfilea
CreateFileA 함수(fileapi.h) - Win32 apps
파일 또는 I/O 디바이스를 만들거나 엽니다. 가장 일반적으로 사용되는 I/O 디바이스는 다음과 같습니다. \_file, 파일 스트림, 디렉터리, 실제 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 통신 리소
learn.microsoft.com
* CloseHandle 함수 - 파일 종료
* ReadFile 함수 - 파일 읽기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-readfile
ReadFile 함수(fileapi.h) - Win32 apps
지정된 파일 또는 I/O(입출력) 디바이스에서 데이터를 읽습니다. 읽기는 디바이스에서 지원하는 경우 파일 포인터로 지정된 위치에서 발생합니다.
learn.microsoft.com
(+) 파일 읽고 난 뒤 메모리 상태 확인
* WriteFile 함수 - 파일 쓰기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-writefile
WriteFile 함수(fileapi.h) - Win32 apps
지정된 파일 또는 I/O(입출력) 디바이스에 데이터를 씁니다.
learn.microsoft.com
* GetFileTime 함수 - 파일의 시간 정보 얻어오기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfiletime
GetFileTime 함수(fileapi.h) - Win32 apps
파일 또는 디렉터리를 만들고, 마지막으로 액세스하고, 마지막으로 수정한 날짜와 시간을 검색합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/timezoneapi/nf-timezoneapi-filetimetosystemtime
FileTimeToSystemTime 함수(timezoneapi.h) - Win32 apps
파일 시간을 시스템 시간 형식으로 변환합니다. 시스템 시간은 UTC(협정 세계시)를 기준으로 합니다.
learn.microsoft.com
SystemTimeToTzSpecificLocalTime 함수(timezoneapi.h) - Win32 apps
UTC(협정 세계시)의 시간을 지정된 표준 시간대의 해당 현지 시간으로 변환합니다.
learn.microsoft.com
* GetFileSize 함수 - 파일 사이즈 얻어오기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfilesize
GetFileSize 함수(fileapi.h) - Win32 apps
지정된 파일의 크기(바이트)를 검색합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfilesizeex
GetFileSizeEx 함수(fileapi.h) - Win32 apps
지정된 파일의 크기를 검색합니다.
learn.microsoft.com
* GetFileAttributes 함수 - 파일의 특성(Attribute) 정보 얻어오기, SetFileAttributes 함수 - 파일의 특성(Attribute) 세팅하기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfileattributesa
GetFileAttributesA 함수(fileapi.h) - Win32 apps
지정된 파일 또는 디렉터리에 대한 파일 시스템 특성을 검색합니다. (ANSI)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-setfileattributesa
SetFileAttributesA 함수(fileapi.h) - Win32 apps
파일 또는 디렉터리의 특성을 설정합니다. (ANSI)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/fileio/file-attribute-constants
파일 특성 상수(WinNT.h) - Win32 apps
파일 특성은 디스크의 파일 시스템에 의해 저장된 메타데이터 값이며 시스템에서 사용되고 다양한 파일 I/O API를 통해 개발자가 사용할 수 있습니다.
learn.microsoft.com
* GetFileInformationByHandle 함수 - 파일의 특성(Attribute) 정보 핸들로부터 얻어오기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfileinformationbyhandle
GetFileInformationByHandle 함수(fileapi.h) - Win32 apps
지정된 파일의 파일 정보를 검색합니다. (GetFileInformationByHandle)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/ns-fileapi-by_handle_file_information
BY_HANDLE_FILE_INFORMATION(fileapi.h) - Win32 apps
GetFileInformationByHandle 함수가 검색하는 정보를 포함합니다.
learn.microsoft.com
(1) DWORD nFileSizeHigh;
파일 크기의 상위 32비트
(2) DWORD nFileSizeLow;
파일 크기의 하위 32비트
(3) 64비트 파일 크기 계산 방법
ULONGLONG fileSize = ((ULONGLONG)fileInfo.nFileSizeHigh << 32) | fileInfo.nFileSizeLow;
ㄴ nFileSizeHigh를 상위 32비트로 이동(<< 32)
ㄴ nFileSizeLow를 하위 32비트로 그대로 유지
ㄴ | 연산을 사용해 두 개의 32비트 값을 64비트로 합침
* GetFullPathName 함수 - 파일의 경로(Path) 정보 얻어오기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfullpathnamea
GetFullPathNameA 함수(fileapi.h) - Win32 apps
지정된 파일의 전체 경로 및 파일 이름을 검색합니다. (ANSI)
learn.microsoft.com
* SetFilePointer 함수 - 파일 포인터 이동
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-setfilepointer
SetFilePointer 함수(fileapi.h) - Win32 apps
지정된 파일의 파일 포인터를 이동합니다. (SetFilePointer)
learn.microsoft.com
(1) 32비트 기반
- 오류 검사 코드
if (dwPtr == INVALID_SET_FILE_POINTER)
{
// 오류 처리
}
- lDistanceToMove : 이동시킬 거리를 지정
- lDistanceToMoveHigh : 무조건 NULL 전달, 상위 4바이트 정보이기 때문에 32비트에서는 의미 없음
(2) 64비트 기반
- 오류 검사 코드
if ((dwPtrLow == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR))
{
// 오류 처리
}
- lDistanceToMove : 이동시킬 거리를 지정, 하위 4바이트 정보를 표현
- lDistanceToMoveHigh : 상위 4바이트 정보를 표현
* CreateDirectory 함수 - 디렉터리 생성
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-createdirectory
CreateDirectory 함수(winbase.h) - Win32 apps
CreateDirectory 함수(winbase.h)는 새 디렉터리를 만듭니다.
learn.microsoft.com
* RemoveDirectory 함수 - 디렉터리 소멸
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-removedirectorya
RemoveDirectoryA 함수(fileapi.h) - Win32 apps
기존 빈 디렉터리를 삭제합니다. (ANSI)
learn.microsoft.com
* GetCurrentDirectory 함수 - 현재 디렉터리 검색, SetCurrentDirectory 함수 - 현재 디렉터리 변경
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-getcurrentdirectory
GetCurrentDirectory 함수(winbase.h) - Win32 apps
현재 프로세스의 현재 디렉터리를 검색합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-setcurrentdirectory
SetCurrentDirectory 함수(winbase.h) - Win32 apps
현재 프로세스의 현재 디렉터리를 변경합니다.
learn.microsoft.com
ㄴ 현재 디렉터리(Current Directory)
프로그램이 로드(Load)된 디렉터리(즉, 실행파일이 존재하는 디렉터리)
초기에는 프로그램이 로드(Load)된 디렉터리로 설정되며, 이후 변경 가능
* GetSystemDirectory 함수 - 시스템 디렉터리 경로 검색, GetWindowsDirectory 함수 - Windows 디렉터리 경로 검색
https://learn.microsoft.com/ko-kr/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemdirectoryw
GetSystemDirectoryW 함수(sysinfoapi.h) - Win32 apps
시스템 디렉터리의 경로를 검색합니다. (유니코드)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/sysinfoapi/nf-sysinfoapi-getwindowsdirectoryw
GetWindowsDirectoryW 함수(sysinfoapi.h) - Win32 apps
Windows 디렉터리의 경로를 검색합니다. (유니코드)
learn.microsoft.com
ㄴ 시스템 디렉터리
각종 라이브러리(DLL) 및 드라이브 파일처럼 Windows 시스템에 중요한 파일들이 존재하는 위치
현재 디렉터리와 달리 변경 불가
ㄴ Windows 디렉터리(시스템 디렉터리 포함)
초기화 및 실행파일들이 존재하는 위치 → Windows가 부팅되고 실행되기 위해 필요한 모든 파일들이 위치하는 곳
현재 디렉터리와 달리 변경 불가
* Windows에서 드라이버(driver)는 하드웨어 장치와 운영체제(OS) 간의 통신을 담당하는 소프트웨어를 의미한다
ㄴ 드라이버 (.sys): 하드웨어와 직접 연결되는 OS 구성 요소
ㄴ DLL (.dll): 여러 프로그램이 공통적으로 사용하는 코드 라이브러리
(+) 예를 들어, kernel32.dll은 시스템 호출을 지원하지만, 하드웨어를 직접 제어하는 드라이버는 아님
https://shine94.tistory.com/403
[운영체제] 시스템 콜(System Call)
* 시스템 콜(System Call) 사용자 모드에서 운영체제(OS)의 커널의 기능을 요청할 수 있도록 제공되는 인터페이스 (예) 운영체제(OS)의 API ㄴ 유저는 시스템 콜을 사용하여 OS에 요청을
shine94.tistory.com
* SearchPath 함수 - 지정된 경로에서 지정된 파일 검색
https://learn.microsoft.com/ko-kr/windows/win32/api/processenv/nf-processenv-searchpatha
SearchPathA 함수 - Win32 apps
지정된 경로에서 지정된 파일을 검색합니다. (ANSI)
learn.microsoft.com
(+) lpPath 값이 NULL이 전달되면, 표준 검색 경로와 같은 순서로 파일을 찾게 된다
① 실행 중인 프로그램이 로드(Load)된 디렉터리
② 현재 디렉터리
③ 시스템 디렉터리
④ Windows 디렉터리
⑤ 환경변수 PATH에 등록된 디렉터리
* FindFirstFile 함수, FindNextFile 함수, FindClose 함수 - 디렉터리에서 파일 찾기
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-findfirstfilea
FindFirstFileA 함수(fileapi.h) - Win32 apps
디렉터리에서 특정 이름과 일치하는 이름으로 파일 또는 하위 디렉터리를 검색합니다(또는 와일드카드를 사용하는 경우 부분 이름). (ANSI)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-findnextfilea
FindNextFileA 함수(fileapi.h) - Win32 apps
FindFirstFile, FindFirstFileEx 또는 FindFirstFileTransacted 함수에 대한 이전 호출에서 파일 검색을 계속합니다. (ANSI)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-findclose
FindClose 함수(fileapi.h) - Win32 apps
FindFirstFile, FindFirstFileEx, FindFirstFileNameW, FindFirstFileNameTransactedW, FindFirstFileTransacted, FindFirstStreamTransactedW 또는 FindFirstStreamW 함수가 연 파일 검색 핸들을 닫습니다.
learn.microsoft.com
'IT공부 > IT서적' 카테고리의 다른 글
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 17장. 구조적 예외처리(SEH) 기법 (0) | 2025.02.25 |
---|---|
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 15장. 쓰레드 풀링(Pooling), 16장. 컴퓨터 구조 - 4 (0) | 2025.02.20 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 13장, 14장. 쓰레드 동기화 기법 1, 쓰레드 동기화 기법 2 (0) | 2025.02.17 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 12장. 쓰레드의 생성과 소멸 (0) | 2025.02.13 |
[윤성우 열혈 C프로그래밍] 릴리즈 빌드(최적화 컴파일러 OFF), 어셈블리 코드 - Chapter25 (0) | 2025.02.12 |