본문 바로가기

Windows/_System Programming

디렉터리 컨트롤

디렉터리의 생성과 소멸 :

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 함수로 리소스를 반환해야 한다.

(참고 : WIN32_FIND_DATA :

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