Поделиться через


перечисление PRJ_NOTIFY_TYPES (projectedfslib.h)

Типы уведомлений, описывающие изменение файла или папки.

Синтаксис

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
} ;

Константы

 
PRJ_NOTIFY_NONE
Значение: 0x00000000
Без уведомлений.
PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS
Значение: 0x00000001
Если указано при запуске экземпляра виртуализации:

— Это означает, что уведомления не должны отправляться для экземпляра виртуализации или указанного поддеревого экземпляра.

Если указано в ответ на уведомление:

— Это означает, что уведомления не должны отправляться для указанного файла или папки, пока не будут закрыты все дескрипторы.

Примечание Если этот бит отображается в маске уведомления, он переопределяет все остальные биты в маске. Например, допустимая маска с этим битом рассматривается как содержащая только PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS.

 
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
Если указано при запуске экземпляра виртуализации:

— Это значение недопустимо при запуске экземпляра виртуализации.

Если указано в ответ на уведомление:

— Продолжайте использовать существующий набор уведомлений для этого файла или папки.

Комментарии

ProjFS может отправлять уведомления о действиях файловой системы поставщику. Когда поставщик запускает экземпляр виртуализации, он указывает, какие уведомления он хочет получать. Он также может указывать новый набор уведомлений для файла при его создании или переименовании. Поставщик должен зарегистрировать подпрограмму обратного вызова уведомления PRJ_NOTIFICATION_CB в параметре callbacks prjStartVirtualizing, чтобы получать уведомления.

ProjFS отправляет уведомления для файлов и каталогов в активном корневом каталоге виртуализации. То есть ProjFS будет отправлять уведомления для корневого каталога виртуализации и его потомков. Символические связи и соединения в корне виртуализации не проходят при определении того, что представляет собой потомок корня виртуализации.

ProjFS отправляет уведомления только для основного потока данных файла. ProjFS не отправляет уведомления об операциях с альтернативными потоками данных.

ProjFS не отправляет уведомления для неактивного экземпляра виртуализации. Экземпляр виртуализации неактивен, если выполняется одно из следующих действий:

  • Поставщик еще не запустил его, вызвав PrjStartVirtualizing.
  • Поставщик остановил экземпляр, вызвав PrjStopVirtualizing.
  • Процесс поставщика завершился

Поставщик может указать, какие уведомления он должен получать при запуске экземпляра виртуализации или в ответ на уведомление, которое позволяет задать новую маску уведомления.

Поставщик указывает набор уведомлений по умолчанию, которые ProjFS будет отправлять для экземпляра виртуализации при запуске экземпляра. Этот набор уведомлений предоставляется в элементе NotificationMappings параметра options prjStartVirtualizing, который может указывать разные маски уведомлений для разных поддеревьев экземпляра виртуализации.

Поставщик может предоставить другую маску уведомления в ответ на уведомление об открытии, создании, замене, перезаписи или переименовании файла. ProjFS будет продолжать отправлять эти уведомления для заданного файла, пока все дескрипторы файла не будут закрыты. После этого он будет отменить изменения в набор уведомлений по умолчанию. Естественно, если набор уведомлений по умолчанию не указывает, что ProjFS должен уведомлять об открытии, создании и т. д., поставщик не получит возможность указать другую маску для этих операций.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809 [только классические приложения]
Минимальная версия сервера Windows Server [только классические приложения]
Верхняя часть projectedfslib.h