Функция 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, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Режим выполнения исходного инициатора запроса для операции IRP, отправляемой в MUP, был не из режима ядра. |
|
При попытке доступа к устройству MUP произошло нарушение доступа. |
|
Произошло несоответствие данных. |
|
Недостаточно ресурсов для выделения памяти для буферов. |
|
Недопустимый параметр был передан В MUP в IRP. |
|
В параметре 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) |