응용 프로그램은 변경 알림을 사용하여 디렉터리 및 하위 디렉터리의 내용을 모니터링할 수 있습니다. 변경 알림을 기다리는 것은 디렉터리 및 필요한 경우 해당 하위 디렉터리에 대해 읽기 작업이 보류 중인 것과 유사합니다. 디렉터리 내에서 변경 사항이 있으면 읽기 작업이 완료됩니다. 예를 들어 응용 프로그램은 이러한 함수를 사용하여 모니터링되는 디렉터리 내의 파일 이름이 변경될 때마다 디렉터리 목록을 업데이트할 수 있습니다. 이 간단한 예제에서는 종료 및 정리를 위해 ExitProcess 함수를 사용하지만 보다 복잡한 응용 프로그램은 항상 적절한 경우 FindCloseChangeNotification와 같은 적절한 리소스 관리를 사용해야 합니다. ReadDirectory변경 스 접근법을 사용하여 생성기를 제공하는 작업 모듈의 경우 스레드 접근 방식의 예가 있는 watch_directory.py(응용 프로그램은 FindFirstChangeNotification() 함수입니다. 조건에는 파일 이름, 디렉터리 이름, 특성, 파일 크기, 마지막 쓰기 시간 및 보안에 대한 변경 사항이 포함됩니다. 이 함수는 wait 함수를 사용하여 기다릴 수 있는 핸들도 반환합니다. 대기 조건이 충족되면 FindNextChangeNotification()를 사용하여 후속 변경 내용을 기다리는 알림 핸들을 제공할 수 있습니다. 그러나 이러한 함수는 대기 조건을 충족한 실제 변경 사항을 나타내지 않습니다. FindCloseChangeNotification()를 사용하여 알림 핸들을 닫습니다. 알림의 일부로 특정 변경 사항에 대한 정보를 검색하려면 ReadDirectoryChangesW() 함수를 사용합니다.
이 기능을 사용하면 완료 루틴을 제공할 수도 있습니다. 다음 예제에서는 디렉터리 이름 변경 내용을 디렉터리 트리를 모니터링합니다. 또한 파일 이름 변경에 대 한 디렉터리모니터링 합니다. 이 예제에서는 FindFirstChangeNotification() 함수를 사용하여 두 개의 알림 핸들과 WaitForMultipleObjects() 함수를 만들어 핸들을 기다립니다. 트리에서 디렉터리를 만들거나 삭제할 때마다 예제에서는 전체 디렉터리 트리를 업데이트해야 합니다. 디렉터리에서 파일을 만들거나 삭제할 때마다 예제에서 디렉터리를 새로 고쳐야 합니다. 이 간단한 예제에서는 종료 및 정리를 위해 ExitProcess() 함수를 사용하지만 보다 복잡한 응용 프로그램은 항상 적절한 경우 FindCloseChangeNotification()와 같은 적절한 리소스 관리를 사용해야 합니다. 프로젝트를 빌드합니다.
C 드라이브의 폴더에 여러 개의 빈 텍스트 또는 기타 파일을 만듭니다. 예를 들어,이 경우 C: 아래와 같이 두 개의 파일이 만들어졌습니다. 다음 예제에서는 디렉터리 이름 변경 내용을 디렉터리 트리를 모니터링합니다. 또한 파일 이름 변경에 대 한 디렉터리모니터링 합니다. 이 예제에서는 FindFirstChangeNotification 함수를 사용하여 두 개의 알림 핸들과 WaitForMultipleObjects 함수를 만들어 핸들을 기다립니다. 트리에서 디렉터리를 만들거나 삭제할 때마다 예제에서는 전체 디렉터리 트리를 업데이트해야 합니다. 디렉터리에서 파일을 만들거나 삭제할 때마다 예제에서 디렉터리를 새로 고쳐야 합니다. 감시된 디렉터리 또는 하위 트리의 파일 크기 가 변경되면 변경 알림 대기 작업이 반환됩니다. 운영 체제는 파일이 디스크에 기록된 경우에만 파일 크기 변경을 감지합니다. 광범위한 캐싱을 사용하는 운영 체제의 경우 캐시가 충분히 플러시된 경우에만 검색이 수행됩니다. 경로 이름을 구성요소로 나눕니다. 다음은 _splitpath() 버전입니다.