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


функция обратного вызова PRJ_NOTIFICATION_CB (projectedfslib.h)

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

Синтаксис

PRJ_NOTIFICATION_CB PrjNotificationCb;

HRESULT PrjNotificationCb(
  [in]           const PRJ_CALLBACK_DATA *callbackData,
  [in]           BOOLEAN isDirectory,
  [in]           PRJ_NOTIFICATION notification,
  [in, optional] PCWSTR destinationFileName,
  [in, out]      PRJ_NOTIFICATION_PARAMETERS *operationParameters
)
{...}

Параметры

[in] callbackData

Сведения об операции. Для реализации этого обратного вызова необходимы следующие члены callbackData :

FilePathName Определяет путь к файлу или каталогу, к которому относится уведомление.

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

[in] isDirectory

Значение TRUE, если поле FilePathName в callbackData ссылается на каталог, в противном случае — false.

[in] notification

Значение PRJ_NOTIFICATION , указывающее уведомление.

[in, optional] destinationFileName

Если уведомлениеPRJ_NOTIFICATION_PRE_RENAME или PRJ_NOTIFICATION_PRE_SET_HARDLINK, это указывает на строку Юникода со значением NULL, указывающую путь относительно корня виртуализации целевого объекта операции переименования или установки жесткой связи.

[in, out] operationParameters

Указатель на PRJ_NOTIFICATION_PARAMETERS объединение, указывающее дополнительные параметры для определенных значений уведомления:

PRJ_NOTIFICATION_FILE_OPENED, PRJ_NOTIFICATION_NEW_FILE_CREATED или PRJ_NOTIFICATION_FILE_OVERWRITTEN

Указаны поля элемента PostCreate . В число этих полей входят следующие.

NotificationMask

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

Если поставщик задает для этого значения значение 0, это эквивалентно указанию PRJ_NOTIFY_USE_EXISTING_MASK.

PRJ_NOTIFICATION_FILE_RENAMED

Указаны поля элемента FileRenamed . В число этих полей входят следующие.

NotificationMask

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

Если поставщик задает для этого значения значение 0, это эквивалентно указанию PRJ_NOTIFY_USE_EXISTING_MASK.

PRJ_NOTIFICATION_FILE_HANDLE_CLOSED_FILE_DELETED

  • Указаны поля элемента FileDeletedOnHandleClose . В число этих полей входят следующие.

    NotificationMask

    Если поставщик зарегистрирован для PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_MODIFIED , а также PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_DELETED, это поле имеет значение TRUE, если файл был изменен до его удаления.

Возвращаемое значение

Код возврата Описание
S_OK
Поставщик успешно обработал уведомление.
HRESULT_FROM_WIN32(ERROR_IO_PENDING)
Поставщик хочет завершить операцию позже.
 

Соответствующий код ошибки HRESULT, если поставщик не выполняет операцию. Для уведомлений перед операцией (операции с именем PRE), если поставщик возвращает код сбоя, ProjFS завершится сбоем соответствующей операции с указанным кодом ошибки.

Комментарии

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

Поставщик регистрирует уведомления, которые он хочет получать при вызове PrjStartVirtualizing.

Требования

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