Функция FsRtlRegisterUncProvider (ntifs.h)

Подпрограмма FsRtlRegisterUncProvider регистрирует перенаправитель сети в качестве поставщика универсального соглашения об именовании (UNC) с системным поставщиком нескольких UNC (MUP).

Синтаксис

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

Параметры

[out] MupHandle

Указатель на расположение, в котором возвращается дескриптор MUP, используемый при вызове FsRtlRegisterUncProvider для отмены регистрации перенаправителя сети. Возвращенный дескриптор действителен, только если FsRtlRegisterUncProvider возвращает STATUS_SUCCESS.

RedirectorDeviceName

Указатель на строку Юникода, содержащую имя устройства сетевого перенаправителя.

[in] MailslotsSupported

Установите значение TRUE , если перенаправитель сети поддерживает почтовые слои. Этот параметр обычно зарезервирован для использования перенаправлением Microsoft SMB.

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

FsRtlRegisterUncProvider возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_ACCESS_DENIED
Режим выполнения исходного инициатора запроса для операции IRP, отправляемой в MUP, был не из режима ядра.
STATUS_ACCESS_VIOLATION
При попытке доступа к устройству MUP произошло нарушение доступа.
STATUS_DATATYPE_MISALIGNMENT
Произошло несоответствие данных.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно ресурсов для выделения памяти для буферов.
STATUS_INVALID_HANDLE
Недопустимый параметр был передан В MUP в IRP.
STATUS_INVALID_USER_BUFFER
В параметре RedirDevName был передан недопустимый параметр или произошло ненормальное завершение.

Комментарии

Перенаправитель сети должен зарегистрироваться в MUP для обработки UNC-имен. MUP — это компонент режима ядра, отвечающий за передачу всех удаленных обращений к файловой системе с помощью имени UNC в сетевой перенаправитель (поставщик UNC), способный обрабатывать запросы удаленной файловой системы. MUP используется, когда приложение использует UNC-путь, как показано в следующем примере, который может быть выполнен из командной строки:

notepad \\server\public\readme.txt

MUP не используется во время операции, создающей сопоставленную букву диска (например, команда NET USE). Эта операция обрабатывается маршрутизатором с несколькими поставщиками (MPR) и библиотекой DLL поставщика WNet в пользовательском режиме для перенаправителя сети. Однако библиотека DLL поставщика WNet в пользовательском режиме может напрямую взаимодействовать с драйвером перенаправления сети в режиме ядра во время этой операции.

В 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 требуют перезагрузки, чтобы входить в силу MUP в Windows Server 2003, Windows XP и Windows 2000.

Только один поставщик сети в системе может поддерживать почтовые ящики. Поэтому параметру MailslotsSupported обычно присваивается значение TRUE только для перенаправителя Microsoft SMB.

Драйвер, вызывающий IoCreateDevice для создания объекта устройства для перенаправителя сети, который регистрируется в качестве поставщика UNC (драйвер, вызывающий FsRtlRegisterUncProvider), должен передавать FILE_REMOTE_DEVICE в качестве одного из параметров параметра DeviceCharacteristics , передаваемого в IoCreateDevice.

Чтобы отменить регистрацию поставщика UNC, используйте FsRtlDeregisterUncProvider и передайте параметр MupHandle .

Если драйвер регистрируется как локальная дисковая файловая система (например, вызывает IoCreateDevice с параметром DeviceType , равным FILE_DEVICE_DISK_FILE_SYSTEM а не FILE_NETWORK_FILE_SYSTEM), драйвер не должен вызывать FsRtlRegisterUncProvider для регистрации в качестве поставщика UNC с помощью MUP.

Дополнительные сведения см. в следующих разделах руководства по проектированию:

Поддержка именования UNC и MUP

Изменения MUP в Microsoft Windows Vista

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice