FindFirstChangeNotification

FindFirstChangeNotification創建一個改變通知對象,設定初始的改變通知過濾條件。在指定的目錄或子目錄下,當一個符合過濾條件的改變發生時,一個在通知句柄上的等待將會成功(等待函式返回)。

基本介紹

  • 中文名:FindFirstChangeNotification
  • 外文名:無
  • 目的:監視指定目錄中的變化
  • 學科:計算機
概述,特點,

概述

要監視指定目錄中的變化可以使用FindFirstChangeNotification 函式。此函式創建一個改變通知對象,設定初始的改變通知過濾條件。在指定的目錄或子目錄下,當一個符合過濾條件的改變發生時,一個在通知句柄上的等待將會成功(等待函式返回)。函式原型如下:
HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName, // 指定要監視的目錄
BOOL bWatchSubtree, // 指定是否監視lpPathName 目錄下的所有子目錄
DWORD dwNotifyFilter // 指定過濾條件
dwNotifyFilter 參數指定了能夠滿足改變通知等待(即能夠使等待函式返回)的過濾條件,
可以是以下值的組合:
FILE_NOTIFY_CHANGE_FILE_NAME 要求監視檔案名稱稱的改變
FILE_NOTIFY_CHANGE_DIR_NAME 要求監視目錄名稱的改變
FILE_NOTIFY_CHANGE_ATTRIBUTES 要求監視屬性的改變
FILE_NOTIFY_CHANGE_SIZE 要求監視檔案大小的改變
FILE_NOTIFY_CHANGE_LAST_WRITE 要求監視最後寫入時間的改變
FILE_NOTIFY_CHANGE_SECURITY 要求監視安全屬性的改變
函式執行成功返回值是改變通知對象句柄,INVALID_HANDLE_VALUE 是失敗後的返回值。返回的句柄可傳遞給等待函式(如WaitForSingleObject 等)。當監視的目錄或子目錄中一個過濾條件滿足的時候,等待就會返回。
等待函式返回之後,應用程式可以處理這個改變,並調用FindNextChangeNotification 函式繼續監視目錄。當不再使用這個句柄時,應當調用FindCloseChangeNotification 函式關閉它。

特點

以下是一個利用上述API函式實現基本的監控程式的例子:(VC6.0編譯運行通過)
#include<windows.h>
#include<stdio.h>
#include<conio.h>
void main
//監視C糟根目錄下檔案名稱改變的例子,其中while循環一直監控,直到程式關閉
HANDLE hChangeHandle=FindFirstChangeNotification("C:\\",false,FILE_NOTIFY_CHANGE_FILE_NAME);
//判斷是否設定成功
if(hChangeHandle==INVALID_HANDLE_VALUE){
printf("Find First Change Notification failed\n");
return ;
//等待通知
printf("These change a file name\n");
//循環等待
while(true)
if(FindNextChangeNotification(hChangeHandle)){
printf("These change a file name\n");
//結束監視程式調用FindCloseChangeNotification關閉句柄
FindCloseChangeNotification(hChangeHandle);
getch(); //按鍵退出程式}

相關詞條

熱門詞條

聯絡我們