Функция FsRtlRegisterUncProviderEx (ntifs.h)
Подпрограмма FsRtlRegisterUncProviderEx регистрирует перенаправитель сети в качестве поставщика универсального соглашения об именовании (UNC) с системным поставщиком MUP.
Синтаксис
NTSTATUS FsRtlRegisterUncProviderEx(
[out] PHANDLE MupHandle,
[in] PCUNICODE_STRING RedirDevName,
[in] PDEVICE_OBJECT DeviceObject,
[in] FSRTL_UNC_PROVIDER_FLAGS Flags
);
Параметры
[out] MupHandle
Указатель на расположение, в котором возвращается дескриптор MUP, используемый при вызове FsRtlDeregisterUncProvider для отмены регистрации сетевого перенаправителя. Возвращенный дескриптор действителен, только если FsRtlRegisterUncProviderEx возвращает STATUS_SUCCESS.
[in] RedirDevName
Указатель на строку Юникода, содержащую имя устройства сетевого перенаправителя. MUP использует это имя устройства для создания символьной ссылки в пространстве имен диспетчера объектов, целевом объекте которого является \Device\Mup.
[in] DeviceObject
Указатель на неименованный объект устройства, представляющий сетевой перенаправитель.
[in] Flags
Битовая маска, указывающая функции, поддерживаемые сетевым перенаправителем. Сетевой перенаправитель задает бит, указывающий, что функция поддерживается. Параметр Flags имеет два параметра:
FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED
Сетевой перенаправитель поддерживает mailslots. Этот параметр обычно зарезервирован для использования перенаправлением Microsoft SMB.
FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED
Перенаправитель сети поддерживает автономный доступ с помощью кэширования на стороне клиента.
Возвращаемое значение
FsRtlRegisterUncProviderEx возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Режим инициатора запроса для IRP, отправляемого в MUP, был не из режима ядра. |
|
При попытке доступа к устройству MUP произошло нарушение доступа. |
|
Произошло несоответствие данных. |
|
Недостаточно ресурсов для выделения памяти для буферов. |
|
Был сделан запрос на регистрацию известного поставщика, который уже был зарегистрирован. |
|
Недопустимый параметр RedirDevName , так как длина RedirDevName равна нулю. |
|
Обнаружено несоответствие типа объекта с параметром DeviceObject . |
Комментарии
Перенаправитель сети должен зарегистрироваться в нескольких поставщиках UNC (MUP) для обработки имен UNC. MUP — это компонент режима ядра, отвечающий за передачу всех удаленных обращений к файловой системе с помощью имени UNC в сетевой перенаправитель (поставщик UNC), способный обрабатывать запросы удаленной файловой системы. MUP используется, когда приложение использует UNC-путь, как показано в следующем примере, который может быть выполнен из командной строки:
notepad \\server\public\readme.txt
MUP не используется во время операции, создающей сопоставленную букву диска (например, команда NET USE). Эта операция обрабатывается маршрутизатором с несколькими поставщиками (MPR) и библиотекой DLL поставщика WNet в пользовательском режиме для перенаправителя сети. Однако библиотека DLL поставщика WNet в пользовательском режиме может напрямую взаимодействовать с драйвером перенаправления сети в режиме ядра во время этой операции.
Для сетевых перенаправителей, соответствующих модели перенаправителя Windows Vista, используется MUP, даже если используется сопоставленный сетевой диск. Операции с файлами, выполняемые на сопоставленном диске, проходят через MUP к сетевому перенаправлению. Обратите внимание, что в этом случае MUP просто передает операцию сетевому перенаправителю.
FsRtlRegisterUncProviderEx отправляет элемент управления частной файловой системы (FSCTL) в MUP для выполнения регистрации.
Имя устройства, указанное в параметре RedirDevName при вызове FsRtlRegisterUncProviderEx , становится символьной ссылкой на \device\Mup в пространстве имен диспетчера объектов. Кроме того, открытый запрос с именем устройства RedirDevName перенаправляет себя к фактическому объекту устройства перенаправителя сети, на который указывает параметр DeviceObject .
Сетевые перенаправители, вызывающие FsRtlRegisterUncProviderEx , не должны регистрироваться как файловая система (перенаправители сети не должны вызывать IoRegisterFileSystem). Сетевые мини-перенаправления, использующие RDBSS Windows Vista (динамическую или статическую компоновку), не будут зарегистрированы в качестве файловой системы.
Объекты файлов в стеке удаленной файловой системы, принадлежащие сетевому перенаправлению, который соответствует модели перенаправителя Windows Vista, разрешаются в MUP. Таким образом , IoGetDeviceAttachmentBaseRef возвращает объект устройства для MUP, а не сетевой перенаправитель, которому принадлежит объект файла. Однако содержимое объекта файла по-прежнему принадлежит сетевому перенаправлению.
Значение реестра ProviderOrder определяет порядок, в котором MUP выдает запросы на разрешение префиксов отдельным сетевым перенаправителям. Этот порядок можно изменять динамически без перезагрузки. Это значение реестра находится в следующем разделе реестра:
HKLM\CurrentControlSet\Control\NetworkProvider\Order
Только один поставщик сети в системе может поддерживать почтовые ящики. Поэтому параметр FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED в параметре Flags обычно устанавливается только для перенаправителя Microsoft SMB.
Чтобы отменить регистрацию поставщика UNC, используйте FsRtlDeregisterUncProvider и передайте параметр MupHandle .
Если драйвер регистрируется как локальная дисковая файловая система (путем вызова IoCreateDevice с параметром DeviceType , равным FILE_DEVICE_DISK_FILE_SYSTEM), драйвер не должен вызывать FsRtlRegisterUncProviderEx для регистрации в качестве поставщика UNC в MUP.
Дополнительные сведения см. в следующих разделах руководства по проектированию:
Поддержка именования UNC и MUP
Изменения MUP в Microsoft Windows Vista
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по