디렉터리의 생성과 소멸 :
BOOL CreateDirectory(
LPCTSTR lpPathName, // 생성하려는 디렉터리 이름
LPSECURITY_ATTRIBUTES lpSecurityAttributes // 보안속성
);
BOOL RemoveDirectory(
LPCTSTR lpPathName // 소멸하려는 디렉터리 이름
);
(참고 : 절대경로 지정시 마지막 디렉터리만 생성한다.
즉, C:\\AAA\BBB 일때 (AAA 디렉터리는 존재하지 않는다) 컴퓨터는 절대로 AAA 디렉터리를 만들어 주지
않는다. 따라서 BBB 디렉터리도 만들어지지 않는다. AAA 디렉터리가 존재해야 BBB 디렉터리가 생성된다.
현재 디렉터리, 시스템 디렉터리, Windows 디렉터리 :
현재 디렉터리(Current Directory)
: 처음에는 프로그램이 로드(Load)된 디렉터리(실행파일이 존재하는 디렉터리)로 설정되며, 이후 변경 가능하다
DWORD GetCurrentDirectory(
DWORD nBufferLength, // 버퍼의 길이를 지정
LPTSTR lpBuffer // 현재 디렉터리 정보를 저장할 버퍼의 주소값을 지정
);
BOOL SetCurrentDirectory(
LPCTSTR lpPathName // 변경하고자 하는 현재 디렉터리 정보 지정
);
시스템 디렉터리(System Directory) & Windows 디렉터리
System Directory : C:\\WINDOWS\system32 // 시스템에 중요한 파일들이 존재하는 위치
Windows Directory : C:\\WINDOWS // 초기화 및 실행파일들이 존재하는 위치
변경이 불가능하다.
디렉터리에서 파일 찾기 :
DWORD SearchPath(
LPCTSTR lpPath, // 대상 경로 지정 ( 지정된 경로에서 파일을 찾게된다 )
// NULL : 표준 검색 경로로 검색
LPCTSTR lpFileName, // 찾고자 하는 파일 이름
LPCTSTR lpExtension, // 확장자를 지정하는 파라미터
DWORD nBufferLength, // 완전경로명을 저장할 버퍼의 길이
LPCTSTR lpBuffer, // 완전경로명을 저장할 버퍼의 주소
LPCTSTR *lpFilePart // 완전경로명에서 파일이름을 가리키는 포인터값
);
(참고 :
표준 검색 경로 :
1. 실행 중인 프로그램이 로드(Load)된 디렉터리(실행파일이 존재하는 디렉터리)
2. 현재 디렉터리
3. 시스템 디렉터리
4. Windows 디렉터리
5. 환경변수 PATH에 등록된 디렉터리
지정된 디렉터리 내에 존재하는 파일목록 :
1. HANDLE FindFirstFile(
LPCTSTR lpFileName, // 파일이나 디렉터리 이름을 지정
LPWIN32_FIND_DATA lpFindFileData // 발견된 파일이나 디렉터리 정보를 담을
); // WIN32_FIND_DATA 구조체 변수주소
2. BOOL FindNextFile(
HANDLE hFindFile, // FindFirstFile 함수 호출을 통해 얻은 핸들을 전달
LPWIN32_FIND_DATA lpFindFileData // 발견된 파일이나 디렉터리 정보를 담을
); // WIN32_FIND_DATA 구조체 변수주소
3. BOOL FindClose(
HANDLE hFindFile // FIndFirstFile 함수를 통해 얻은 핸들 반환
);
FindFirstFile 함수 호출을 통해서 생성되는 커널 오브젝트가 담고 있는 정보는 검색된 첫번째 디렉터리(파일)이다.
이어서 FindNextFile 함수를 호출하면 다음에 검색되는 디렉터리에 대한 정보가 채워진다.
(또 검색될 디렉터리가 있다면 FindNextFile 함수를 또 호출한다)
커널 오브젝트가 생성되었기에 FindClose 함수로 리소스를 반환해야 한다.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttritubes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND+DATA; )
'Windows > _System Programming' 카테고리의 다른 글
라이브러리(Library) (0) | 2010.03.11 |
---|---|
비동기 I/O 와 APC (0) | 2010.03.08 |
파일 I/O (2) | 2010.03.08 |
가상 메모리(Virtual Memory) (0) | 2010.03.07 |
쓰레드(Thread) 동기화 예제 소스 (0) | 2010.03.06 |