Compartilhar via


Função FindFirstChangeNotificationW (fileapi.h)

Cria um identificador de notificação de alteração e configura as condições iniciais de filtro de notificação de alteração. Uma espera em um identificador de notificação é bem-sucedida quando uma alteração que corresponde às condições de filtro ocorre no diretório ou subárvore especificado. A função não relata alterações no próprio diretório especificado.

Essa função não indica a alteração que satisfize a condição de espera. Para recuperar informações sobre a alteração específica como parte da notificação, use o
função ReadDirectoryChangesW.

Sintaxe

HANDLE FindFirstChangeNotificationW(
  [in] LPCWSTR lpPathName,
  [in] BOOL    bWatchSubtree,
  [in] DWORD   dwNotifyFilter
);

Parâmetros

[in] lpPathName

O caminho completo do diretório a ser observado.

Não pode ser um caminho relativo ou uma cadeia de caracteres vazia.

Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.

Ponta

A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.

[in] bWatchSubtree

Se esse parâmetro for VERDADEIRO, a função monitorará a árvore de diretório com raiz no diretório especificado; se for FALSE, ele monitorará apenas o diretório especificado.

[in] dwNotifyFilter

As condições de filtro que atendem a uma espera de notificação de alteração. Esse parâmetro pode ser um ou mais dos valores a seguir.

Valor Significado
FILE_NOTIFY_CHANGE_FILE_NAME
0x00000001
Qualquer alteração de nome de arquivo no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração seja retornada. As alterações incluem renomear, criar ou excluir um nome de arquivo.
FILE_NOTIFY_CHANGE_DIR_NAME
0x00000002
Qualquer alteração de nome de diretório no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração retorne. As alterações incluem a criação ou exclusão de um diretório.
FILE_NOTIFY_CHANGE_ATTRIBUTES
0x00000004
Qualquer alteração de atributo no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração retorne.
FILE_NOTIFY_CHANGE_SIZE
0x00000008
Qualquer alteração de tamanho de arquivo no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração retorne. O sistema operacional detecta uma alteração no tamanho do arquivo somente quando o arquivo é gravado no disco. Para sistemas operacionais que usam cache extensivo, a detecção ocorre somente quando o cache é liberado o suficiente.
FILE_NOTIFY_CHANGE_LAST_WRITE
0x00000010
Qualquer alteração no último tempo de gravação de arquivos no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração seja retornada. O sistema operacional detecta uma alteração no último tempo de gravação somente quando o arquivo é gravado no disco. Para sistemas operacionais que usam cache extensivo, a detecção ocorre somente quando o cache é liberado o suficiente.
FILE_NOTIFY_CHANGE_SECURITY
0x00000100
Qualquer alteração de descritor de segurança no diretório ou subárvore observado faz com que uma operação de espera de notificação de alteração retorne.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será um identificador para um objeto de notificação de alteração de localização.

Se a função falhar, o valor retornado será INVALID_HANDLE_VALUE. Para obter informações de erro estendidas, chame GetLastError.

Observações

As funções de espera podem monitorar o diretório ou subárvore especificado usando o identificador retornado pela função FindFirstChangeNotification. Uma espera é atendida quando uma das condições de filtro ocorre no diretório ou subárvore monitorado.

Depois que a espera for atendida, o aplicativo poderá responder a essa condição e continuar monitorando o diretório chamando a função FindNextChangeNotification e a função de espera apropriada. Quando o identificador não é mais necessário, ele pode ser fechado usando a função FindCloseChangeNotification.

As notificações podem não ser retornadas ao chamar FindFirstChangeNotification para um sistema de arquivos remoto.

Comportamento simbólico do link – se o caminho apontar para um link simbólico, o identificador de notificação será criado para o destino.

Se um aplicativo tiver se registrado para receber notificações de alteração para um diretório que contenha links simbólicos, o aplicativo só será notificado quando os links simbólicos forem alterados, não os arquivos de destino.

No Windows 8 e no Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Suportado
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 Sim
TFO (Failover Transparente) do SMB 3.0 Sim
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) Sim
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) Consulte a observação
ReFS (Sistema de Arquivos Resiliente) Sim
 

O aplicativo pode experimentar falsos positivos na pausa/retomada de CsvFs.

Exemplos

Para obter um exemplo, consulte Obtendo Change_Notificationsde Diretório.

Nota

O cabeçalho fileapi.h define FindFirstChangeNotification como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho fileapi.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

Funções de gerenciamento de diretório

FindCloseChangeNotification

FindNextChangeNotification

ReadDirectoryChangesW