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

如果 callbackData 中的 FilePathName 字段引用目录,则为 TRUE,否则为 FALSE。

[in] notification

指定通知 的PRJ_NOTIFICATION 值。

[in, optional] destinationFileName

如果通知PRJ_NOTIFICATION_PRE_RENAMEPRJ_NOTIFICATION_PRE_SET_HARDLINK,则它指向以 null 结尾的 Unicode 字符串,该字符串指定重命名或 set-hardlink 操作的目标相对于虚拟化根路径。

[in, out] operationParameters

指向 PRJ_NOTIFICATION_PARAMETERS 联合的指针,指定 某些通知值的额外参数:

PRJ_NOTIFICATION_FILE_OPENEDPRJ_NOTIFICATION_NEW_FILE_CREATEDPRJ_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
标头 projectedfslib.h