PRJ_NOTIFY_TYPES enumeração (projectedfslib.h)
Tipos de notificações que descrevem uma alteração no arquivo ou pasta.
Syntax
typedef enum PRJ_NOTIFY_TYPES {
PRJ_NOTIFY_NONE = 0x00000000,
PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS = 0x00000001,
PRJ_NOTIFY_FILE_OPENED = 0x00000002,
PRJ_NOTIFY_NEW_FILE_CREATED = 0x00000004,
PRJ_NOTIFY_FILE_OVERWRITTEN = 0x00000008,
PRJ_NOTIFY_PRE_DELETE = 0x00000010,
PRJ_NOTIFY_PRE_RENAME = 0x00000020,
PRJ_NOTIFY_PRE_SET_HARDLINK = 0x00000040,
PRJ_NOTIFY_FILE_RENAMED = 0x00000080,
PRJ_NOTIFY_HARDLINK_CREATED = 0x00000100,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_NO_MODIFICATION = 0x00000200,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_MODIFIED = 0x00000400,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_DELETED = 0x00000800,
PRJ_NOTIFY_FILE_PRE_CONVERT_TO_FULL = 0x00001000,
PRJ_NOTIFY_USE_EXISTING_MASK = 0xFFFFFFFF
} ;
Constantes
PRJ_NOTIFY_NONE Valor: 0x00000000 Nenhuma notificação. |
PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS Valor: 0x00000001 Se especificado no início da instância de virtualização: - Isso indica que as notificações não devem ser enviadas para a instância de virtualização ou uma subárvore especificada da instância. Se especificado em resposta a uma notificação: - Isso indica que as notificações não devem ser enviadas para o arquivo ou pasta especificado até que todos os identificadores para ele sejam fechados. Nota Se esse bit aparecer em uma máscara de notificação, ele substituirá todos os outros bits na máscara. Por exemplo, uma máscara válida com esse bit é tratada como contendo apenas PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS. |
PRJ_NOTIFY_FILE_OPENED Valor: 0x00000002 Se especificado no início da instância de virtualização: - Isso indica que o provedor deve ser notificado quando um identificador é criado para um arquivo ou pasta existente. Se especificado em resposta a uma notificação: - Isso indica que o provedor deve ser notificado se algum outro identificador for criado para o arquivo ou pasta. |
PRJ_NOTIFY_NEW_FILE_CREATED Valor: 0x00000004 Se especificado no início da instância de virtualização: – O provedor deve ser notificado quando um novo arquivo ou pasta é criado. Se especificado em resposta a uma notificação: - Sem efeito. |
PRJ_NOTIFY_FILE_OVERWRITTEN Valor: 0x00000008 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado quando um existente quando um arquivo existente é substituído ou substituído. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado quando o arquivo ou pasta é substituído ou substituído. |
PRJ_NOTIFY_PRE_DELETE Valor: 0x00000010 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado quando um arquivo ou pasta está prestes a ser excluído. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado quando um arquivo ou pasta está prestes a ser excluído. |
PRJ_NOTIFY_PRE_RENAME Valor: 0x00000020 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado quando um arquivo ou pasta está prestes a ser renomeado. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado quando um arquivo ou pasta está prestes a ser renomeado. |
PRJ_NOTIFY_PRE_SET_HARDLINK Valor: 0x00000040 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado quando um link rígido está prestes a ser criado para um arquivo. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado quando um link rígido está prestes a ser criado para um arquivo. |
PRJ_NOTIFY_FILE_RENAMED Valor: 0x00000080 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado de que um arquivo ou pasta foi renomeado. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado quando um arquivo ou pasta foi renomeado. |
PRJ_NOTIFY_HARDLINK_CREATED Valor: 0x00000100 Se especificado no início da instância de virtualização: - Indica que o provedor deve ser notificado de que um link rígido foi criado para um arquivo. Se especificado em resposta a uma notificação: - Indica que o provedor deve ser notificado de que um link rígido foi criado para o arquivo. |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_NO_MODIFICATION Valor: 0x00000200 Se especificado no início da instância de virtualização: – O provedor deve ser notificado quando um identificador é fechado em um arquivo/pasta e o identificador de fechamento não é modificado nem excluído. Se especificado em resposta a uma notificação: – O provedor deve ser notificado quando os identificadores são fechados para o arquivo/pasta e não houve modificações ou exclusões associadas ao identificador de fechamento. |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_MODIFIED Valor: 0x00000400 Se especificado no início da instância de virtualização: – O provedor deve ser notificado quando um identificador é fechado em um arquivo/pasta e o identificador de fechamento foi usado para modificá-lo. Se especificado em resposta a uma notificação: – O provedor deve ser notificado quando um identificador é fechado no arquivo/pasta e o identificador de fechamento foi usado para modificá-lo. |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_DELETED Valor: 0x00000800 Se especificado no início da instância de virtualização: – O provedor deve ser notificado quando um identificador é fechado em um arquivo/pasta e é excluído como parte do fechamento do identificador. Se especificado em resposta a uma notificação: – O provedor deve ser notificado quando um identificador é fechado no arquivo/pasta e é excluído como parte do fechamento do identificador. |
PRJ_NOTIFY_FILE_PRE_CONVERT_TO_FULL Valor: 0x00001000 Se especificado no início da instância de virtualização: – O provedor deve ser notificado quando estiver prestes a converter um espaço reservado em um arquivo completo. Se especificado em resposta a uma notificação: - O provedor deve ser notificado quando estiver prestes a converter o espaço reservado em um arquivo completo, supondo que ele seja um espaço reservado e ainda não seja um arquivo completo. |
PRJ_NOTIFY_USE_EXISTING_MASK Valor: 0xFFFFFFFF Se especificado no início da instância de virtualização: - Esse valor não é válido no início da instância de virtualização. Se especificado em resposta a uma notificação: – Continue a usar o conjunto de notificações existente para este arquivo/pasta. |
Comentários
O ProjFS pode enviar notificações de atividade do sistema de arquivos para um provedor. Quando o provedor inicia uma instância de virtualização, ele especifica quais notificações deseja receber. Ele também pode especificar um novo conjunto de notificações para um arquivo quando ele for criado ou renomeado. O provedor deve registrar um PRJ_NOTIFICATION_CB rotina de retorno de chamada de notificação no parâmetro de retornos de chamada de PrjStartVirtualizing para receber notificações.
O ProjFS envia notificações para arquivos e diretórios dentro de uma raiz de virtualização ativa. Ou seja, o ProjFS enviará notificações para a raiz de virtualização e seus descendentes. Links simbólicos e junções dentro da raiz de virtualização não são percorridos ao determinar o que constitui um descendente da raiz de virtualização.
O ProjFS envia notificações somente para o fluxo de dados primário de um arquivo. O ProjFS não envia notificações para operações em fluxos de dados alternativos.
O ProjFS não envia notificações para uma instância de virtualização inativa. Uma instância de virtualização estará inativa se qualquer uma das seguintes opções for verdadeira:
- O provedor ainda não o iniciou chamando PrjStartVirtualizing.
- O provedor interrompeu a instância chamando PrjStopVirtualizing.
- O processo do provedor foi encerrado
O provedor pode especificar quais notificações deseja receber ao iniciar uma instância de virtualização ou em resposta a uma notificação que permite que uma nova máscara de notificação seja definida.
O provedor especifica um conjunto padrão de notificações que deseja que o ProjFS envie para a instância de virtualização quando iniciar a instância. Esse conjunto de notificações é fornecido no membro NotificationMappings do parâmetro options de PrjStartVirtualizing, que pode especificar máscaras de notificação diferentes para diferentes subárvores da instância de virtualização.
O provedor pode optar por fornecer uma máscara de notificação diferente em resposta a uma notificação de arquivo aberto, criar, substituir/substituir ou renomear. O ProjFS continuará a enviar essas notificações para o arquivo fornecido até que todos os identificadores para o arquivo sejam fechados. Depois disso, ele reverter ao conjunto padrão de notificações. Naturalmente, se o conjunto padrão de notificações não especificar que o ProjFS deve notificar para abrir, criar etc., o provedor não terá a oportunidade de especificar uma máscara diferente para essas operações.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1809 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server [somente aplicativos da área de trabalho] |
Cabeçalho | projectedfslib.h |