FsRtlRegisterUncProvider 函数 (ntifs.h)

FsRtlRegisterUncProvider 例程将网络重定向程序注册为通用命名约定, (UNC) 提供程序与系统多个 UNC 提供程序 (MUP) 。

语法

NTSTATUS FsRtlRegisterUncProvider(
  [out] PHANDLE          MupHandle,
        PCUNICODE_STRING RedirectorDeviceName,
  [in]  BOOLEAN          MailslotsSupported
);

参数

[out] MupHandle

指向在调用 FsRtlRegisterUncProvider 以取消注册网络重定向程序时要使用的 MUP 句柄的位置的指针。 仅当 FsRtlRegisterUncProvider 返回STATUS_SUCCESS时,返回的句柄才有效。

RedirectorDeviceName

指向 Unicode 字符串的指针,该字符串包含网络重定向程序的设备名称。

[in] MailslotsSupported

如果网络重定向程序支持 mailslot,则设置为 TRUE 。 此选项通常保留供 Microsoft SMB 重定向程序使用。

返回值

FsRtlRegisterUncProvider 在成功或适当的 NTSTATUS 值(如以下值之一)时返回STATUS_SUCCESS:

返回代码 说明
STATUS_ACCESS_DENIED
发送到 MUP 的 IRP 操作的原始请求者的执行模式不是来自内核模式。
STATUS_ACCESS_VIOLATION
尝试访问 MUP 设备时发生访问冲突。
STATUS_DATATYPE_MISALIGNMENT
数据不一致。
STATUS_INSUFFICIENT_RESOURCES
可用资源不足,无法为缓冲区分配内存。
STATUS_INVALID_HANDLE
在 IRP 中将无效参数传递给 MUP。
STATUS_INVALID_USER_BUFFER
在 RedirDevName 参数中传递了无效参数或发生了异常终止。

注解

网络重定向程序必须向 MUP 注册才能处理 UNC 名称。 MUP 是一个内核模式组件,负责使用通用命名约定 (UNC) 名称将所有远程文件系统访问通道到网络重定向程序, (能够处理远程文件系统请求的 UNC 提供程序) 。 应用程序使用 UNC 路径时涉及 MUP,如以下示例所示,该示例可从命令行执行:

notepad \\server\public\readme.txt

在 (“NET USE”命令(例如,) )创建映射驱动器号的操作期间,不涉及 MUP。 此操作由多提供程序路由器 (MPR) 和网络重定向程序的用户模式 WNet 提供程序 DLL 处理。 但是,在此操作期间,用户模式 WNet 提供程序 DLL 可以直接与内核模式网络重定向程序驱动程序通信。

在 Windows Server 2003、Windows XP 和 Windows 2000 上,在映射的驱动器上执行的远程文件操作不表示分布式文件系统 (DFS) 驱动器不会通过 MUP。 这些操作直接转到处理驱动器号映射的网络提供商。

对于符合 Windows Vistaredirector 模型的网络重定向程序,即使使用映射的网络驱动器,也会涉及 MUP。 在映射的驱动器上执行的文件操作通过 MUP 转到网络重定向程序。 请注意,在这种情况下,MUP 只是将操作传递给所涉及的网络重定向程序。

符合 Windows Vista 重定向程序模型的网络重定向程序应使用 FsRtlRegisterUncProviderEx,而不是 FsRtlRegisterUncProvider

FsRtlRegisterUncProvider 将专用文件系统控件 (FSCTL) 发送到 MUP 以执行注册。

ProviderOrder 注册表值确定 MUP 向单个网络重定向程序发出前缀解析请求的顺序。 此注册表值位于以下注册表项下:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

对 ProviderOrder 注册表值的更改需要重新启动才能在 Windows Server 2003、Windows XP 和 Windows 2000 上的 MUP 中生效。

系统上只有一个网络提供商可以支持 mailslot。 因此,对于 Microsoft SMB 重定向程序, MailslotsSupported 参数通常仅设置为 TRUE

调用 IoCreateDevice 的驱动程序为注册为 UNC 提供程序的网络重定向程序创建设备对象 (调用 FsRtlRegisterUncProvider) 的驱动程序必须将FILE_REMOTE_DEVICE作为传递给 IoCreateDevice的 DeviceCharacteristics 参数中的选项之一传递。

若要取消注册 UNC 提供程序,请使用 FsRtlDeregisterUncProvider 并传递 MupHandle 参数。

如果驱动程序注册为本地磁盘文件系统 (调用 IoCreateDeviceDeviceType 参数设置为 FILE_DEVICE_DISK_FILE_SYSTEM 而不是FILE_NETWORK_FILE_SYSTEM(例如) ),则驱动程序不得调用 FsRtlRegisterUncProvider 以使用 MUP 注册为 UNC 提供程序。

有关详细信息,请参阅设计指南中的以下部分:

支持 UNC 命名和 MUP

Microsoft Windows Vista 中的 MUP 更改

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice